dm zoned: drive-managed zoned block device target
authorDamien Le Moal <damien.lemoal@wdc.com>
Wed, 7 Jun 2017 06:55:39 +0000 (15:55 +0900)
committerMike Snitzer <snitzer@redhat.com>
Mon, 19 Jun 2017 15:05:20 +0000 (11:05 -0400)
commit3b1a94c88b798d4f3bd1a5b61f5c8fb9d987c242
tree173fcaced4dffd3e7d334a2992e40a9466747b91
parentb73c67c2cbb0004e6da9720a167fe42e31f7a6e8
dm zoned: drive-managed zoned block device target

The dm-zoned device mapper target provides transparent write access
to zoned block devices (ZBC and ZAC compliant block devices).
dm-zoned hides to the device user (a file system or an application
doing raw block device accesses) any constraint imposed on write
requests by the device, equivalent to a drive-managed zoned block
device model.

Write requests are processed using a combination of on-disk buffering
using the device conventional zones and direct in-place processing for
requests aligned to a zone sequential write pointer position.
A background reclaim process implemented using dm_kcopyd_copy ensures
that conventional zones are always available for executing unaligned
write requests. The reclaim process overhead is minimized by managing
buffer zones in a least-recently-written order and first targeting the
oldest buffer zones. Doing so, blocks under regular write access (such
as metadata blocks of a file system) remain stored in conventional
zones, resulting in no apparent overhead.

dm-zoned implementation focus on simplicity and on minimizing overhead
(CPU, memory and storage overhead). For a 14TB host-managed disk with
256 MB zones, dm-zoned memory usage per disk instance is at most about
3 MB and as little as 5 zones will be used internally for storing metadata
and performing buffer zone reclaim operations. This is achieved using
zone level indirection rather than a full block indirection system for
managing block movement between zones.

dm-zoned primary target is host-managed zoned block devices but it can
also be used with host-aware device models to mitigate potential
device-side performance degradation due to excessive random writing.

Zoned block devices can be formatted and checked for use with the dm-zoned
target using the dmzadm utility available at:

https://github.com/hgst/dm-zoned-tools

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
[Mike Snitzer partly refactored Damien's original work to cleanup the code]
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Documentation/device-mapper/dm-zoned.txt [new file with mode: 0644]
drivers/md/Kconfig
drivers/md/Makefile
drivers/md/dm-zoned-metadata.c [new file with mode: 0644]
drivers/md/dm-zoned-reclaim.c [new file with mode: 0644]
drivers/md/dm-zoned-target.c [new file with mode: 0644]
drivers/md/dm-zoned.h [new file with mode: 0644]