dm cache: metadata clear dirty bits on clean shutdown
authorJoe Thornber <ejt@redhat.com>
Wed, 20 Mar 2013 17:21:27 +0000 (17:21 +0000)
committerAlasdair G Kergon <agk@redhat.com>
Wed, 20 Mar 2013 17:21:27 +0000 (17:21 +0000)
When writing the dirty bitset to the metadata device on a clean
shutdown, clear the dirty bits.  Previously they were left indicating
the cache was dirty. This led to confusion about whether there really
was dirty data in the cache or not.  (This was a harmless bug.)

Reported-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
drivers/md/dm-cache-metadata.c

index fbd3625f27480f2611d81eed181d13f11b3ab7a1..1bb91802b22a1a0993232fc9a4298f259ab29551 100644 (file)
@@ -979,7 +979,7 @@ static int __dirty(struct dm_cache_metadata *cmd, dm_cblock_t cblock, bool dirty
                /* nothing to be done */
                return 0;
 
-       value = pack_value(oblock, flags | (dirty ? M_DIRTY : 0));
+       value = pack_value(oblock, (flags & ~M_DIRTY) | (dirty ? M_DIRTY : 0));
        __dm_bless_for_disk(&value);
 
        r = dm_array_set_value(&cmd->info, cmd->root, from_cblock(cblock),