diff options
author | Josh Boyer <jwboyer@fedoraproject.org> | 2014-12-18 10:06:55 -0500 |
---|---|---|
committer | Josh Boyer <jwboyer@fedoraproject.org> | 2014-12-18 11:30:04 -0500 |
commit | e7d4b21c96bbb54a882e7141827d78d64209be8f (patch) | |
tree | 8baadd75f2efa28eef633d1692a35c8df15783b1 /dm-cache-only-use-overwrite-optimisation-for-promoti.patch | |
parent | 8d48d44bc0ba7ab6b4057800dd47e5d4e59c995e (diff) | |
download | kernel-e7d4b21c96bbb54a882e7141827d78d64209be8f.tar.gz kernel-e7d4b21c96bbb54a882e7141827d78d64209be8f.tar.xz kernel-e7d4b21c96bbb54a882e7141827d78d64209be8f.zip |
Fix dm-cache crash (rhbz 1168434)
Diffstat (limited to 'dm-cache-only-use-overwrite-optimisation-for-promoti.patch')
-rw-r--r-- | dm-cache-only-use-overwrite-optimisation-for-promoti.patch | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/dm-cache-only-use-overwrite-optimisation-for-promoti.patch b/dm-cache-only-use-overwrite-optimisation-for-promoti.patch new file mode 100644 index 000000000..12a79113d --- /dev/null +++ b/dm-cache-only-use-overwrite-optimisation-for-promoti.patch @@ -0,0 +1,32 @@ +From: Joe Thornber <ejt@redhat.com> +Date: Thu, 27 Nov 2014 12:21:08 +0000 +Subject: [PATCH] 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 +--- + drivers/md/dm-cache-target.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/md/dm-cache-target.c b/drivers/md/dm-cache-target.c +index 7130505c2425..6f7086355691 100644 +--- a/drivers/md/dm-cache-target.c ++++ b/drivers/md/dm-cache-target.c +@@ -1070,7 +1070,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; + } +-- +2.1.0 + |