qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v14 0/8] Add support for zoned device


From: Stefan Hajnoczi
Subject: Re: [PATCH v14 0/8] Add support for zoned device
Date: Tue, 20 Dec 2022 16:00:10 -0500

On Mon, Dec 19, 2022 at 03:29:11PM +0800, Sam Li wrote:
> 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"
> 
> v14:
> - address Stefan's comments of probing block sizes

I have reviewed all patches now.

Kevin: Please review and merge.

Thanks,
Stefan

> 
> v13:
> - add some tracing points for new zone APIs [Dmitry]
> - change error handling in zone_mgmt [Damien, Stefan]
> 
> v12:
> - address review comments
>   * drop BLK_ZO_RESET_ALL bit [Damien]
>   * fix error messages, style, and typos[Damien, Hannes]
> 
> v11:
> - address review comments
>   * fix possible BLKZONED config compiling warnings [Stefan]
>   * fix capacity field compiling warnings on older kernel [Stefan,Damien]
> 
> 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 (8):
>   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
>   block: add some trace events for new block layer APIs
>   docs/zoned-storage: add zoned device documentation
> 
>  block.c                                |  19 +
>  block/block-backend.c                  | 147 ++++++++
>  block/file-posix.c                     | 503 +++++++++++++++++++++++--
>  block/io.c                             |  41 ++
>  block/raw-format.c                     |  14 +
>  block/trace-events                     |   2 +
>  docs/devel/zoned-storage.rst           |  43 +++
>  docs/system/qemu-block-drivers.rst.inc |   6 +
>  include/block/block-common.h           |  43 +++
>  include/block/block-io.h               |   7 +
>  include/block/block_int-common.h       |  29 ++
>  include/block/raw-aio.h                |   6 +-
>  include/sysemu/block-backend-io.h      |  18 +
>  meson.build                            |   4 +
>  qapi/block-core.json                   |   8 +-
>  qemu-io-cmds.c                         | 149 ++++++++
>  tests/qemu-iotests/tests/zoned.out     |  53 +++
>  tests/qemu-iotests/tests/zoned.sh      |  86 +++++
>  18 files changed, 1139 insertions(+), 39 deletions(-)
>  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.38.1
> 

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]