Great, thanks! Am Fr., 19. Juli 2019 um 11:05 Uhr schrieb Michal Privoznik < [email protected]>:
> On 7/10/19 4:21 PM, Silvan Kaiser wrote: > > Am Sa., 15. Juni 2019 um 14:59 Uhr schrieb Michal Prívozník < > > [email protected]>: > > > >> On 5/28/19 2:55 PM, Silvan Kaiser wrote: > >>> Adds detection of a Quobyte shared file system for > >>> live migration. > >>> > >>> Signed-off-by: Silvan Kaiser <[email protected]> > >>> --- > >>> 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@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 > >>> [email protected]/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 > >> > >> Misaligned lines. I'll fix that before push. > > > > > >> But before ACK and push this, is there some place I can verify this > >> magic number? Also, just to make sure we are on the same page here, a > >> sole fact that a FS is distributed does not qualify it for being > >> detected as shared FS by libvirt. Because of how qemu handles migration, > >> libvirt can allow only those shared FS which are also cache coherent. I > >> have no experience with quobyte and it looks like a proprietary > >> solution. Wasn't it formerly known as XtreemFS? > >> > >> Michal > >> > > > > The magic number was defined only in this patch, so far we've never > needed > > to define this. It's serving as a unique id for the Quobyte filesystem. > > > > Regarding cache coherence: yes this is supported. Quobyte has specific > > libvirt > > migration support to ensure this. > > > > Regarding XtreemFS: Yep, Quobyte basically is a rewritten, improved and > over > > the years much more advanced proprietary version of XtreemFS. A major > > portion > > of the original xtreemfs dev team founded and/or worked/works at Quobyte. > > > > Thanks for reviewing and sorry for the late reply, i was on vacation. > > Best > > Silvan > > No worries. Alright, I can merge the patch now. In fact, I just did. > Congratulations on your first libvirt contribution. > > Michal > -- Dr.-Ing. Silvan Kaiser Quobyte GmbH Hardenbergplatz 2, 10623 Berlin - Germany +49-30-814 591 800 - www.quobyte.com<http://www.quobyte.com/> Amtsgericht Berlin-Charlottenburg, HRB 149012B Management board: Dr. Felix Hupfeld, Dr. Björn Kolbeck
-- libvir-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvir-list
