From: Damien Le Moal <[email protected]>

If a target maps to a zoned block device, check that the device area is
aligned on zone boundaries to avoid problems with REQ_OP_ZONE_RESET
operations (resetting a partially mapped sequential zone would not be
possible). This also greatly facilitate the processing of zone report
with REQ_OP_ZONE_REPORT bios.

Signed-off-by: Damien Le Moal <[email protected]>
---
 drivers/md/dm-table.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index 06d3b7b..6947f0f 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -339,6 +339,33 @@ static int device_area_is_invalid(struct dm_target *ti, 
struct dm_dev *dev,
                return 1;
        }
 
+       /*
+        * If the target is mapped to a zoned block device, check
+        * that the device zones are not partially mapped.
+        */
+       if (bdev_zoned_model(bdev) != BLK_ZONED_NONE) {
+               unsigned int zone_sectors = bdev_zone_sectors(bdev);
+
+               if (start & (zone_sectors - 1)) {
+                       DMWARN("%s: start=%llu not aligned to h/w "
+                              "zone size %u of %s",
+                              dm_device_name(ti->table->md),
+                              (unsigned long long)start,
+                              zone_sectors, bdevname(bdev, b));
+                       return 1;
+               }
+
+               if (start + len < dev_size &&
+                   len & (zone_sectors - 1)) {
+                       DMWARN("%s: len=%llu not aligned to h/w "
+                              "zone size %u of %s",
+                              dm_device_name(ti->table->md),
+                              (unsigned long long)start,
+                              zone_sectors, bdevname(bdev, b));
+                       return 1;
+               }
+       }
+
        return 0;
 }
 
-- 
2.9.3

Western Digital Corporation (and its subsidiaries) E-mail Confidentiality 
Notice & Disclaimer:

This e-mail and any files transmitted with it may contain confidential or 
legally privileged information of WDC and/or its affiliates, and are intended 
solely for the use of the individual or entity to which they are addressed. If 
you are not the intended recipient, any disclosure, copying, distribution or 
any action taken or omitted to be taken in reliance on it, is prohibited. If 
you have received this e-mail in error, please notify the sender immediately 
and delete the e-mail in its entirety from your system.

--
dm-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/dm-devel

Reply via email to