[libvirt] [PATCH] virfile: adds quobyte as a shared fs

Silvan Kaiser silvan at quobyte.com
Tue May 28 12:55:29 UTC 2019


Adds detection of a Quobyte shared file system for
live migration.

Signed-off-by: Silvan Kaiser <silvan at quobyte.com>
---
 src/util/virfile.c            | 13 ++++++++++++-
 src/util/virfile.h            |  1 +
 tests/virfiledata/mounts3.txt |  1 +
 tests/virfilemock.c           |  3 +++
 tests/virfiletest.c           |  1 +
 5 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/util/virfile.c b/src/util/virfile.c
index f7415cf633..a46b8792f6 100644
--- a/src/util/virfile.c
+++ b/src/util/virfile.c
@@ -3434,6 +3434,9 @@ int virFilePrintf(FILE *fp, const char *msg, ...)
 # ifndef GPFS_SUPER_MAGIC
 #  define GPFS_SUPER_MAGIC 0x47504653
 # endif
+# ifndef QB_MAGIC
+#  define QB_MAGIC 0x51626d6e
+# endif
 
 # define PROC_MOUNTS "/proc/mounts"
 
@@ -3490,6 +3493,10 @@ virFileIsSharedFixFUSE(const char *path,
         VIR_DEBUG("Found gluster FUSE mountpoint=%s for path=%s. "
                   "Fixing shared FS type", mntDir, canonPath);
         *f_type = GFS2_MAGIC;
+    } else if (STREQ_NULLABLE(mntType, "fuse.quobyte")) {
+        VIR_DEBUG("Found Quobyte FUSE mountpoint=%s for path=%s. "
+                  "Fixing shared FS type", mntDir, canonPath);
+        *f_type = QB_MAGIC;
     }
 
     ret = 0;
@@ -3582,6 +3589,9 @@ virFileIsSharedFSType(const char *path,
     if ((fstypes & VIR_FILE_SHFS_GPFS) &&
         (f_type == GPFS_SUPER_MAGIC))
         return 1;
+    if ((fstypes & VIR_FILE_SHFS_QB) &&
+        (f_type == QB_MAGIC))
+        return 1;
 
     return 0;
 }
@@ -3771,7 +3781,8 @@ int virFileIsSharedFS(const char *path)
                                  VIR_FILE_SHFS_SMB |
                                  VIR_FILE_SHFS_CIFS |
                                  VIR_FILE_SHFS_CEPH |
-                                 VIR_FILE_SHFS_GPFS);
+                                 VIR_FILE_SHFS_GPFS|
+                                 VIR_FILE_SHFS_QB);
 }
 
 
diff --git a/src/util/virfile.h b/src/util/virfile.h
index 641960e2ca..e06855ea86 100644
--- a/src/util/virfile.h
+++ b/src/util/virfile.h
@@ -212,6 +212,7 @@ enum {
     VIR_FILE_SHFS_CIFS = (1 << 5),
     VIR_FILE_SHFS_CEPH = (1 << 6),
     VIR_FILE_SHFS_GPFS = (1 << 7),
+    VIR_FILE_SHFS_QB = (1 << 8),
 };
 
 int virFileIsSharedFSType(const char *path, int fstypes) ATTRIBUTE_NONNULL(1);
diff --git a/tests/virfiledata/mounts3.txt b/tests/virfiledata/mounts3.txt
index 4377e5d471..b91804a4e4 100644
--- a/tests/virfiledata/mounts3.txt
+++ b/tests/virfiledata/mounts3.txt
@@ -36,3 +36,4 @@ root at host:/tmp/mkdir /gluster/sshfs fuse.sshfs rw 0 0
 192.168.0.1:/ceph/data /ceph ceph rw,noatime,name=cephfs,secret=<hidden>,acl,wsize=16777216 0 0
 192.168.0.1,192.168.0.2,192.168.0.3:/ceph/data2 /ceph/multi ceph rw,noatime,name=cephfs,secret=<hidden>,acl,wsize=16777216 0 0
 gpfs_data /gpfs/data gpfs rw,relatime 0 0
+quobyte at 192.168.0.1/data /quobyte fuse.quobyte rw,nosuid,nodev,noatime,user_id=0,group_id=0,allow_other 0 0
diff --git a/tests/virfilemock.c b/tests/virfilemock.c
index 106032f857..54c57d417b 100644
--- a/tests/virfilemock.c
+++ b/tests/virfilemock.c
@@ -92,6 +92,9 @@ setmntent(const char *filename, const char *type)
 #ifndef GPFS_SUPER_MAGIC
 # define GPFS_SUPER_MAGIC 0x47504653
 #endif
+# ifndef QB_MAGIC
+#  define QB_MAGIC 0x51626d6e
+# endif
 
 
 static int
diff --git a/tests/virfiletest.c b/tests/virfiletest.c
index e2bd4953ed..aa4c3435e5 100644
--- a/tests/virfiletest.c
+++ b/tests/virfiletest.c
@@ -458,6 +458,7 @@ mymain(void)
     DO_TEST_FILE_IS_SHARED_FS_TYPE("mounts3.txt", "/ceph/file", true);
     DO_TEST_FILE_IS_SHARED_FS_TYPE("mounts3.txt", "/ceph/multi/file", true);
     DO_TEST_FILE_IS_SHARED_FS_TYPE("mounts3.txt", "/gpfs/data", true);
+    DO_TEST_FILE_IS_SHARED_FS_TYPE("mounts3.txt", "/quobyte", true);
 
     return ret != 0 ? EXIT_FAILURE : EXIT_SUCCESS;
 }
-- 
2.16.5




More information about the libvir-list mailing list