On 10/2/20 8:20 AM, Eric Blake wrote: > Use the just-added nbd_opt_list_meta_context() API to give more > details about each export (matching what 'qemu-nbd --list' already > does). Note that this requires some shuffling: listing meta exports > requires being in opt mode, but is easiest to do in list_one_export(), > which requires setting opt_mode in more code paths, and deferring > ready mode until the last possible minute during get_content(). > > As written, the code displays the list in reverse order from how the > server presented it, thanks to my use of a simple linked list. We > could use a different data type if we don't like the data being > reversed, although the information being presented really is a set > with no inherent meaning to its presentation order. > ---
> @@ -368,8 +396,15 @@ list_one_export (struct nbd_handle *nbd, const char > *desc, > int can_cache, can_df, can_fast_zero, can_flush, can_fua, > can_multi_conn, can_trim, can_zero; > int64_t block_minimum, block_preferred, block_maximum; > + struct context_list *contexts = NULL; > + bool show_context = false; > > /* Collect the metadata we are going to display. */ > + if (nbd_aio_is_negotiating (nbd) && > + nbd_opt_info (nbd) == -1) { > + fprintf (stderr, "%s\n", nbd_get_error ()); > + exit (EXIT_FAILURE); > + } For the record: this failed on a server with legacy "newstyle" protocol (nbdkit --mask-handshake=0) - such a server lacks nbd_opt_info support, and you HAVE to use nbd_opt_go to get size and other details. But when I fixed this line, it in turn flushed out an assertion failure present since 1.4 (now fixed) where nbd_opt_go() on a legacy newstyle accessed uninitialized memory, and nbd_aio_opt_go() could leak resources, because of a forgotten completion callback invocation. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs