]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
dm cache: only use overwrite optimisation for promotion when in writeback mode
authorJoe Thornber <ejt@redhat.com>
Thu, 27 Nov 2014 12:21:08 +0000 (12:21 +0000)
committerLuis Henriques <luis.henriques@canonical.com>
Mon, 12 Jan 2015 15:44:06 +0000 (15:44 +0000)
commit f29a3147e251d7ae20d3194ff67f109d71e501b4 upstream.

Overwrite causes the cache block and origin blocks to diverge, which
is only allowed in writeback mode.

Signed-off-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
drivers/md/dm-cache-target.c

index c892e48655c2f052374b38adebacc895729e9496..e5bb12810cccd78f517332c63267479fd5e34cde 100644 (file)
@@ -1043,7 +1043,8 @@ static void issue_copy(struct dm_cache_migration *mg)
 
                avoid = is_discarded_oblock(cache, mg->new_oblock);
 
-               if (!avoid && bio_writes_complete_block(cache, bio)) {
+               if (writeback_mode(&cache->features) &&
+                   !avoid && bio_writes_complete_block(cache, bio)) {
                        issue_overwrite(mg, bio);
                        return;
                }