]> git.proxmox.com Git - mirror_qemu.git/commit
nbd/client: Trace server noncompliance on structured reads
authorEric Blake <eblake@redhat.com>
Sat, 30 Mar 2019 16:53:49 +0000 (11:53 -0500)
committerEric Blake <eblake@redhat.com>
Mon, 1 Apr 2019 13:58:04 +0000 (08:58 -0500)
commit75d34eb98ca0bb2f49d607fcaefd9c482e56b15d
tree647d88581930fed3c16baf82cd4d9c816ea59024
parentb0245d6478ea5906e3d7a542244d5c015fd47bc7
nbd/client: Trace server noncompliance on structured reads

Just as we recently added a trace for a server sending block status
that doesn't match the server's advertised minimum block alignment,
let's do the same for read chunks.  But since qemu 3.1 is such a
server (because it advertised 512-byte alignment, but when serving a
file that ends in data but is not sector-aligned, NBD_CMD_READ would
detect a mid-sector change between data and hole at EOF and the
resulting read chunks are unaligned), we don't want to change our
behavior of otherwise tolerating unaligned reads.

Note that even though we fixed the server for 4.0 to advertise an
actual block alignment (which gets rid of the unaligned reads at EOF
for posix files), we can still trigger it via other means:

$ qemu-nbd --image-opts driver=blkdebug,align=512,image.driver=file,image.filename=/path/to/non-aligned-file

Arguably, that is a bug in the blkdebug block status function, for
leaking a block status that is not aligned. It may also be possible to
observe issues with a backing layer with smaller alignment than the
active layer, although so far I have been unable to write a reliable
iotest for that scenario.

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190330165349.32256-1-eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
block/nbd-client.c
block/trace-events