| From f1daa838e861ae1a0fb7cd9721a21258430fcc8c Mon Sep 17 00:00:00 2001 |
| From: Heinz Mauelshagen <heinzm@redhat.com> |
| Date: Fri, 23 May 2014 14:10:01 -0400 |
| Subject: dm cache: always split discards on cache block boundaries |
| |
| From: Heinz Mauelshagen <heinzm@redhat.com> |
| |
| commit f1daa838e861ae1a0fb7cd9721a21258430fcc8c upstream. |
| |
| The DM cache target cannot cope with discards that span multiple cache |
| blocks, so each discard bio that spans more than one cache block must |
| get split by the DM core. |
| |
| Signed-off-by: Heinz Mauelshagen <heinzm@redhat.com> |
| Acked-by: Joe Thornber <ejt@redhat.com> |
| Signed-off-by: Mike Snitzer <snitzer@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/md/dm-cache-target.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/drivers/md/dm-cache-target.c |
| +++ b/drivers/md/dm-cache-target.c |
| @@ -1954,6 +1954,8 @@ static int cache_create(struct cache_arg |
| ti->num_discard_bios = 1; |
| ti->discards_supported = true; |
| ti->discard_zeroes_data_unsupported = true; |
| + /* Discard bios must be split on a block boundary */ |
| + ti->split_discard_bios = true; |
| |
| cache->features = ca->features; |
| ti->per_bio_data_size = get_per_bio_data_size(cache); |