• E
    nbd: Implement NBD_OPT_GO on client · 8ecaeae8
    Eric Blake 提交于
    NBD_OPT_EXPORT_NAME is lousy: per the NBD protocol, any failure
    requires the server to close the connection rather than report an
    error to us.  Therefore, upstream NBD recently added NBD_OPT_GO as
    the improved version of the option that does what we want [1]: it
    reports sane errors on failures, and on success provides at least
    as much info as NBD_OPT_EXPORT_NAME.
    
    [1] https://github.com/NetworkBlockDevice/nbd/blob/extension-info/doc/proto.md
    
    This is a first cut at use of the information types.  Note that we
    do not need to use NBD_OPT_INFO, and that use of NBD_OPT_GO means
    we no longer have to use NBD_OPT_LIST to learn whether a server
    requires TLS (this requires servers that gracefully handle unknown
    NBD_OPT, many servers prior to qemu 2.5 were buggy, but I have patched
    qemu, upstream nbd, and nbdkit in the meantime, in part because of
    interoperability testing with this patch).  We still fall back to
    NBD_OPT_LIST when NBD_OPT_GO is not supported on the server, as it
    is still one last chance for a nicer error message.  Later patches
    will use further info, like NBD_INFO_BLOCK_SIZE.
    Signed-off-by: NEric Blake <eblake@redhat.com>
    Message-Id: <20170707203049.534-8-eblake@redhat.com>
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    8ecaeae8
client.c 26.7 KB