Great, thanks!
Am Fr., 19. Juli 2019 um 11:05 Uhr schrieb Michal Privoznik <
mprivozn(a)redhat.com>:
On 7/10/19 4:21 PM, Silvan Kaiser wrote:
> Am Sa., 15. Juni 2019 um 14:59 Uhr schrieb Michal Prívozník <
> mprivozn(a)redhat.com>:
>
>> 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 <silvan(a)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@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(a)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
>>
>> 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