Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: qemu/qemu
base: c095228e8a8c
Choose a base ref
...
head repository: qemu/qemu
compare: ab4c44d657ae
Choose a head ref
  • 17 commits
  • 30 files changed
  • 2 contributors

Commits on May 15, 2023

  1. block/block-common: add zoned device structs

    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
    Acked-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20230508045533.175575-2-faithilikerun@gmail.com
    Message-id: 20230324090605.28361-2-faithilikerun@gmail.com
    [Adjust commit message prefix as suggested by Philippe Mathieu-Daudé
    <philmd@linaro.org>.
    --Stefan]
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    72ca800 View commit details
    Browse the repository at this point in the history
  2. block/file-posix: introduce helper functions for sysfs attributes

    Use get_sysfs_str_val() to get the string value of device
    zoned model. Then get_sysfs_zoned_model() can convert it to
    BlockZoneModel type of QEMU.
    
    Use get_sysfs_long_val() to get the long value of zoned device
    information.
    
    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Reviewed-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
    Acked-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20230508045533.175575-3-faithilikerun@gmail.com
    Message-id: 20230324090605.28361-3-faithilikerun@gmail.com
    [Adjust commit message prefix as suggested by Philippe Mathieu-Daudé
    <philmd@linaro.org>.
    --Stefan]
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    a735b56 View commit details
    Browse the repository at this point in the history
  3. block/block-backend: add block layer APIs resembling Linux ZonedBlock…

    …Device ioctls
    
    Add zoned device option to host_device BlockDriver. It will be presented only
    for zoned host block devices. By adding zone management operations to the
    host_block_device BlockDriver, users can use the new block layer APIs
    including Report Zone and four zone management operations
    (open, close, finish, reset, reset_all).
    
    Qemu-io uses the new APIs to perform zoned storage commands of the device:
    zone_report(zrp), zone_open(zo), zone_close(zc), zone_reset(zrs),
    zone_finish(zf).
    
    For example, to test zone_report, use following command:
    $ ./build/qemu-io --image-opts -n driver=host_device, filename=/dev/nullb0
    -c "zrp offset nr_zones"
    
    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
    Acked-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20230508045533.175575-4-faithilikerun@gmail.com
    Message-id: 20230324090605.28361-4-faithilikerun@gmail.com
    [Adjust commit message prefix as suggested by Philippe Mathieu-Daudé
    <philmd@linaro.org> and remove spurious ret = -errno in
    raw_co_zone_mgmt().
    --Stefan]
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    6d43eaa View commit details
    Browse the repository at this point in the history
  4. block/raw-format: add zone operations to pass through requests

    raw-format driver usually sits on top of file-posix driver. It needs to
    pass through requests of zone commands.
    
    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
    Acked-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20230508045533.175575-5-faithilikerun@gmail.com
    Message-id: 20230324090605.28361-5-faithilikerun@gmail.com
    [Adjust commit message prefix as suggested by Philippe Mathieu-Daudé
    <philmd@linaro.org>.
    --Stefan]
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    50c4bcd View commit details
    Browse the repository at this point in the history
  5. block: add zoned BlockDriver check to block layer

    Putting zoned/non-zoned BlockDrivers on top of each other is not
    allowed.
    
    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
    Acked-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20230508045533.175575-6-faithilikerun@gmail.com
    Message-id: 20230324090605.28361-6-faithilikerun@gmail.com
    [Adjust commit message prefix as suggested by Philippe Mathieu-Daudé
    <philmd@linaro.org> and clarify that the check is about zoned
    BlockDrivers.
    --Stefan]
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    774c726 View commit details
    Browse the repository at this point in the history
  6. iotests: test new zone operations

    The new block layer APIs of zoned block devices can be tested by:
    $ tests/qemu-iotests/check zoned
    Run each zone operation on a newly created null_blk device
    and see whether it outputs the same zone information.
    
    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Acked-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20230508045533.175575-7-faithilikerun@gmail.com
    Message-id: 20230324090605.28361-7-faithilikerun@gmail.com
    [Adjust commit message prefix as suggested by Philippe Mathieu-Daudé
    <philmd@linaro.org>.
    --Stefan]
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    8a6aa0b View commit details
    Browse the repository at this point in the history
  7. block: add some trace events for new block layer APIs

    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
    Acked-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20230508045533.175575-8-faithilikerun@gmail.com
    Message-id: 20230324090605.28361-8-faithilikerun@gmail.com
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    142e307 View commit details
    Browse the repository at this point in the history
  8. docs/zoned-storage: add zoned device documentation

    Add the documentation about the zoned device support to virtio-blk
    emulation.
    
    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Reviewed-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
    Acked-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20230508045533.175575-9-faithilikerun@gmail.com
    Message-id: 20230324090605.28361-9-faithilikerun@gmail.com
    [Add index-api.rst to fix "zoned-storage.rst:document isn't included in
    any toctree" error and fix pre-formatted code syntax.
    --Stefan]
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    90fd974 View commit details
    Browse the repository at this point in the history
  9. file-posix: add tracking of the zone write pointers

    Since Linux doesn't have a user API to issue zone append operations to
    zoned devices from user space, the file-posix driver is modified to add
    zone append emulation using regular writes. To do this, the file-posix
    driver tracks the wp location of all zones of the device. It uses an
    array of uint64_t. The most significant bit of each wp location indicates
    if the zone type is conventional zones.
    
    The zones wp can be changed due to the following operations issued:
    - zone reset: change the wp to the start offset of that zone
    - zone finish: change to the end location of that zone
    - write to a zone
    - zone append
    
    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Message-id: 20230508051510.177850-2-faithilikerun@gmail.com
    [Fix errno propagation from handle_aiocb_zone_mgmt()
    --Stefan]
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    a3c41f0 View commit details
    Browse the repository at this point in the history
  10. block: introduce zone append write for zoned devices

    A zone append command is a write operation that specifies the first
    logical block of a zone as the write position. When writing to a zoned
    block device using zone append, the byte offset of the call may point at
    any position within the zone to which the data is being appended. Upon
    completion the device will respond with the position where the data has
    been written in the zone.
    
    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Reviewed-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20230508051510.177850-3-faithilikerun@gmail.com
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    4751d09 View commit details
    Browse the repository at this point in the history
  11. qemu-iotests: test zone append operation

    The patch tests zone append writes by reporting the zone wp after
    the completion of the call. "zap -p" option can print the sector
    offset value after completion, which should be the start sector
    where the append write begins.
    
    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20230508051510.177850-4-faithilikerun@gmail.com
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    fe4fe70 View commit details
    Browse the repository at this point in the history
  12. block: add some trace events for zone append

    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Reviewed-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20230508051510.177850-5-faithilikerun@gmail.com
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    6c811e1 View commit details
    Browse the repository at this point in the history
  13. virtio-blk: add zoned storage emulation for zoned devices

    This patch extends virtio-blk emulation to handle zoned device commands
    by calling the new block layer APIs to perform zoned device I/O on
    behalf of the guest. It supports Report Zone, four zone oparations (open,
    close, finish, reset), and Append Zone.
    
    The VIRTIO_BLK_F_ZONED feature bit will only be set if the host does
    support zoned block devices. Regular block devices(conventional zones)
    will not be set.
    
    The guest os can use blktests, fio to test those commands on zoned devices.
    Furthermore, using zonefs to test zone append write is also supported.
    
    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Message-id: 20230508051916.178322-2-faithilikerun@gmail.com
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    4f73665 View commit details
    Browse the repository at this point in the history
  14. block: add accounting for zone append operation

    Taking account of the new zone append write operation for zoned devices,
    BLOCK_ACCT_ZONE_APPEND enum is introduced as other I/O request type (read,
    write, flush).
    
    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Message-id: 20230508051916.178322-3-faithilikerun@gmail.com
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    52eb76f View commit details
    Browse the repository at this point in the history
  15. virtio-blk: add some trace events for zoned emulation

    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20230508051916.178322-4-faithilikerun@gmail.com
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    4e92acf View commit details
    Browse the repository at this point in the history
  16. docs/zoned-storage:add zoned emulation use case

    Add the documentation about the example of using virtio-blk driver
    to pass the zoned block devices through to the guest.
    
    Signed-off-by: Sam Li <faithilikerun@gmail.com>
    Message-id: 20230508051916.178322-5-faithilikerun@gmail.com
    [Fix pre-formatted code syntax
    --Stefan]
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    sgzerolc authored and Stefan Hajnoczi committed May 15, 2023
    Copy the full SHA
    01562fe View commit details
    Browse the repository at this point in the history
  17. Merge tag 'block-pull-request' of https://gitlab.com/stefanha/qemu in…

    …to staging
    
    Pull request
    
    This pull request contain's Sam Li's zoned storage support in the QEMU block
    layer and virtio-blk emulation.
    
    v2:
    - Sam fixed the CI failures. CI passes for me now. [Richard]
    
    # -----BEGIN PGP SIGNATURE-----
    #
    # iQEzBAABCAAdFiEEhpWov9P5fNqsNXdanKSrs4Grc8gFAmRiWCgACgkQnKSrs4Gr
    # c8h/7gf+MMm2cGEaf376t8HMwTc6wbXVfbmAlZrge2EXPZfFvEaxj7HClcEraOgV
    # yJsGWeU6mOw4r68ICJ/4KhrY1cdv+VZym/LsMLMcFUTXFHnyX4pyU3am31FPOI4K
    # +wrDYJOJhc4DkAESWGgEWiMKpuO/uUEgBmHdW+qPFCl77Yl/eP6H5uNP6nGFn55p
    # QpS/l8iha7PDkc81EsrjA+e/YI0ubfNSP7+zZElhQ98354CQ0MCfmZ6h9bT+o2bu
    # R7SBUj80e+2X0a1b9s/2Jz/x8l4TEsl8kr48/Q1usq3GVVkbjEgqsk6wTN13Q/4g
    # CeIR7E61ZeYzmpb4tLFRIqK2Jw+NEQ==
    # =Q8xW
    # -----END PGP SIGNATURE-----
    # gpg: Signature made Mon 15 May 2023 09:04:56 AM PDT
    # gpg:                using RSA key 8695A8BFD3F97CDAAC35775A9CA4ABB381AB73C8
    # gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>" [full]
    # gpg:                 aka "Stefan Hajnoczi <stefanha@gmail.com>" [full]
    
    * tag 'block-pull-request' of https://gitlab.com/stefanha/qemu:
      docs/zoned-storage:add zoned emulation use case
      virtio-blk: add some trace events for zoned emulation
      block: add accounting for zone append operation
      virtio-blk: add zoned storage emulation for zoned devices
      block: add some trace events for zone append
      qemu-iotests: test zone append operation
      block: introduce zone append write for zoned devices
      file-posix: add tracking of the zone write pointers
      docs/zoned-storage: add zoned device documentation
      block: add some trace events for new block layer APIs
      iotests: test new zone operations
      block: add zoned BlockDriver check to block layer
      block/raw-format: add zone operations to pass through requests
      block/block-backend: add block layer APIs resembling Linux ZonedBlockDevice ioctls
      block/file-posix: introduce helper functions for sysfs attributes
      block/block-common: add zoned device structs
    
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 15, 2023
    Copy the full SHA
    ab4c44d View commit details
    Browse the repository at this point in the history