[Libguestfs] [PATCH nbdkit] vddk: Add support for VIXDISKLIB_FLAG_OPEN_UNBUFFERED.

Richard W.M. Jones rjones at redhat.com
Fri Apr 5 09:52:47 UTC 2019


---
 plugins/vddk/nbdkit-vddk-plugin.pod |  6 ++++++
 plugins/vddk/vddk-structs.h         |  1 +
 plugins/vddk/vddk.c                 | 10 ++++++++++
 3 files changed, 17 insertions(+)

diff --git a/plugins/vddk/nbdkit-vddk-plugin.pod b/plugins/vddk/nbdkit-vddk-plugin.pod
index 25a6511..49ac4a8 100644
--- a/plugins/vddk/nbdkit-vddk-plugin.pod
+++ b/plugins/vddk/nbdkit-vddk-plugin.pod
@@ -10,6 +10,7 @@ nbdkit-vddk-plugin - nbdkit VMware VDDK plugin
              [cookie=COOKIE] [thumbprint=THUMBPRINT]
              [port=PORT] [nfchostport=PORT] [single-link=true]
              [snapshot=MOREF] [transports=MODE:MODE:...]
+             [unbuffered=true]
  nbdkit vddk --dump-plugin
 
 =head1 DESCRIPTION
@@ -164,6 +165,11 @@ values include ‘nbd’, ‘nbdssl’, ‘san’, ‘hotadd’, ‘file’ (the
 others).  If not given, VDDK will try to choose the best transport
 mode.
 
+=item B<unbuffered=true>
+
+Optional.  Disable host caching.  This corresponds to the
+C<VIXDISKLIB_FLAG_OPEN_UNBUFFERED> flag.
+
 =item B<user=>USERNAME
 
 Optional (required for remote connections).  The username to connect
diff --git a/plugins/vddk/vddk-structs.h b/plugins/vddk/vddk-structs.h
index bc68ac6..2469222 100644
--- a/plugins/vddk/vddk-structs.h
+++ b/plugins/vddk/vddk-structs.h
@@ -43,6 +43,7 @@
 typedef uint64_t VixError;
 #define VIX_OK 0
 
+#define VIXDISKLIB_FLAG_OPEN_UNBUFFERED 1
 #define VIXDISKLIB_FLAG_OPEN_SINGLE_LINK 2
 #define VIXDISKLIB_FLAG_OPEN_READ_ONLY 4
 #define VIXDISKLIB_SECTOR_SIZE 512
diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
index c3061e9..b9b3d4a 100644
--- a/plugins/vddk/vddk.c
+++ b/plugins/vddk/vddk.c
@@ -95,6 +95,7 @@ static bool single_link = false;           /* single-link */
 static const char *snapshot_moref = NULL;  /* snapshot */
 static const char *thumb_print = NULL;     /* thumbprint */
 static const char *transport_modes = NULL; /* transports */
+static bool unbuffered = false;            /* unbuffered */
 static const char *username = NULL;        /* user */
 static const char *vmx_spec = NULL;        /* vm */
 static bool is_remote = false;
@@ -271,6 +272,13 @@ vddk_config (const char *key, const char *value)
   else if (strcmp (key, "transports") == 0) {
     transport_modes = value;
   }
+  else if (strcmp (key, "unbuffered") == 0) {
+    int r = nbdkit_parse_bool (value);
+
+    if (r == -1)
+      return -1;
+    unbuffered = r;
+  }
   else if (strcmp (key, "user") == 0) {
     username = value;
   }
@@ -474,6 +482,8 @@ vddk_open (int readonly)
     flags |= VIXDISKLIB_FLAG_OPEN_READ_ONLY;
   if (single_link)
     flags |= VIXDISKLIB_FLAG_OPEN_SINGLE_LINK;
+  if (unbuffered)
+    flags |= VIXDISKLIB_FLAG_OPEN_UNBUFFERED;
 
   DEBUG_CALL ("VixDiskLib_Open",
               "connection, %s, %d, &handle", filename, flags);
-- 
2.20.1




More information about the Libguestfs mailing list