virfile: Add Quobyte as a shared fs

This adds detection of a Quobyte as a shared file system for live
migration.

Signed-off-by: Silvan Kaiser <silvan@quobyte.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Silvan Kaiser 2019-05-28 14:55:29 +02:00 committed by Michal Privoznik
parent 5fc601e7a6
commit 451094bd15
5 changed files with 18 additions and 1 deletions

View File

@ -3434,6 +3434,9 @@ int virFilePrintf(FILE *fp, const char *msg, ...)
# ifndef GPFS_SUPER_MAGIC # ifndef GPFS_SUPER_MAGIC
# define GPFS_SUPER_MAGIC 0x47504653 # define GPFS_SUPER_MAGIC 0x47504653
# endif # endif
# ifndef QB_MAGIC
# define QB_MAGIC 0x51626d6e
# endif
# define PROC_MOUNTS "/proc/mounts" # define PROC_MOUNTS "/proc/mounts"
@ -3490,6 +3493,10 @@ virFileIsSharedFixFUSE(const char *path,
VIR_DEBUG("Found gluster FUSE mountpoint=%s for path=%s. " VIR_DEBUG("Found gluster FUSE mountpoint=%s for path=%s. "
"Fixing shared FS type", mntDir, canonPath); "Fixing shared FS type", mntDir, canonPath);
*f_type = GFS2_MAGIC; *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; ret = 0;
@ -3582,6 +3589,9 @@ virFileIsSharedFSType(const char *path,
if ((fstypes & VIR_FILE_SHFS_GPFS) && if ((fstypes & VIR_FILE_SHFS_GPFS) &&
(f_type == GPFS_SUPER_MAGIC)) (f_type == GPFS_SUPER_MAGIC))
return 1; return 1;
if ((fstypes & VIR_FILE_SHFS_QB) &&
(f_type == QB_MAGIC))
return 1;
return 0; return 0;
} }
@ -3771,7 +3781,8 @@ int virFileIsSharedFS(const char *path)
VIR_FILE_SHFS_SMB | VIR_FILE_SHFS_SMB |
VIR_FILE_SHFS_CIFS | VIR_FILE_SHFS_CIFS |
VIR_FILE_SHFS_CEPH | VIR_FILE_SHFS_CEPH |
VIR_FILE_SHFS_GPFS); VIR_FILE_SHFS_GPFS|
VIR_FILE_SHFS_QB);
} }

View File

@ -211,6 +211,7 @@ enum {
VIR_FILE_SHFS_CIFS = (1 << 5), VIR_FILE_SHFS_CIFS = (1 << 5),
VIR_FILE_SHFS_CEPH = (1 << 6), VIR_FILE_SHFS_CEPH = (1 << 6),
VIR_FILE_SHFS_GPFS = (1 << 7), VIR_FILE_SHFS_GPFS = (1 << 7),
VIR_FILE_SHFS_QB = (1 << 8),
}; };
int virFileIsSharedFSType(const char *path, int fstypes) ATTRIBUTE_NONNULL(1); int virFileIsSharedFSType(const char *path, int fstypes) ATTRIBUTE_NONNULL(1);

View File

@ -36,3 +36,4 @@ root@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:/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 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 gpfs_data /gpfs/data gpfs rw,relatime 0 0
quobyte@192.168.0.1/data /quobyte fuse.quobyte rw,nosuid,nodev,noatime,user_id=0,group_id=0,allow_other 0 0

View File

@ -92,6 +92,9 @@ setmntent(const char *filename, const char *type)
#ifndef GPFS_SUPER_MAGIC #ifndef GPFS_SUPER_MAGIC
# define GPFS_SUPER_MAGIC 0x47504653 # define GPFS_SUPER_MAGIC 0x47504653
#endif #endif
#ifndef QB_MAGIC
# define QB_MAGIC 0x51626d6e
#endif
static int static int

View File

@ -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/file", true);
DO_TEST_FILE_IS_SHARED_FS_TYPE("mounts3.txt", "/ceph/multi/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", "/gpfs/data", true);
DO_TEST_FILE_IS_SHARED_FS_TYPE("mounts3.txt", "/quobyte", true);
return ret != 0 ? EXIT_FAILURE : EXIT_SUCCESS; return ret != 0 ? EXIT_FAILURE : EXIT_SUCCESS;
} }