Fix several corner-case bugs in our implementation of the NBD
protocol, both as client and as server.

Depends on Kevin's block-next branch:
git://repo.or.cz/qemu/kevin.git block-next

Also available as a tag at this location:
git fetch git://repo.or.cz/qemu/ericb.git nbd-flags-v4

Broken out of a larger v3 series[1], for easier review.  There
are still some places where we aren't quite compliant (for example,
the protocol recommends that the client send NBD_OPT_ABORT before
dropping the connection after receiving a valid server response it
didn't like but which did not violate protocol), but later series
will tackle that.

[1] https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg03526.html

Changes in v4: rebase to latest block-next

001/11:[----] [--] 'nbd: Use BDRV_REQ_FUA for better FUA where supported'
002/11:[0004] [FC] 'nbd: More debug typo fixes, use correct formats'
003/11:[----] [--] 'nbd: Quit server after any write error'
004/11:[----] [--] 'nbd: Improve server handling of bogus commands'
005/11:[----] [--] 'nbd: Reject unknown request flags'
006/11:[----] [--] 'nbd: Group all Linux-specific ioctl code in one place'
007/11:[----] [--] 'nbd: Clean up ioctl handling of qemu-nbd -c'
008/11:[----] [-C] 'nbd: Limit nbdflags to 16 bits'
009/11:[----] [--] 'nbd: Add qemu-nbd -D for human-readable description'
010/11:[----] [--] 'nbd: Detect servers that send unexpected error values'
011/11:[----] [--] 'nbd: Avoid magic number for NBD max name size'

Eric Blake (11):
  nbd: Use BDRV_REQ_FUA for better FUA where supported
  nbd: More debug typo fixes, use correct formats
  nbd: Quit server after any write error
  nbd: Improve server handling of bogus commands
  nbd: Reject unknown request flags
  nbd: Group all Linux-specific ioctl code in one place
  nbd: Clean up ioctl handling of qemu-nbd -c
  nbd: Limit nbdflags to 16 bits
  nbd: Add qemu-nbd -D for human-readable description
  nbd: Detect servers that send unexpected error values
  nbd: Avoid magic number for NBD max name size

 block/nbd-client.h  |   2 +-
 include/block/nbd.h |  13 ++-
 nbd/nbd-internal.h  |   5 +-
 nbd/client.c        | 106 ++++++++++++++++---------
 nbd/server.c        | 224 +++++++++++++++++++++++++++++++---------------------
 qemu-nbd.c          |  16 +++-
 qemu-nbd.texi       |   5 +-
 7 files changed, 233 insertions(+), 138 deletions(-)

-- 
2.5.5


Reply via email to