mbox series

[v9,0/4] Add zone append write for zoned device

Message ID 20230407081657.17947-1-faithilikerun@gmail.com (mailing list archive)
Headers show
Series Add zone append write for zoned device | expand

Message

Sam Li April 7, 2023, 8:16 a.m. UTC
This patch series add zone append operation based on the previous
zoned device support part. The file-posix driver is modified to
add zone append emulation using regular writes.

v9:
- address review comments [Stefan]
  * fix get_zones_wp() for wrong offset index
  * fix misuses of QEMU_LOCK_GUARD()
  * free and allocate wps in refresh_limits for now

v8:
- address review comments [Stefan]
  * fix zone_mgmt covering multiple zones case
  * fix memory leak bug of wps in refresh_limits()
  * mv BlockZoneWps field from BlockLimits to BlockDriverState
  * add check_qiov_request() to bdrv_co_zone_append

v7:
- address review comments
  * fix wp assignment [Stefan]
  * fix reset_all cases, skip R/O & offline zones [Dmitry, Damien]
  * fix locking on non-zap related cases [Stefan]
  * cleanups and typos correction
- add "zap -p" option to qemuio-cmds [Stefan]

v6:
- add small fixes

v5:
- fix locking conditions and error handling
- drop some trival optimizations
- add tracing points for zone append

v4:
- fix lock related issues[Damien]
- drop all field in zone_mgmt op [Damien]
- fix state checks in zong_mgmt command [Damien]
- return start sector of wp when issuing zap req [Damien]

v3:
- only read wps when it is locked [Damien]
- allow last smaller zone case [Damien]
- add zone type and state checks in zone_mgmt command [Damien]
- fix RESET_ALL related problems

v2:
- split patch to two patches for better reviewing
- change BlockZoneWps's structure to an array of integers
- use only mutex lock on locking conditions of zone wps
- coding styles and clean-ups

v1:
- introduce zone append write

Sam Li (4):
  file-posix: add tracking of the zone write pointers
  block: introduce zone append write for zoned devices
  qemu-iotests: test zone append operation
  block: add some trace events for zone append

 block/block-backend.c              |  60 ++++++++
 block/file-posix.c                 | 226 ++++++++++++++++++++++++++++-
 block/io.c                         |  27 ++++
 block/io_uring.c                   |   4 +
 block/linux-aio.c                  |   3 +
 block/raw-format.c                 |   8 +
 block/trace-events                 |   2 +
 include/block/block-common.h       |  14 ++
 include/block/block-io.h           |   4 +
 include/block/block_int-common.h   |   8 +
 include/block/raw-aio.h            |   4 +-
 include/sysemu/block-backend-io.h  |   9 ++
 qemu-io-cmds.c                     |  75 ++++++++++
 tests/qemu-iotests/tests/zoned     |  16 ++
 tests/qemu-iotests/tests/zoned.out |  16 ++
 15 files changed, 469 insertions(+), 7 deletions(-)

Comments

Stefan Hajnoczi April 10, 2023, 1:10 p.m. UTC | #1
On Fri, Apr 07, 2023 at 04:16:53PM +0800, Sam Li wrote:
> This patch series add zone append operation based on the previous
> zoned device support part. The file-posix driver is modified to
> add zone append emulation using regular writes.
> 
> v9:
> - address review comments [Stefan]
>   * fix get_zones_wp() for wrong offset index
>   * fix misuses of QEMU_LOCK_GUARD()
>   * free and allocate wps in refresh_limits for now
> 
> v8:
> - address review comments [Stefan]
>   * fix zone_mgmt covering multiple zones case
>   * fix memory leak bug of wps in refresh_limits()
>   * mv BlockZoneWps field from BlockLimits to BlockDriverState
>   * add check_qiov_request() to bdrv_co_zone_append
> 
> v7:
> - address review comments
>   * fix wp assignment [Stefan]
>   * fix reset_all cases, skip R/O & offline zones [Dmitry, Damien]
>   * fix locking on non-zap related cases [Stefan]
>   * cleanups and typos correction
> - add "zap -p" option to qemuio-cmds [Stefan]
> 
> v6:
> - add small fixes
> 
> v5:
> - fix locking conditions and error handling
> - drop some trival optimizations
> - add tracing points for zone append
> 
> v4:
> - fix lock related issues[Damien]
> - drop all field in zone_mgmt op [Damien]
> - fix state checks in zong_mgmt command [Damien]
> - return start sector of wp when issuing zap req [Damien]
> 
> v3:
> - only read wps when it is locked [Damien]
> - allow last smaller zone case [Damien]
> - add zone type and state checks in zone_mgmt command [Damien]
> - fix RESET_ALL related problems
> 
> v2:
> - split patch to two patches for better reviewing
> - change BlockZoneWps's structure to an array of integers
> - use only mutex lock on locking conditions of zone wps
> - coding styles and clean-ups
> 
> v1:
> - introduce zone append write
> 
> Sam Li (4):
>   file-posix: add tracking of the zone write pointers
>   block: introduce zone append write for zoned devices
>   qemu-iotests: test zone append operation
>   block: add some trace events for zone append
> 
>  block/block-backend.c              |  60 ++++++++
>  block/file-posix.c                 | 226 ++++++++++++++++++++++++++++-
>  block/io.c                         |  27 ++++
>  block/io_uring.c                   |   4 +
>  block/linux-aio.c                  |   3 +
>  block/raw-format.c                 |   8 +
>  block/trace-events                 |   2 +
>  include/block/block-common.h       |  14 ++
>  include/block/block-io.h           |   4 +
>  include/block/block_int-common.h   |   8 +
>  include/block/raw-aio.h            |   4 +-
>  include/sysemu/block-backend-io.h  |   9 ++
>  qemu-io-cmds.c                     |  75 ++++++++++
>  tests/qemu-iotests/tests/zoned     |  16 ++
>  tests/qemu-iotests/tests/zoned.out |  16 ++
>  15 files changed, 469 insertions(+), 7 deletions(-)
> 
> -- 
> 2.39.2
> 

Thanks, applied to my block-next tree:
https://gitlab.com/stefanha/qemu/commits/block-next

Stefan