qemu-e2k/nbd
Eric Blake 7c6f5ddca6 nbd/client: Work around 3.0 bug for listing meta contexts
Commit 3d068aff forgot to advertise available qemu: contexts
when the client requests a list with 0 queries. Furthermore,
3.0 shipped with a qemu-img hack of x-dirty-bitmap (commit
216ee365) that _silently_ acts as though the entire image is
clean if a requested bitmap is not present.  Both bugs have
been recently fixed, so that a modern qemu server gives full
context output right away, and the client refuses a
connection if a requested x-dirty-bitmap was not found.

Still, it is likely that there will be users that have to
work with a mix of old and new qemu versions, depending on
which features get backported where, at which point being
able to rely on 'qemu-img --list' output to know for sure
whether a given NBD export has the desired dirty bitmap is
much nicer than blindly connecting and risking that the
entire image may appear clean.  We can make our --list code
smart enough to work around buggy servers by tracking
whether we've seen any qemu: replies in the original 0-query
list; if not, repeat with a single query on "qemu:" (which
may still have no replies, but then we know for sure we
didn't trip up on the server bug).

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20190117193658.16413-21-eblake@redhat.com>
2019-01-21 15:49:52 -06:00
..
Makefile.objs nbd: Split nbd.c 2016-01-15 18:58:02 +01:00
client.c nbd/client: Work around 3.0 bug for listing meta contexts 2019-01-21 15:49:52 -06:00
common.c nbd/server: introduce NBD_CMD_CACHE 2018-06-21 09:41:39 -05:00
nbd-internal.h nbd/client: Drop pointless buf variable 2019-01-05 07:53:22 -06:00
server.c nbd/server: Favor [u]int64_t over off_t 2019-01-21 15:49:51 -06:00
trace-events nbd/client: Refactor nbd_opt_go() to support NBD_OPT_INFO 2019-01-21 15:49:52 -06:00