[Libguestfs] [libnbd PATCH v2 06/12] info: Explicitly skip NBD_OPT_SET_META_CONTEXT in --list mode

Eric Blake
Wed, 31 Aug 2022 14:39:22 -0000

When listing information about an export, we do not use
nbd_block_status() or nbd_can_meta_context(), because we were already
utilizing the callback to nbd_opt_list_meta_context() to collect
supported context names.  In practice, because we also never called
nbd_add_meta_context() (important because nbd_opt_list_meta_context()
only outputs all possible contexts when passed an empty list on
input), we were not causing nbd_opt_info() to invoke
NBD_OPT_SET_META_CONTEXT (SET on an empty list selects nothing, so the
state machine short-circuits that step).  However, now that we have
the API to express our intentions, we might as well be explicit that
we don't need the server to set any contexts, even if such a change
does not impact the amount of traffic sent over the wire in list mode.
---
 info/list.c | 3 ++-
 info/show.c | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/info/list.c b/info/list.c
index 7646bf1..c2741ba 100644
--- a/info/list.c
+++ b/info/list.c
@@ -1,5 +1,5 @@
 /* NBD client library in userspace
- * Copyright (C) 2020-2021 Red Hat Inc.
+ * Copyright (C) 2020-2022 Red Hat Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -104,6 +104,7 @@ list_all_exports (void)
       }
       nbd_set_uri_allow_local_file (nbd2, true); /* Allow ?tls-psk-file. */
       nbd_set_opt_mode (nbd2, true);
+      nbd_set_request_meta_context (nbd2, false);
       nbd_set_full_info (nbd2, true);

       do_connect (nbd2);
diff --git a/info/show.c b/info/show.c
index 79038b0..4bf5967 100644
--- a/info/show.c
+++ b/info/show.c
@@ -1,5 +1,5 @@
 /* NBD client library in userspace
- * Copyright (C) 2020-2021 Red Hat Inc.
+ * Copyright (C) 2020-2022 Red Hat Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -65,6 +65,7 @@ show_one_export (struct nbd_handle *nbd, const char *desc,
    * advertising something it later refuses to serve), return rather
    * than exit, to allow output on the rest of the list.
    */
+  nbd_set_request_meta_context (nbd, false);
   if (nbd_aio_is_negotiating (nbd) &&
       nbd_opt_info (nbd) == -1 &&
       nbd_opt_go (nbd) == -1) {
--
2.37.2