[Libguestfs] [libnbd PATCH v3 06/18] api: Add nbd_[aio_]opt_list_meta_context_queries

Eric Blake eblake at redhat.com
Tue Sep 27 21:09:58 UTC 2022


On Mon, Sep 26, 2022 at 05:05:48PM -0500, Eric Blake wrote:
> Rather than always relying on the implicit global list managed by
> nbd_add_meta_context() and nbd_clear_meta_contexts(), we can take the
> user's list of contexts as a direct parameter.  This finally makes use
> of the non-NULL queries parameter of the nbd_internal_set_querylist()
> added in a previous patch.
> 
> The C test is added along with this commit (applying the new test
> independently wouldn't compile), but the language bindings are done
> separately for ease of review.
> ---

> +++ b/tests/opt-list-meta-queries.c

> +  /* Get into negotiating state. */
> +  nbd = nbd_create ();
> +  if (nbd == NULL ||
> +      nbd_set_opt_mode (nbd, true) == -1 ||
> +      nbd_connect_command (nbd, args) == -1) {
> +    fprintf (stderr, "%s\n", nbd_get_error ());
> +    exit (EXIT_FAILURE);
> +  }
> +
> +  /* A NULL query is an error (C-only test) */
> +  p = (struct progress) { .count = 0 };
> +  r = nbd_opt_list_meta_context_queries (nbd, NULL, ctx);
> +  if (r != -1 || nbd_get_errno () != EFAULT) {
> +    fprintf (stderr, "expected EFAULT for NULL query list\n");
> +    exit (EXIT_FAILURE);
> +  }
> +  if (p.count != 0 || p.seen) {
> +    fprintf (stderr, "unexpected use of callback on failure\n");
> +    exit (EXIT_FAILURE);
> +  }

Actually, once I weaken patch 1/18 to not trigger EFAULT on NULL
StringList, this currently behaves the same as calling
nbd_opt_list_meta_context() (that is, reusing the global
nbd_add_meta_context() list); that is equally confusing, and we may
decide that it is better to treat NULL the same as an explicit empty
list rather than going back to the global implicit list.  Since there
will probably be followup patches, for now I'm just changing this from
testing a specific behavior to instead being a FIXME comment reminding
us to revisit it once we decide how to consistently handle NULL
arguments.

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


More information about the Libguestfs mailing list