mbox series

[v3,00/14] qemu patches for 64-bit NBD extensions

Message ID 20230515195343.1915857-1-eblake@redhat.com (mailing list archive)
Headers show
Series qemu patches for 64-bit NBD extensions | expand

Message

Eric Blake May 15, 2023, 7:53 p.m. UTC
v2 was here:
https://lists.gnu.org/archive/html/qemu-devel/2022-11/msg02340.html

Since then:
 - upstream NBD has accepted the extension on a branch; once multiple
   implementations interoperate based on that spec, it will be promoted
   to mainline (my plan: qemu with this series, libnbd nearly ready to
   go, nbdkit a bit further out)
 - rebase to block changes in meantime
 - drop RFC patches for 64-bit NBD_CMD_READ (NBD spec did not take them)
 - per upstream spec decision, extended headers now mandates use of
   NBD_REPLY_TYPE_BLOCK_STATUS_EXT rather than server choice based on
   reply size, which in turn required rearranging server patches a bit
 - other changes that I noticed while testing with parallel changes
   being added to libnbd (link to those patches to follow in the next
   week or so)

Eric Blake (14):
  nbd/client: Use smarter assert
  nbd/client: Add safety check on chunk payload length
  nbd/server: Prepare for alternate-size headers
  nbd: Prepare for 64-bit request effect lengths
  nbd: Add types for extended headers
  nbd/server: Refactor handling of request payload
  nbd/server: Refactor to pass full request around
  nbd/server: Support 64-bit block status
  nbd/server: Initial support for extended headers
  nbd/client: Initial support for extended headers
  nbd/client: Accept 64-bit block status chunks
  nbd/client: Request extended headers during negotiation
  nbd/server: Prepare for per-request filtering of BLOCK_STATUS
  nbd/server: Add FLAG_PAYLOAD support to CMD_BLOCK_STATUS

 docs/interop/nbd.txt                          |   1 +
 include/block/nbd.h                           | 165 +++--
 nbd/nbd-internal.h                            |   8 +-
 block/nbd.c                                   |  86 ++-
 nbd/client-connection.c                       |   4 +-
 nbd/client.c                                  | 143 ++--
 nbd/common.c                                  |  10 +-
 nbd/server.c                                  | 653 ++++++++++++------
 qemu-nbd.c                                    |   4 +
 block/trace-events                            |   1 +
 nbd/trace-events                              |  11 +-
 tests/qemu-iotests/223.out                    |  18 +-
 tests/qemu-iotests/233.out                    |   5 +
 tests/qemu-iotests/241.out                    |   3 +
 tests/qemu-iotests/307.out                    |  15 +-
 .../tests/nbd-qemu-allocation.out             |   3 +-
 16 files changed, 797 insertions(+), 333 deletions(-)


base-commit: 18b6727083acceac5d76ea0b8cb6f5cdef6858a7

Comments

Eric Blake May 15, 2023, 9:05 p.m. UTC | #1
Adding qemu-block for the cover letter (not sure how I missed that the
first time).

On Mon, May 15, 2023 at 02:53:29PM -0500, Eric Blake wrote:
> 
> v2 was here:
> https://lists.gnu.org/archive/html/qemu-devel/2022-11/msg02340.html
> 
> Since then:
>  - upstream NBD has accepted the extension on a branch; once multiple
>    implementations interoperate based on that spec, it will be promoted
>    to mainline (my plan: qemu with this series, libnbd nearly ready to
>    go, nbdkit a bit further out)
>  - rebase to block changes in meantime
>  - drop RFC patches for 64-bit NBD_CMD_READ (NBD spec did not take them)
>  - per upstream spec decision, extended headers now mandates use of
>    NBD_REPLY_TYPE_BLOCK_STATUS_EXT rather than server choice based on
>    reply size, which in turn required rearranging server patches a bit
>  - other changes that I noticed while testing with parallel changes
>    being added to libnbd (link to those patches to follow in the next
>    week or so)

If it helps review, I compared to my v2 posting as follows:

001/14:[0007] [FC] 'nbd/client: Use smarter assert'
002/14:[----] [--] 'nbd/client: Add safety check on chunk payload length'
003/14:[----] [-C] 'nbd/server: Prepare for alternate-size headers'
004/14:[0099] [FC] 'nbd: Prepare for 64-bit request effect lengths'
005/14:[0002] [FC] 'nbd: Add types for extended headers'
006/14:[0012] [FC] 'nbd/server: Refactor handling of request payload'
007/14:[0026] [FC] 'nbd/server: Refactor to pass full request around'
008/14:[0052] [FC] 'nbd/server: Support 64-bit block status'
009/14:[0032] [FC] 'nbd/server: Initial support for extended headers'
010/14:[0020] [FC] 'nbd/client: Initial support for extended headers'
011/14:[0015] [FC] 'nbd/client: Accept 64-bit block status chunks'
012/14:[0042] [FC] 'nbd/client: Request extended headers during negotiation'
013/14:[0005] [FC] 'nbd/server: Prepare for per-request filtering of BLOCK_STATUS'
014/14:[0004] [FC] 'nbd/server: Add FLAG_PAYLOAD support to CMD_BLOCK_STATUS'