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

Silvan Kaiser posted 1 patch 4 years, 11 months ago
Test syntax-check passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20190528125529.960-1-silvan@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(-)
[libvirt] [PATCH] virfile: adds quobyte as a shared fs
Posted by Silvan Kaiser 4 years, 11 months ago
Adds detection of a Quobyte shared file system for
live migration.

Signed-off-by: Silvan Kaiser <silvan@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@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

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] virfile: adds quobyte as a shared fs
Posted by Michal Prívozník 4 years, 10 months ago
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@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@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

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] virfile: adds quobyte as a shared fs
Posted by Silvan Kaiser 4 years, 9 months ago
Am Sa., 15. Juni 2019 um 14:59 Uhr schrieb Michal Prívozník <
mprivozn@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@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@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


-- 
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
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] virfile: adds quobyte as a shared fs
Posted by Michal Privoznik 4 years, 9 months ago
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@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@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@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

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] virfile: adds quobyte as a shared fs
Posted by Silvan Kaiser 4 years, 9 months ago
Great, thanks!

Am Fr., 19. Juli 2019 um 11:05 Uhr schrieb Michal Privoznik <
mprivozn@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@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@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@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
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list