[libvirt] [PATCH] Extra filesystem options during backend filesystem mount.

Harshavardhana harsha at gluster.com
Thu Jul 16 13:06:25 UTC 2009


New option index added to support -o options for various netfs. 
Currently added an option for glusterfs. 

---
 src/storage_backend_fs.c |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/src/storage_backend_fs.c b/src/storage_backend_fs.c
index c3d66b5..606fb47 100644
--- a/src/storage_backend_fs.c
+++ b/src/storage_backend_fs.c
@@ -604,6 +604,7 @@ static int
 virStorageBackendFileSystemMount(virConnectPtr conn,
                                  virStoragePoolObjPtr pool) {
     char *src;
+    char *options;
     const char **mntargv;
 
     /* 'mount -t auto' doesn't seem to auto determine nfs (or cifs),
@@ -611,6 +612,10 @@ virStorageBackendFileSystemMount(virConnectPtr conn,
      *  accommodate this */
     int netauto = (pool->def->type == VIR_STORAGE_POOL_NETFS &&
                    pool->def->source.format == VIR_STORAGE_POOL_NETFS_AUTO);
+    int glusterfs = (pool->def->type == VIR_STORAGE_POOL_NETFS && 
+                     pool->def->source.format == VIR_STORAGE_POOL_NETFS_GLUSTERFS);
+
+    int option_index;
     int source_index;
 
     const char *netfs_auto_argv[] = {
@@ -632,9 +637,26 @@ virStorageBackendFileSystemMount(virConnectPtr conn,
         NULL,
     };
 
+    const char *glusterfs_argv[] = {
+        MOUNT,
+        "-t",
+        pool->def->type == VIR_STORAGE_POOL_FS ?
+        virStoragePoolFormatFileSystemTypeToString(pool->def->source.format) :
+        virStoragePoolFormatFileSystemNetTypeToString(pool->def->source.format),
+        NULL,
+        "-o",
+        NULL,
+        pool->def->target.path,
+        NULL,
+    };
+
     if (netauto) {
         mntargv = netfs_auto_argv;
         source_index = 1;
+    } else if (glusterfs) {
+        mntargv = glusterfs_argv;
+        source_index = 3;
+        option_index = 5;
     } else {
         mntargv = fs_argv;
         source_index = 3;
@@ -670,6 +692,12 @@ virStorageBackendFileSystemMount(virConnectPtr conn,
     }
 
     if (pool->def->type == VIR_STORAGE_POOL_NETFS) {
+        if (pool->def->source.format = VIR_STORAGE_POOL_NETFS_GLUSTERFS) {
+            if (virAsprintf(&options, "direct-io-mode=1") == -1) {
+                virReportOOMError(conn);
+                return -1;
+            }
+        }
         if (virAsprintf(&src, "%s:%s",
                         pool->def->source.host.name,
                         pool->def->source.dir) == -1) {
@@ -685,6 +713,10 @@ virStorageBackendFileSystemMount(virConnectPtr conn,
     }
     mntargv[source_index] = src;
 
+    if (glusterfs) {
+        mntargv[option_index] = options;
+    }
+
     if (virRun(conn, mntargv, NULL) < 0) {
         VIR_FREE(src);
         return -1;
-- 
1.6.0.6




More information about the libvir-list mailing list