[dm-devel] [PATCH 00/12] Block support for zoned drives

Shaun Tancheff shaun at tancheff.com
Mon Apr 4 05:06:04 UTC 2016


As Host Aware drives are becoming available we would like to be able 
to make use of such drives. This series is also intended to be suitable
for use by Host Managed drives.

The following series is hopefully a reasonable start at adding such 
support.

ZAC/ZBC drives add new commands. Some of this support is already in
progress by Hannes Reinecke <hare at suse.de>. This patch finishes up a
couple of scsi <-> ata translations. These patches will be re-worked 
or dropped in favor of Hannes' next release.

With the ZAC support in place adding some additional flags to struct bio 
to identify the new drive requests (Report zones, Open/Close/Reset zones).

With the bio support in place there are two new users added. The first 
user is an ioctl the second user is a device mapper target.
The user space tools for the ioctl is intended to be acceptable for
inclusion by util-linux. Initial patches for 2.20.1 and 2.21.1
can be found here:
https://github.com/Seagate/ZDM-Device-Mapper/tree/master/patches/util-linux

Please consider the new device mapper target, as an RFC.

Patch "Limit bio_endio recursion" is based on an older patch that was 
not picked up. It is not strictly necessary but it does reduce stack 
usage, especially for badly behaved DM targets that return
DM_MAPIO_REQUEUE too frequently.

Patch "Use PID to seed Stream Id" depends on:
https://lkml.kernel.org/r/1457107853-8689-1-git-send-email-axboe@fb.com

Patch "Block Zoned Control for Userspace" is a hold over for user space
tools that have not been updated to use the new block ioctl. The patch
will be dropped when zdm-tools is updated and sd-tools is replaced
with util-linux.

This series is based on Linus v4.5 kernel.

Code is also available on github here:
https://github.com/Seagate/ZDM-Device-Mapper

And a fork of Linus kernel with ZDM branches is available here:
https://github.com/stancheff/linux

Shaun Tancheff (12):
  Add ZBC <-> ZAC xlat support for report, open, close, reset, finish
  ata-scsi: Translate ReportZones result to big endian
  BUG: Losing bits on request.cmd_flags
  Add bio/request flags for using ZBC/ZAC commands
  Add ioctl to issue ZBC/ZAC commands via block layer
  Add ata pass-through path for ZAC commands.
  ZDM: New DM target 'zoned'
  RAID 4/5/6: Indicate parity blocks as 'META'
  RAID 4/5/6: Fine-grained TRIM enable for ZDM
  Limit bio_endio recursion
  Stream Id: Use PID to seed Stream Id construction.
  Block Zoned Control for Userspace

 Documentation/device-mapper/zoned.txt |   75 +
 MAINTAINERS                           |   16 +
 block/Kconfig                         |   12 +
 block/Makefile                        |    1 +
 block/bio.c                           |   57 +-
 block/blk-core.c                      |   17 +-
 block/blk-lib.c                       |  120 +
 block/blk-merge.c                     |    2 +-
 block/blk-mq.c                        |    2 +-
 block/blk-settings.c                  |    1 +
 block/blk-sysfs.c                     |   11 +
 block/blk-zoned-ctrl.c                |  642 +++
 block/cfq-iosched.c                   |    2 +-
 block/elevator.c                      |    4 +-
 block/ioctl.c                         |  142 +
 block/scsi_ioctl.c                    |    6 +
 drivers/ata/libata-eh.c               |    2 +
 drivers/ata/libata-scsi.c             |  238 ++
 drivers/md/Kconfig                    |   11 +
 drivers/md/Makefile                   |    1 +
 drivers/md/dm-zoned.c                 | 2549 ++++++++++++
 drivers/md/dm-zoned.h                 |  715 ++++
 drivers/md/libzoned.c                 | 7149 +++++++++++++++++++++++++++++++++
 drivers/md/raid5.c                    |    6 +-
 drivers/scsi/sd.c                     |  186 +-
 drivers/scsi/sd.h                     |    1 +
 fs/ext4/file.c                        |    1 +
 fs/xfs/xfs_aops.c                     |    2 +-
 fs/xfs/xfs_file.c                     |    1 +
 include/linux/ata.h                   |   18 +
 include/linux/blk-zoned-ctrl.h        |   51 +
 include/linux/blk_types.h             |   23 +-
 include/linux/blkdev.h                |   22 +-
 include/linux/blkzoned_api.h          |   25 +
 include/linux/elevator.h              |    4 +-
 include/linux/fs.h                    |   10 +-
 include/scsi/scsi_device.h            |    1 +
 include/scsi/scsi_proto.h             |   14 +
 include/trace/events/libata.h         |    2 +
 include/uapi/linux/Kbuild             |    2 +
 include/uapi/linux/blk-zoned-ctrl.h   |   70 +
 include/uapi/linux/blkzoned_api.h     |  221 +
 include/uapi/linux/fs.h               |    1 +
 43 files changed, 12405 insertions(+), 31 deletions(-)
 create mode 100644 Documentation/device-mapper/zoned.txt
 create mode 100644 block/blk-zoned-ctrl.c
 create mode 100644 drivers/md/dm-zoned.c
 create mode 100644 drivers/md/dm-zoned.h
 create mode 100644 drivers/md/libzoned.c
 create mode 100644 include/linux/blk-zoned-ctrl.h
 create mode 100644 include/linux/blkzoned_api.h
 create mode 100644 include/uapi/linux/blk-zoned-ctrl.h
 create mode 100644 include/uapi/linux/blkzoned_api.h

-- 
1.9.1




More information about the dm-devel mailing list