On Sat, Mar 23, 2019 at 06:57:14AM -0500, Eric Blake wrote:
On 3/23/19 6:42 AM, Richard W.M. Jones wrote:
> (b) Try and get it fixed in RHEL. I filed a BZ already but I guess it
> won't be fixed any time soon:
https://bugzilla.redhat.com/1692018
Several RHEL 7 bugs against NBD are pending - there's hope for RHEL 7.7,
but you are also right that guessing timelines is hard.
Yes, my worry is that if we miss 7.7 then this bug will exist forever
since as far as I know we (Red Hat) are not planning any further qemu
improvements in 7.8 and above.
> (c) Add a workaround in nbdkit.
>
And what workaround would that be? Looking at the qemu patch, the
problem is that qemu asked for "base:allocation" and nbdkit replied with
0 contexts. The workaround would either be to reply with
NBD_REP_ERR_UNSUP (the behavior before NBD_OPT_SET_META_CONTEXT was
added), or to implement "base:allocation" (even if we implement the
poor-man's version that always reports that the entire image is data,
for all requests, without any feedback from the plugins). The former
feels odd, but the latter seems oddly appealing as progress towards our
end goal (kind of how our initial implementation of NBD_CMD_WRITE_ZEROES
was always advertised even before we finished wiring up plug support).
A good point here is what happens with the block-status branch[1].
Let's see:
$ ./nbdkit memory size=64M --run '/home/rjones/d/qemu/qemu-img convert $nbd
/var/tmp/out'
qemu-img: Payload too large
nbdkit: memory.1: error: write reply: NBD_CMD_BLOCK_STATUS: Broken pipe
Oh dear. I believe this is actually a bug in the block status code so
let's see if I can narrow this down first ...
Rich.
[1]
https://github.com/rwmjones/nbdkit/tree/block-status
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html