[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v10 0/7] Add support for zoned device
From: |
Sam Li |
Subject: |
[PATCH v10 0/7] Add support for zoned device |
Date: |
Thu, 29 Sep 2022 16:36:24 +0800 |
Zoned Block Devices (ZBDs) devide the LBA space to block regions called zones
that are larger than the LBA size. It can only allow sequential writes, which
reduces write amplification in SSD, leading to higher throughput and increased
capacity. More details about ZBDs can be found at:
https://zonedstorage.io/docs/introduction/zoned-storage
The zoned device support aims to let guests (virtual machines) access zoned
storage devices on the host (hypervisor) through a virtio-blk device. This
involves extending QEMU's block layer and virtio-blk emulation code. In its
current status, the virtio-blk device is not aware of ZBDs but the guest sees
host-managed drives as regular drive that will runs correctly under the most
common write workloads.
This patch series extend the block layer APIs with the minimum set of zoned
commands that are necessary to support zoned devices. The commands are - Report
Zones, four zone operations and Zone Append (developing).
It can be tested on a null_blk device using qemu-io or qemu-iotests. For
example, to test zone report using qemu-io:
$ path/to/qemu-io --image-opts -n driver=zoned_host_device,filename=/dev/nullb0
-c "zrp offset nr_zones"
v10:
- address review comments
* deal with the last small zone case in zone_mgmt operations [Damien]
* handle the capacity field outdated in old kernel(before 5.9) [Damien]
* use byte unit in block layer to be consistent with QEMU [Eric]
* fix coding style related problems [Stefan]
v9:
- address review comments
* specify units of zone commands requests [Stefan]
* fix some error handling in file-posix [Stefan]
* introduce zoned_host_devcie in the commit message [Markus]
v8:
- address review comments
* solve patch conflicts and merge sysfs helper funcations into one patch
* add cache.direct=on check in config
v7:
- address review comments
* modify sysfs attribute helper funcations
* move the input validation and error checking into raw_co_zone_* function
* fix checks in config
v6:
- drop virtio-blk emulation changes
- address Stefan's review comments
* fix CONFIG_BLKZONED configs in related functions
* replace reading fd by g_file_get_contents() in get_sysfs_str_val()
* rewrite documentation for zoned storage
v5:
- add zoned storage emulation to virtio-blk device
- add documentation for zoned storage
- address review comments
* fix qemu-iotests
* fix check to block layer
* modify interfaces of sysfs helper functions
* rename zoned device structs according to QEMU styles
* reorder patches
v4:
- add virtio-blk headers for zoned device
- add configurations for zoned host device
- add zone operations for raw-format
- address review comments
* fix memory leak bug in zone_report
* add checks to block layers
* fix qemu-iotests format
* fix sysfs helper functions
v3:
- add helper functions to get sysfs attributes
- address review comments
* fix zone report bugs
* fix the qemu-io code path
* use thread pool to avoid blocking ioctl() calls
v2:
- add qemu-io sub-commands
- address review comments
* modify interfaces of APIs
v1:
- add block layer APIs resembling Linux ZoneBlockDevice ioctls
Sam Li (7):
include: add zoned device structs
file-posix: introduce helper functions for sysfs attributes
block: add block layer APIs resembling Linux ZonedBlockDevice ioctls
raw-format: add zone operations to pass through requests
config: add check to block layer
qemu-iotests: test new zone operations
docs/zoned-storage: add zoned device documentation
block.c | 17 +
block/block-backend.c | 146 ++++++++
block/file-posix.c | 474 +++++++++++++++++++++++--
block/io.c | 41 +++
block/raw-format.c | 14 +
docs/devel/zoned-storage.rst | 40 +++
docs/system/qemu-block-drivers.rst.inc | 6 +
include/block/block-common.h | 47 +++
include/block/block-io.h | 7 +
include/block/block_int-common.h | 32 ++
include/block/raw-aio.h | 6 +-
include/sysemu/block-backend-io.h | 17 +
meson.build | 4 +
qapi/block-core.json | 8 +-
qemu-io-cmds.c | 148 ++++++++
tests/qemu-iotests/tests/zoned.out | 53 +++
tests/qemu-iotests/tests/zoned.sh | 86 +++++
17 files changed, 1106 insertions(+), 40 deletions(-)
mode change 100644 => 100755 block.c
mode change 100644 => 100755 block/file-posix.c
create mode 100644 docs/devel/zoned-storage.rst
create mode 100644 tests/qemu-iotests/tests/zoned.out
create mode 100755 tests/qemu-iotests/tests/zoned.sh
--
2.37.3
- [PATCH v10 0/7] Add support for zoned device,
Sam Li <=
- [PATCH v10 1/7] include: add zoned device structs, Sam Li, 2022/09/29
- [PATCH v10 2/7] file-posix: introduce helper functions for sysfs attributes, Sam Li, 2022/09/29
- [PATCH v10 3/7] block: add block layer APIs resembling Linux ZonedBlockDevice ioctls, Sam Li, 2022/09/29
- [PATCH v10 4/7] raw-format: add zone operations to pass through requests, Sam Li, 2022/09/29
- [PATCH v10 5/7] config: add check to block layer, Sam Li, 2022/09/29
- [PATCH v10 7/7] docs/zoned-storage: add zoned device documentation, Sam Li, 2022/09/29
- [PATCH v10 6/7] qemu-iotests: test new zone operations, Sam Li, 2022/09/29