[PATCH 1/8] storage: Extract out mount command creation for FS Backend

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Extract out the code that is used to create the MOUNT command
for starting the pool. We can use this for Storage Pool XML
to Argv testing to ensure code changes don't alter how a
storage pool is started.

Signed-off-by: John Ferlan <jferlan@xxxxxxxxxx>
---
 src/storage/storage_backend_fs.c | 70 +++++++++++++++++++-------------
 1 file changed, 41 insertions(+), 29 deletions(-)

diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
index 0837443391..4bf411b330 100644
--- a/src/storage/storage_backend_fs.c
+++ b/src/storage/storage_backend_fs.c
@@ -330,19 +330,11 @@ virStorageBackendFileSystemIsMounted(virStoragePoolObjPtr pool)
     return ret;
 }
 
-/**
- * @pool storage pool to mount
- *
- * Ensure that a FS storage pool is mounted on its target location.
- * If already mounted, this is a no-op
- *
- * Returns 0 if successfully mounted, -1 on error
- */
-static int
-virStorageBackendFileSystemMount(virStoragePoolObjPtr pool)
+
+static virCommandPtr
+virStorageBackendFileSystemMountCmd(virStoragePoolDefPtr def,
+                                    const char *src)
 {
-    virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool);
-    char *src = NULL;
     /* 'mount -t auto' doesn't seem to auto determine nfs (or cifs),
      *  while plain 'mount' does. We have to craft separate argvs to
      *  accommodate this */
@@ -353,23 +345,6 @@ virStorageBackendFileSystemMount(virStoragePoolObjPtr pool)
     bool cifsfs = (def->type == VIR_STORAGE_POOL_NETFS &&
                    def->source.format == VIR_STORAGE_POOL_NETFS_CIFS);
     virCommandPtr cmd = NULL;
-    int ret = -1;
-    int rc;
-
-    if (virStorageBackendFileSystemIsValid(pool) < 0)
-        return -1;
-
-    if ((rc = virStorageBackendFileSystemIsMounted(pool)) < 0)
-        return -1;
-
-    /* Short-circuit if already mounted */
-    if (rc == 1) {
-        VIR_INFO("Target '%s' is already mounted", def->target.path);
-        return 0;
-    }
-
-    if (!(src = virStorageBackendFileSystemGetPoolSource(pool)))
-        return -1;
 
     if (netauto)
         cmd = virCommandNewArgList(MOUNT,
@@ -404,6 +379,43 @@ virStorageBackendFileSystemMount(virStoragePoolObjPtr pool)
                                    def->target.path,
                                    NULL);
 
+    return cmd;
+}
+
+
+/**
+ * @pool storage pool to mount
+ *
+ * Ensure that a FS storage pool is mounted on its target location.
+ * If already mounted, this is a no-op
+ *
+ * Returns 0 if successfully mounted, -1 on error
+ */
+static int
+virStorageBackendFileSystemMount(virStoragePoolObjPtr pool)
+{
+    virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool);
+    char *src = NULL;
+    virCommandPtr cmd = NULL;
+    int ret = -1;
+    int rc;
+
+    if (virStorageBackendFileSystemIsValid(pool) < 0)
+        return -1;
+
+    if ((rc = virStorageBackendFileSystemIsMounted(pool)) < 0)
+        return -1;
+
+    /* Short-circuit if already mounted */
+    if (rc == 1) {
+        VIR_INFO("Target '%s' is already mounted", def->target.path);
+        return 0;
+    }
+
+    if (!(src = virStorageBackendFileSystemGetPoolSource(pool)))
+        return -1;
+
+    cmd = virStorageBackendFileSystemMountCmd(def, src);
     if (virCommandRun(cmd, NULL) < 0)
         goto cleanup;
 
-- 
2.17.2

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux