]> xenbits.xensource.com Git - libvirt.git/commitdiff
storage: Fix build issue with MOUNT and VGCHANGE commands
authorJohn Ferlan <jferlan@redhat.com>
Thu, 13 Dec 2018 16:11:18 +0000 (11:11 -0500)
committerJohn Ferlan <jferlan@redhat.com>
Thu, 13 Dec 2018 17:42:36 +0000 (12:42 -0500)
Turns out there some build platforms that must not define MOUNT
or VGCHANGE in config.h... So moving the commands from the storage
backend specific module into a common storage_util module causes
issues for those platforms.

So instead of assuming they are there, let's just pass the command
string to the storage util API's from the storage backend specific
code (as would have been successful before).  Also modify the test
to determine whether the MOUNT and/or VGCHANGE doesn't exist and
just define it to (for example) what Fedora has for the path. Could
have just used "mount" and "vgchange" in the call, but that defeats
the purpose of adding the call to virTestClearCommandPath.

Signed-off-by: John Ferlan <jferlan@redhat.com>
src/storage/storage_backend_fs.c
src/storage/storage_backend_logical.c
src/storage/storage_util.c
src/storage/storage_util.h
tests/storagepoolxml2argvtest.c

index 905073f2e7ad19e23acd6883a3de3573f9bed473..dc9869417e1aed9e536c6664e888be4be8f40807 100644 (file)
@@ -328,7 +328,7 @@ virStorageBackendFileSystemMount(virStoragePoolObjPtr pool)
     if (!(src = virStorageBackendFileSystemGetPoolSource(pool)))
         return -1;
 
-    cmd = virStorageBackendFileSystemMountCmd(def, src);
+    cmd = virStorageBackendFileSystemMountCmd(MOUNT, def, src);
     if (virCommandRun(cmd, NULL) < 0)
         goto cleanup;
 
index b75e8ae5d9e162801a80dc81bdadaabf008fc4a3..fd95bd0d48ed9a13147f529938aab76271291031 100644 (file)
@@ -50,7 +50,7 @@ virStorageBackendLogicalSetActive(virStoragePoolObjPtr pool,
 {
     int ret;
     virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool);
-    virCommandPtr cmd = virStorageBackendLogicalChangeCmd(def, on);
+    virCommandPtr cmd = virStorageBackendLogicalChangeCmd(VGCHANGE, def, on);
 
     ret = virCommandRun(cmd, NULL);
     virCommandFree(cmd);
index 01f3c93008222c08386da20ac0f0bab433195429..a84ee5b60071825d82c7d55048b74582fba2949d 100644 (file)
@@ -4312,7 +4312,8 @@ virStorageBackendFileSystemMountDefaultArgs(virCommandPtr cmd,
 
 
 virCommandPtr
-virStorageBackendFileSystemMountCmd(virStoragePoolDefPtr def,
+virStorageBackendFileSystemMountCmd(const char *cmdstr,
+                                    virStoragePoolDefPtr def,
                                     const char *src)
 {
     /* 'mount -t auto' doesn't seem to auto determine nfs (or cifs),
@@ -4326,7 +4327,7 @@ virStorageBackendFileSystemMountCmd(virStoragePoolDefPtr def,
                    def->source.format == VIR_STORAGE_POOL_NETFS_CIFS);
     virCommandPtr cmd = NULL;
 
-    cmd = virCommandNew(MOUNT);
+    cmd = virCommandNew(cmdstr);
     if (netauto)
         virStorageBackendFileSystemMountNFSArgs(cmd, src, def);
     else if (glusterfs)
@@ -4340,10 +4341,11 @@ virStorageBackendFileSystemMountCmd(virStoragePoolDefPtr def,
 
 
 virCommandPtr
-virStorageBackendLogicalChangeCmd(virStoragePoolDefPtr def,
+virStorageBackendLogicalChangeCmd(const char *cmdstr,
+                                  virStoragePoolDefPtr def,
                                   bool on)
 {
-    return virCommandNewArgList(VGCHANGE,
+    return virCommandNewArgList(cmdstr,
                                 on ? "-aly" : "-aln",
                                 def->source.name,
                                 NULL);
index a2ef2ac07da121f7f9047636240892473816467c..d0cb5d988410019b00bedc1fd335bf36e65c5353 100644 (file)
@@ -181,11 +181,13 @@ char *
 virStorageBackendFileSystemGetPoolSource(virStoragePoolObjPtr pool);
 
 virCommandPtr
-virStorageBackendFileSystemMountCmd(virStoragePoolDefPtr def,
+virStorageBackendFileSystemMountCmd(const char *cmdstr,
+                                    virStoragePoolDefPtr def,
                                     const char *src);
 
 virCommandPtr
-virStorageBackendLogicalChangeCmd(virStoragePoolDefPtr def,
+virStorageBackendLogicalChangeCmd(const char *cmdstr,
+                                  virStoragePoolDefPtr def,
                                   bool on);
 
 #endif /* __VIR_STORAGE_UTIL_H__ */
index 534cb2114473afe7da9013e5b46e1bf93b82b076..196989cb6d7db11a7ba9660505416095918d2277 100644 (file)
@@ -9,6 +9,13 @@
 
 #define VIR_FROM_THIS VIR_FROM_NONE
 
+#ifndef MOUNT
+# define MOUNT "/usr/bin/mount"
+#endif
+
+#ifndef VGCHANGE
+# define VGCHANGE "/usr/sbin/vgchange"
+#endif
 
 static int
 testCompareXMLToArgvFiles(bool shouldFail,
@@ -40,11 +47,11 @@ testCompareXMLToArgvFiles(bool shouldFail,
             goto cleanup;
         }
 
-        cmd = virStorageBackendFileSystemMountCmd(def, src);
+        cmd = virStorageBackendFileSystemMountCmd(MOUNT, def, src);
         break;
 
     case VIR_STORAGE_POOL_LOGICAL:
-        cmd = virStorageBackendLogicalChangeCmd(def, true);
+        cmd = virStorageBackendLogicalChangeCmd(VGCHANGE, def, true);
         break;
 
     case VIR_STORAGE_POOL_DIR: