[Libguestfs] [nbdkit PATCH v2] main: Add option to disable SR advertisement

Eric Blake eblake at redhat.com
Tue Aug 20 19:32:08 UTC 2019


On 8/20/19 2:28 PM, Eric Blake wrote:
> When we added support for .extents, we had nbdkit unconditionally
> support structured replies if the client requests them, and the
> plugin's .can_extents has no impact on what the server advertises.
> However, while the plugin API doesn't care whether the client
> requested SR, there are still integration situations where not
> advertising SR can be useful (such as comparison on what a client does
> with no block status vs. a block status that always reports
> allocated).  We already have the command line options -o/-n for
> tweaking core server functionality; add --no-sr to the mix.
> 
> In particular, doing this found that 'qemu-nbd --list' from qemu 4.2
> is rather picky: it hangs up on a server that replies with
> NBD_REP_ERR_POLICY, rather than silently proceeding without SR support
> (at least libnbd is more tolerant).
> 
> Signed-off-by: Eric Blake <eblake at redhat.com>
> ---
> 
> Looks much different as a command line option instead of a hack to
> the noextents filter, but I like the result a lot better.
> 
> I'm open to bike-shed opinions on the option name, or even if we want
> to emulate a tri-state option --protocol=[old|no-sr|new] (with -o and
> -n remaining synonyms for 2 of the 3 options for back-compat).  I
> purposefully did not burn a short-option letter on the new option, as
> it is unlikely to be commonly needed.
> 
>  docs/nbdkit-plugin.pod               |  5 +++-
>  docs/nbdkit-protocol.pod             | 21 ++++++++++++----
>  docs/nbdkit.pod                      | 12 ++++++++--
>  docs/synopsis.txt                    |  2 +-
>  server/internal.h                    |  1 +
>  server/options.h                     |  4 +++-
>  server/main.c                        |  5 ++++
>  server/protocol-handshake-newstyle.c | 14 +++++++++++
>  tests/test-eflags.sh                 | 36 ++++++++++++++++++++++++++++
>  9 files changed, 91 insertions(+), 9 deletions(-)

Oh, and I missed squashing this in:

diff --git i/filters/noextents/nbdkit-noextents-filter.pod
w/filters/noextents/nbdkit-noextents-filter.pod
index 47223928..9cc586ff 100644
--- i/filters/noextents/nbdkit-noextents-filter.pod
+++ w/filters/noextents/nbdkit-noextents-filter.pod
@@ -11,7 +11,11 @@ nbdkit-noextents-filter - disable extents in the
underlying plugin
 “Extents” are a feature of the NBD protocol / nbdkit which allow the
 client to detect sparse regions of the underlying disk.
 C<nbdkit-noextents-filter> disables this so that the plugin appears to
-be fully allocated.
+be fully allocated, at least to a client that requests structured
+replies.  It is also possible to use the I<--no-sr> option to nbdkit
+to prevent the client from using structured replies, which among its
+other side effects will prevent the client from querying extents at
+all.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20190820/32b74046/attachment.sig>


More information about the Libguestfs mailing list