On 3/23/19 9:40 AM, Richard W.M. Jones wrote: > On Sat, Mar 23, 2019 at 09:24:55AM -0500, Eric Blake wrote: >> The NBD spec is clear that when structured replies are active, a >> simple error reply is acceptable to any command except for >> NBD_CMD_READ. However, we were mistakenly requiring structured errors >> for NBD_CMD_BLOCK_STATUS, and hanging up on a server that gave a >> simple error (since qemu does not behave as such a server, we didn't >> notice the problem until now). Broken since its introduction in >> commit 78a33ab5 (v2.12). >> >> Howeve, even if we had gotten it correct to accept simple errors back > > "However" > >> then, we run into another problem: the client treats the server's >> reply as fatal and hangs up on the connection, instead of merely >> failing the block status request but being ready for the next >> command. Broken in commit 7f86068d (unreleased). > > This latter part fixes the silent qemu client disconnection that > happens when the server sends back a large number of extents in a > single block status reply?
Not sure - our mails crossed, so I have not reproduced that failure mode yet to know if this patch helps there, or if I'll need another patch. > >> Signed-off-by: Eric Blake <ebl...@redhat.com> >> --- >> >> I confirmed that when backporting things for qemu 2.12 through 3.1, >> the first hunk is sufficient to let clients tolerate a simple error >> without hanging up (the second hunk is only required for the 4.0 code >> base). >> >> Rich - if you choose to make nbdkit work around the qemu 2.12 bug >> where it refuses to communicate with a server that supports >> NBD_OPT_SET_META_CONTEXT but not base:allocation, you'll also want to >> make sure that you send a structured error instead of a simple error >> to any failures of NBD_CMD_BLOCK_STATUS. > > OK, got it. However I think I'd prefer to see how it goes fixing qemu > in RHEL 7 first. Indeed, if RHEL 7 picks up the various NBD patches from qemu 2.12 onwards, it will probably pick up this one as well, at which point nbdkit shouldn't have to worry about workarounds. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature