]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
storage: Add the nfsvers to the command line
authorJohn Ferlan <jferlan@redhat.com>
Fri, 11 Jan 2019 18:42:18 +0000 (13:42 -0500)
committerJohn Ferlan <jferlan@redhat.com>
Wed, 30 Jan 2019 00:16:07 +0000 (19:16 -0500)
If protocolVer present, add the -o nfsvers=# to the command
line for the NFS Storage Pool

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
src/storage/storage_util.c
tests/storagepoolxml2argvdata/pool-netfs-protocol-ver-freebsd.argv [new file with mode: 0644]
tests/storagepoolxml2argvdata/pool-netfs-protocol-ver-linux.argv [new file with mode: 0644]
tests/storagepoolxml2argvdata/pool-netfs-protocol-ver.argv [new file with mode: 0644]
tests/storagepoolxml2argvtest.c

index d63237ce8fcfb2f40c4a3320817cdf1c59c5a3cf..a5cb47b4d0b6c5a864a7827b13e85ea889b7875f 100644 (file)
@@ -4290,10 +4290,11 @@ virStorageBackendFileSystemMountAddOptions(virCommandPtr cmd,
 static void
 virStorageBackendFileSystemMountNFSArgs(virCommandPtr cmd,
                                         const char *src,
-                                        virStoragePoolDefPtr def)
+                                        virStoragePoolDefPtr def,
+                                        const char *nfsVers)
 {
     virCommandAddArgList(cmd, src, def->target.path, NULL);
-    virStorageBackendFileSystemMountAddOptions(cmd, NULL);
+    virStorageBackendFileSystemMountAddOptions(cmd, nfsVers);
 }
 
 
@@ -4326,7 +4327,8 @@ virStorageBackendFileSystemMountCIFSArgs(virCommandPtr cmd,
 static void
 virStorageBackendFileSystemMountDefaultArgs(virCommandPtr cmd,
                                             const char *src,
-                                            virStoragePoolDefPtr def)
+                                            virStoragePoolDefPtr def,
+                                            const char *nfsVers)
 {
     const char *fmt;
 
@@ -4335,7 +4337,7 @@ virStorageBackendFileSystemMountDefaultArgs(virCommandPtr cmd,
     else
         fmt = virStoragePoolFormatFileSystemNetTypeToString(def->source.format);
     virCommandAddArgList(cmd, "-t", fmt, src, def->target.path, NULL);
-    virStorageBackendFileSystemMountAddOptions(cmd, NULL);
+    virStorageBackendFileSystemMountAddOptions(cmd, nfsVers);
 }
 
 
@@ -4354,16 +4356,21 @@ virStorageBackendFileSystemMountCmd(const char *cmdstr,
     bool cifsfs = (def->type == VIR_STORAGE_POOL_NETFS &&
                    def->source.format == VIR_STORAGE_POOL_NETFS_CIFS);
     virCommandPtr cmd = NULL;
+    VIR_AUTOFREE(char *) nfsVers = NULL;
+
+    if (def->type == VIR_STORAGE_POOL_NETFS && def->source.protocolVer > 0 &&
+        virAsprintf(&nfsVers, "nfsvers=%u", def->source.protocolVer) < 0)
+        return NULL;
 
     cmd = virCommandNew(cmdstr);
     if (netauto)
-        virStorageBackendFileSystemMountNFSArgs(cmd, src, def);
+        virStorageBackendFileSystemMountNFSArgs(cmd, src, def, nfsVers);
     else if (glusterfs)
         virStorageBackendFileSystemMountGlusterArgs(cmd, src, def);
     else if (cifsfs)
         virStorageBackendFileSystemMountCIFSArgs(cmd, src, def);
     else
-        virStorageBackendFileSystemMountDefaultArgs(cmd, src, def);
+        virStorageBackendFileSystemMountDefaultArgs(cmd, src, def, nfsVers);
     return cmd;
 }
 
diff --git a/tests/storagepoolxml2argvdata/pool-netfs-protocol-ver-freebsd.argv b/tests/storagepoolxml2argvdata/pool-netfs-protocol-ver-freebsd.argv
new file mode 100644 (file)
index 0000000..59d09d2
--- /dev/null
@@ -0,0 +1 @@
+mount -t nfs localhost:/var/lib/libvirt/images /mnt -o nosuid,noexec,nfsvers=3
diff --git a/tests/storagepoolxml2argvdata/pool-netfs-protocol-ver-linux.argv b/tests/storagepoolxml2argvdata/pool-netfs-protocol-ver-linux.argv
new file mode 100644 (file)
index 0000000..c819a08
--- /dev/null
@@ -0,0 +1,2 @@
+mount -t nfs localhost:/var/lib/libvirt/images /mnt -o nodev,nosuid,noexec,\
+nfsvers=3
diff --git a/tests/storagepoolxml2argvdata/pool-netfs-protocol-ver.argv b/tests/storagepoolxml2argvdata/pool-netfs-protocol-ver.argv
new file mode 100644 (file)
index 0000000..f26656d
--- /dev/null
@@ -0,0 +1 @@
+mount -t nfs localhost:/var/lib/libvirt/images /mnt -o nfsvers=3
index 0331d3497b90d478463ea1a7a1ed7bda09b0ba43..88059cbdfc700044f33f81b2a81149630c3dedad 100644 (file)
@@ -176,18 +176,21 @@ mymain(void)
     DO_TEST_LINUX("pool-fs");
     DO_TEST_LINUX("pool-netfs");
     DO_TEST_LINUX("pool-netfs-auto");
+    DO_TEST_LINUX("pool-netfs-protocol-ver");
     DO_TEST_LINUX("pool-netfs-gluster");
     DO_TEST_LINUX("pool-netfs-cifs");
 #elif defined(__FreeBSD__)
     DO_TEST_FREEBSD("pool-fs");
     DO_TEST_FREEBSD("pool-netfs");
     DO_TEST_FREEBSD("pool-netfs-auto");
+    DO_TEST_FREEBSD("pool-netfs-protocol-ver");
     DO_TEST_FREEBSD("pool-netfs-gluster");
     DO_TEST_FREEBSD("pool-netfs-cifs");
 #else
     DO_TEST("pool-fs");
     DO_TEST("pool-netfs");
     DO_TEST("pool-netfs-auto");
+    DO_TEST("pool-netfs-protocol-ver");
     DO_TEST("pool-netfs-gluster");
     DO_TEST("pool-netfs-cifs");
 #endif