c313de
From fca427057cfad652bd787096b9af94d273c69185 Mon Sep 17 00:00:00 2001
c313de
Message-Id: <fca427057cfad652bd787096b9af94d273c69185@dist-git>
c313de
From: Diego Michelotto <diego.michelotto@cnaf.infn.it>
c313de
Date: Tue, 4 Jun 2019 13:27:36 +0200
c313de
Subject: [PATCH] virfile: added GPFS as shared fs
c313de
MIME-Version: 1.0
c313de
Content-Type: text/plain; charset=UTF-8
c313de
Content-Transfer-Encoding: 8bit
c313de
c313de
Added GPFS as shared file system recognized during live migration
c313de
security checks.
c313de
c313de
GPFS is 'IBM General Parallel File System' also called
c313de
'IBM Spectrum Scale'
c313de
c313de
BUG: https://bugzilla.redhat.com/show_bug.cgi?id=1679528
c313de
c313de
Signed-off-by: Diego Michelotto <diego.michelotto@cnaf.infn.it>
c313de
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
c313de
(cherry picked from commit d163b940a73a0d6b8277a4bccef2b60936933cf0)
c313de
https: //bugzilla.redhat.com/show_bug.cgi?id=1698133
c313de
Message-Id: <5d98c30627de2ed2fd02a77ecadaac0585c5fb15.1559647301.git.pkrempa@redhat.com>
c313de
Reviewed-by: Ján Tomko <jtomko@redhat.com>
c313de
---
c313de
 src/util/virfile.c            | 9 ++++++++-
c313de
 src/util/virfile.h            | 1 +
c313de
 tests/virfiledata/mounts3.txt | 1 +
c313de
 tests/virfilemock.c           | 5 +++++
c313de
 tests/virfiletest.c           | 1 +
c313de
 5 files changed, 16 insertions(+), 1 deletion(-)
c313de
c313de
diff --git a/src/util/virfile.c b/src/util/virfile.c
c313de
index 471d309062..e0564295dd 100644
c313de
--- a/src/util/virfile.c
c313de
+++ b/src/util/virfile.c
c313de
@@ -3540,6 +3540,9 @@ int virFilePrintf(FILE *fp, const char *msg, ...)
c313de
 # ifndef CEPH_SUPER_MAGIC
c313de
 #  define CEPH_SUPER_MAGIC 0x00C36400
c313de
 # endif
c313de
+# ifndef GPFS_SUPER_MAGIC
c313de
+#  define GPFS_SUPER_MAGIC 0x47504653
c313de
+# endif
c313de
 
c313de
 # define PROC_MOUNTS "/proc/mounts"
c313de
 
c313de
@@ -3688,6 +3691,9 @@ virFileIsSharedFSType(const char *path,
c313de
     if ((fstypes & VIR_FILE_SHFS_CEPH) &&
c313de
         (f_type == CEPH_SUPER_MAGIC))
c313de
         return 1;
c313de
+    if ((fstypes & VIR_FILE_SHFS_GPFS) &&
c313de
+        (f_type == GPFS_SUPER_MAGIC))
c313de
+        return 1;
c313de
 
c313de
     return 0;
c313de
 }
c313de
@@ -3852,7 +3858,8 @@ int virFileIsSharedFS(const char *path)
c313de
                                  VIR_FILE_SHFS_AFS |
c313de
                                  VIR_FILE_SHFS_SMB |
c313de
                                  VIR_FILE_SHFS_CIFS |
c313de
-                                 VIR_FILE_SHFS_CEPH);
c313de
+                                 VIR_FILE_SHFS_CEPH |
c313de
+                                 VIR_FILE_SHFS_GPFS);
c313de
 }
c313de
 
c313de
 
c313de
diff --git a/src/util/virfile.h b/src/util/virfile.h
c313de
index 1d16e96b59..51c221e069 100644
c313de
--- a/src/util/virfile.h
c313de
+++ b/src/util/virfile.h
c313de
@@ -206,6 +206,7 @@ enum {
c313de
     VIR_FILE_SHFS_SMB = (1 << 4),
c313de
     VIR_FILE_SHFS_CIFS = (1 << 5),
c313de
     VIR_FILE_SHFS_CEPH = (1 << 6),
c313de
+    VIR_FILE_SHFS_GPFS = (1 << 7),
c313de
 };
c313de
 
c313de
 int virFileIsSharedFSType(const char *path, int fstypes) ATTRIBUTE_NONNULL(1);
c313de
diff --git a/tests/virfiledata/mounts3.txt b/tests/virfiledata/mounts3.txt
c313de
index 68eded048c..4377e5d471 100644
c313de
--- a/tests/virfiledata/mounts3.txt
c313de
+++ b/tests/virfiledata/mounts3.txt
c313de
@@ -35,3 +35,4 @@ host:/gv0 /gluster fuse.glusterfs rw 0 0
c313de
 root@host:/tmp/mkdir /gluster/sshfs fuse.sshfs rw 0 0
c313de
 192.168.0.1:/ceph/data /ceph ceph rw,noatime,name=cephfs,secret=<hidden>,acl,wsize=16777216 0 0
c313de
 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
c313de
+gpfs_data /gpfs/data gpfs rw,relatime 0 0
c313de
diff --git a/tests/virfilemock.c b/tests/virfilemock.c
c313de
index eb5182df66..02f26433d4 100644
c313de
--- a/tests/virfilemock.c
c313de
+++ b/tests/virfilemock.c
c313de
@@ -91,6 +91,9 @@ setmntent(const char *filename, const char *type)
c313de
 #ifndef CEPH_SUPER_MAGIC
c313de
 # define CEPH_SUPER_MAGIC 0x00c36400
c313de
 #endif
c313de
+#ifndef GPFS_SUPER_MAGIC
c313de
+# define GPFS_SUPER_MAGIC 0x47504653
c313de
+#endif
c313de
 
c313de
 
c313de
 static int
c313de
@@ -139,6 +142,8 @@ statfs_mock(const char *mtab,
c313de
             ftype = FUSE_SUPER_MAGIC;
c313de
         } else if (STRPREFIX(mb.mnt_type, "ceph")) {
c313de
             ftype = CEPH_SUPER_MAGIC;
c313de
+        } else if (STRPREFIX(mb.mnt_type, "gpfs")) {
c313de
+            ftype = GPFS_SUPER_MAGIC;
c313de
         } else {
c313de
             /* Everything else is EXT4. We don't care really for other paths. */
c313de
             ftype = EXT4_SUPER_MAGIC;
c313de
diff --git a/tests/virfiletest.c b/tests/virfiletest.c
c313de
index 972c07fdc5..5f17676c75 100644
c313de
--- a/tests/virfiletest.c
c313de
+++ b/tests/virfiletest.c
c313de
@@ -460,6 +460,7 @@ mymain(void)
c313de
     DO_TEST_FILE_IS_SHARED_FS_TYPE("mounts3.txt", "/some/symlink/file", true);
c313de
     DO_TEST_FILE_IS_SHARED_FS_TYPE("mounts3.txt", "/ceph/file", true);
c313de
     DO_TEST_FILE_IS_SHARED_FS_TYPE("mounts3.txt", "/ceph/multi/file", true);
c313de
+    DO_TEST_FILE_IS_SHARED_FS_TYPE("mounts3.txt", "/gpfs/data", true);
c313de
 
c313de
     return ret != 0 ? EXIT_FAILURE : EXIT_SUCCESS;
c313de
 }
c313de
-- 
c313de
2.22.0
c313de