From: Damien Le Moal <damien.lemoal@xxxxxxx> This series introduces zoned block device support to the device mapper infrastructure. Pathces are as follows: - Patch 1: Add a new target type feature flag to indicate if a target type supports host-managed zoned block devices. This prevents using these drives with the current target types since none of them have the proper support implemented and will not operate properly with these drives. - Patch 2: If a target device is a zoned block device, check that the range of LBAs mapped is aligned to the device zone size and that the device start offset also aligns to zone boundaries. This is necessary for zone reset and zone report correct execution. - Patch 3: Check that the different target devices of a table have compatible zone sizes and models. This is necessary for target types that expose a zone model different from the underlying device. - Patch 4: Fix handling of REQ_OP_ZONE_RESET bios - Patch 5: Fix handling of REQ_OP_ZONE_REPORT bios - Patch 6: Introduce a new helper function to reverse map a device zone report to the target LBA range - Patch 7: Add support for host-managed zoned block devices to dm-flakey. This is necessary for testing file systems supporting natively these drives (e.g. f2fs). - Patch 8: Add support for for zoned block devices to dm-linear. This can have useful applications during development and testing (e.g. allow creating smaller zoned devices with different combinations and positions of zones). There are also interesting applications for production, for instance, the ability to aggregate conventional zones of different drives to create a regular disk. - Patch 9: Add sequential write enforcement to dm_kcopyd_copy so that sequential zones of a host-managed zoned block device can be specified as destinations. - Patch 10: New dm-zoned target type (this was already sent for review twice). This resend adds modifications suggested by Hannes to implement reclaim using dm-kcopyd. dm-zoned depends on patch 9. As always, comments and reviews are welcome. Changes from v1: - Use for-loop in patch 3 as suggested by Bart - Add memory shrinker to dm-zoned to shrink the metadata block cache under memory pressure (suggested by Bart) - Added Hannes Reviewed-by tag Damien Le Moal (10): dm-table: Introduce DM_TARGET_ZONED_HM feature dm-table: Check device area zone alignment dm-table: Check block devices zone model compatibility dm: Fix REQ_OP_ZONE_RESET bio handling dm: Fix REQ_OP_ZONE_REPORT bio handling dm: Introduce dm_remap_zone_report() dm-flakey: Add support for zoned block devices dm-linear: Add support for zoned block devices dm-kcopyd: Add sequential write feature dm-zoned: Drive-managed zoned block device target Documentation/device-mapper/dm-zoned.txt | 154 +++ drivers/md/Kconfig | 19 + drivers/md/Makefile | 2 + drivers/md/dm-flakey.c | 21 +- drivers/md/dm-kcopyd.c | 68 +- drivers/md/dm-linear.c | 14 +- drivers/md/dm-table.c | 145 ++ drivers/md/dm-zoned-io.c | 998 ++++++++++++++ drivers/md/dm-zoned-metadata.c | 2195 ++++++++++++++++++++++++++++++ drivers/md/dm-zoned-reclaim.c | 535 ++++++++ drivers/md/dm-zoned.h | 528 +++++++ drivers/md/dm.c | 93 +- include/linux/device-mapper.h | 16 + include/linux/dm-kcopyd.h | 1 + 14 files changed, 4783 insertions(+), 6 deletions(-) create mode 100644 Documentation/device-mapper/dm-zoned.txt create mode 100644 drivers/md/dm-zoned-io.c create mode 100644 drivers/md/dm-zoned-metadata.c create mode 100644 drivers/md/dm-zoned-reclaim.c create mode 100644 drivers/md/dm-zoned.h -- 2.9.3