summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Thornber <ejt@redhat.com>2013-03-20 17:21:27 (GMT)
committerAlasdair G Kergon <agk@redhat.com>2013-03-20 17:21:27 (GMT)
commit79ed9caffc9fff67aa64fd683e791aa70f1bcb51 (patch)
treedf0d78e16753fa399ce72a2fe0d28cb107ed3d98
parentb978440b8db901aba0c4cd38c7c841c9b5cd9a7e (diff)
downloadlinux-79ed9caffc9fff67aa64fd683e791aa70f1bcb51.tar.xz
dm cache: metadata clear dirty bits on clean shutdown
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>
-rw-r--r--drivers/md/dm-cache-metadata.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/md/dm-cache-metadata.c b/drivers/md/dm-cache-metadata.c
index fbd3625..1bb9180 100644
--- a/drivers/md/dm-cache-metadata.c
+++ b/drivers/md/dm-cache-metadata.c
@@ -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),