On Thu, Jun 13, 2019 at 6:14 PM Eric Blake <eblake@xxxxxxxxxx> wrote: > > On 6/13/19 9:45 AM, Roman Stratiienko wrote: > > >> > >> Just throw nbd-client in your initramfs. Every nbd server has it's own > >> handshake protocol, embedding one particular servers handshake protocol into the > >> kernel isn't the answer here. Thanks, > > The handshake protocol is well-specified: > https://github.com/NetworkBlockDevice/nbd/blob/cdb0bc57f3faefd7a5562d57ad57cd990781c415/doc/proto.md > > All servers implement various subsets of that document for the handshake. > > > Also, as far as I know mainline nbd-server daemon have only 2 > > handshake protocols. So called OLD-STYLE and NEW-STYLE. And OLD-STYLE > > is no longer supported. So it should not be a problem, or please fix > > me if I'm wrong. > > You are correct that oldstyle is no longer recommended. However, the > current NBD specification states that newstyle has two different > flavors, NBD_OPT_EXPORT_NAME (which you used, but is also old) and > NBD_OPT_GO (which is newer, but is more likely to encounter differences > where not all servers support it). > > The NBD specification includes a compatibility baseline: > https://github.com/NetworkBlockDevice/nbd/blob/cdb0bc57f3faefd7a5562d57ad57cd990781c415/doc/proto.md#compatibility-and-interoperability > > and right now, NBD_OPT_GO (and _not_ NBD_OPT_EXPORT_NAME) is the > preferred way forward. As long as your handshake implementation > complies with the baseline documented there, you'll have maximum > portability to the largest number of servers that also support the > baseline - but not all servers are up to that baseline yet. > > So, this becomes a question of how much are you reinventing baseline > portability handshake concerns in the kernel, vs. in initramfs. > > -- > Eric Blake, Principal Software Engineer > Red Hat, Inc. +1-919-301-3226 > Virtualization: qemu.org | libvirt.org > Thank you for the review comments, I will address them in v2. -- Regards, Roman