[dm-devel] [PATCH] dm: make sure to obey max_io_len_target_boundary
Michael Lass
bevan at bi-co.net
Tue May 21 19:58:07 UTC 2019
In 61697a6abd24 __send_changing_extent_only() was simplified as splitting
discards is no longer necessary. However, we still need to obey
max_io_len_target_boundary.
Signed-off-by: Michael Lass <bevan at bi-co.net>
---
drivers/md/dm.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 1fb1333fefec..997385c1ca54 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -1469,7 +1469,7 @@ static unsigned get_num_write_zeroes_bios(struct dm_target *ti)
static int __send_changing_extent_only(struct clone_info *ci, struct dm_target *ti,
unsigned num_bios)
{
- unsigned len = ci->sector_count;
+ unsigned len;
/*
* Even though the device advertised support for this type of
@@ -1480,6 +1480,8 @@ static int __send_changing_extent_only(struct clone_info *ci, struct dm_target *
if (!num_bios)
return -EOPNOTSUPP;
+ len = min((sector_t)ci->sector_count, max_io_len_target_boundary(ci->sector, ti));
+
__send_duplicate_bios(ci, ti, num_bios, &len);
ci->sector += len;
--
2.21.0
More information about the dm-devel
mailing list