diff options
author | Joe Thornber <ejt@redhat.com> | 2014-11-27 15:21:08 +0300 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2014-12-01 19:30:12 +0300 |
commit | f29a3147e251d7ae20d3194ff67f109d71e501b4 (patch) | |
tree | 21867997b4b5be3b677e0265adbfd33d3a6ef4ad /drivers/md | |
parent | 2bb812df63bbd246bd39d10f2e810b2a0a59e99e (diff) | |
download | linux-f29a3147e251d7ae20d3194ff67f109d71e501b4.tar.xz |
dm cache: only use overwrite optimisation for promotion when in writeback mode
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>
Cc: stable@vger.kernel.org
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/dm-cache-target.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/md/dm-cache-target.c b/drivers/md/dm-cache-target.c index fd7f61387283..ef842feda101 100644 --- a/drivers/md/dm-cache-target.c +++ b/drivers/md/dm-cache-target.c @@ -1142,7 +1142,8 @@ static void issue_copy_or_discard(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; } |