<div dir="ltr">+1 LGTM.<div>Thanks Richard.</div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Sep 21, 2018 at 12:53 PM Richard W.M. Jones <<a href="mailto:rjones@redhat.com">rjones@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><a href="https://bugs.launchpad.net/qemu/+bug/1740364" rel="noreferrer" target="_blank">https://bugs.launchpad.net/qemu/+bug/1740364</a><br>
---<br>
 lib/guestfs-internal.h |  3 +++<br>
 lib/handle.c           |  2 ++<br>
 lib/info.c             | 39 +++++++++++++++++++++++++++++++++++++++<br>
 3 files changed, 44 insertions(+)<br>
<br>
diff --git a/lib/guestfs-internal.h b/lib/guestfs-internal.h<br>
index adeb9478a..c66c55e70 100644<br>
--- a/lib/guestfs-internal.h<br>
+++ b/lib/guestfs-internal.h<br>
@@ -510,6 +510,9 @@ struct guestfs_h {<br>
   /* Cached features. */<br>
   struct cached_feature *features;<br>
   size_t nr_features;<br>
+<br>
+  /* Used by lib/info.c.  -1 = not tested or error; else 0 or 1. */<br>
+  int qemu_img_supports_U_option;<br>
 };<br>
<br>
 /**<br>
diff --git a/lib/handle.c b/lib/handle.c<br>
index a47aaafab..297ff6d67 100644<br>
--- a/lib/handle.c<br>
+++ b/lib/handle.c<br>
@@ -101,6 +101,8 @@ guestfs_create_flags (unsigned flags, ...)<br>
<br>
   g->memsize = DEFAULT_MEMSIZE;<br>
<br>
+  g->qemu_img_supports_U_option = -1; /* not tested, see lib/info.c */<br>
+<br>
   /* Start with large serial numbers so they are easy to spot<br>
    * inside the protocol.<br>
    */<br>
diff --git a/lib/info.c b/lib/info.c<br>
index 2eadc1c11..74e4424b8 100644<br>
--- a/lib/info.c<br>
+++ b/lib/info.c<br>
@@ -57,6 +57,7 @@ cleanup_json_t_decref (void *ptr)<br>
 #endif<br>
<br>
 static json_t *get_json_output (guestfs_h *g, const char *filename);<br>
+static int qemu_img_supports_U_option (guestfs_h *g);<br>
 static void set_child_rlimits (struct command *);<br>
<br>
 char *<br>
@@ -149,6 +150,11 @@ get_json_output (guestfs_h *g, const char *filename)<br>
<br>
   guestfs_int_cmd_add_arg (cmd, "qemu-img");<br>
   guestfs_int_cmd_add_arg (cmd, "info");<br>
+  switch (qemu_img_supports_U_option (g)) {<br>
+  case -1: return NULL;<br>
+  case 0:  break;<br>
+  default: guestfs_int_cmd_add_arg (cmd, "-U");<br>
+  }<br>
   guestfs_int_cmd_add_arg (cmd, "--output");<br>
   guestfs_int_cmd_add_arg (cmd, "json");<br>
   if (filename[0] == '/')<br>
@@ -218,3 +224,36 @@ set_child_rlimits (struct command *cmd)<br>
   guestfs_int_cmd_set_child_rlimit (cmd, RLIMIT_CPU, 10 /* seconds */);<br>
 #endif<br>
 }<br>
+<br>
+/**<br>
+ * Test if the qemu-img info command supports the C<-U> option to<br>
+ * disable locking.  The result is memoized in the handle.<br>
+ *<br>
+ * Note this option was added in qemu 2.11.  We can remove this test<br>
+ * when we can assume everyone is using qemu >= 2.11.<br>
+ */<br>
+static int<br>
+qemu_img_supports_U_option (guestfs_h *g)<br>
+{<br>
+  if (g->qemu_img_supports_U_option >= 0)<br>
+    return g->qemu_img_supports_U_option;<br>
+<br>
+  CLEANUP_CMD_CLOSE struct command *cmd = guestfs_int_new_command (g);<br>
+  int r;<br>
+<br>
+  guestfs_int_cmd_add_string_unquoted (cmd,<br>
+                                       "qemu-img info --help | "<br>
+                                       "grep -sq -- 'info.*-U'");<br>
+  r = guestfs_int_cmd_run (cmd);<br>
+  if (r == -1)<br>
+    return -1;<br>
+  if (!WIFEXITED (r)) {<br>
+    guestfs_int_external_command_failed (g, r,<br>
+                                         "qemu-img info -U option test",<br>
+                                         NULL);<br>
+    return -1;<br>
+  }<br>
+<br>
+  g->qemu_img_supports_U_option = WEXITSTATUS (r) == 0;<br>
+  return g->qemu_img_supports_U_option;<br>
+}<br>
-- <br>
2.19.0.rc0<br>
<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><font face="overpass, sans-serif" color="#000000" size="2"><span style="text-transform:uppercase"><b>GAL bEN HAIM</b></span></font><div><span style="color:rgb(0,0,0);font-family:overpass,sans-serif;text-transform:uppercase"><font size="2">RHV DEVOPS</font></span><br></div></div></div>