[Gluster-devel] [PATCH v7] vfs_glusterfs: Samba VFS module for glusterfs

Andrew Bartlett abartlet at samba.org
Wed May 29 02:50:34 UTC 2013


On Tue, 2013-05-28 at 18:33 -0700, Anand Avati wrote:
> 
> 
> 
> On Tue, May 28, 2013 at 4:47 PM, Anand Avati <avati at redhat.com> wrote:
>         On 05/28/2013 03:42 PM, Anand Avati wrote:
>         
>                 
>                 
>                 
>                 On Tue, May 28, 2013 at 2:46 PM, Andrew Bartlett
>                 <abartlet at samba.org
>                 
>                 <mailto:abartlet at samba.org>> wrote:
>                 
>                     On Tue, 2013-05-28 at 17:36 -0400, Anand Avati
>                 wrote:
>                      > Implement a Samba VFS plugin for glusterfs
>                 based on gluster's gfapi.
>                      > This is a "bottom" vfs plugin (not something to
>                 be stacked on top of
>                      > another module), and translates (most) calls
>                 into closest actions
>                      > on gfapi.
>                 
>                     Thank you for your patience here.
>                 
>                      > Signed-off-by: Anand Avati <avati at redhat.com
>                 
>                     <mailto:avati at redhat.com>>
>                 
>                      > ---
>                      >
>                      > Hi,
>                      >
>                      > I hope the waf changes are fine. I could not
>                 test them because
>                     builds were failing generally on samba.git master
>                 HEAD.
>                 
>                     You need to resolve whatever is causing your
>                 problems here, as it is not
>                     a general issue. Our autobuild system ensures that
>                 git master and
>                     v4-0-test always compile and test in at least
>                 Ubuntu 10.04, and it is
>                     incredibly rare that it not work on at least Linux
>                 without it being a
>                     specifically local issue.
>                 
>                     +
>                     +bld.SAMBA3_MODULE('vfs_glusterfs',
>                     +                  subsystem='vfs',
>                     +                  source=VFS_GLUSTERFS_SRC,
>                     +                  deps='samba-util',
>                     +                  init_function='',
>                     +
>                 
>                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('vfs_glusterfs'),
>                     +
>                 
>                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('vfs_glusterfs'))
>                 
>                     You should ensure your module depends on
>                 glusterfs, by changing that to
>                     adding deps='glusterfs samba-util' (and making
>                 that match what the
>                     conf.check_cfg finds and stores).
>                 
>                 
>                 I tried that. I added uselib_store='glusterfs' and
>                 included 'glusterfs'
>                 in deps= line. However while building I get this
>                 error:
>                 
>                 [avati at blackbox samba]$ make
>                 WAF_MAKE=1 python ./buildtools/bin/waf build
>                 ./buildtools/wafsamba/samba_utils.py:397:
>                 DeprecationWarning: the md5
>                 module is deprecated; use hashlib instead
>                    import md5
>                 Waf: Entering directory `/home/avati/work/samba/bin'
>                 Selected embedded Heimdal build
>                 Checking project rules ...
>                 Unknown dependency 'glusterfs' in 'vfs_glusterfs'
>                 make: *** [all] Error 1
>                 
>                 
>                 I am not familiar with waf, and trying to figure out
>                 how it works. I
>                 don't understand how the check_cfg() in wscript and
>                 source3/wscript_build's bld.SAMBA3_MODULE() actually
>                 integrate internally.
>                 
>                      > diff --git a/source3/wscript b/source3/wscript
>                      > index dba6cdc..0d07692 100644
>                      > --- a/source3/wscript
>                      > +++ b/source3/wscript
>                      > @@ -59,6 +59,11 @@ def set_options(opt):
>                      >                     help=("Directory under
>                 which libcephfs is
>                     installed"),
>                      >                     action="store",
>                 dest='libcephfs_dir',
>                     default=None)
>                      >
>                      > +    opt.add_option('--enable-glusterfs',
>                      > +                   help=("Enable building
>                 vfs_glusterfs module"),
>                      > +                   action="store_true",
>                 dest='enable_glusterfs',
>                     default=True)
>                      > +    opt.add_option('--disable-glusterfs',
>                 help=SUPPRESS_HELP,
>                      > +                   action="store_false",
>                 dest='enable_glusterfs')
>                 
>                     In general we would prefer not to have options for
>                 every possible
>                     module.  Instead, please just make it automatic
>                 based on finding
>                     glusterfs.
>                 
>                 
>                 OK, I will just leave things to check_cfg() detection
>                 then?
>                 
>                      >  def configure(conf):
>                      > @@ -1709,6 +1714,13 @@ main() {
>                      >      if
>                 conf.CHECK_HEADERS('cephfs/libcephfs.h', False, False,
>                     'cephfs') and conf.CHECK_LIB('cephfs'):
>                      >          conf.DEFINE('HAVE_CEPH', '1')
>                      >
>                      > +    conf.env.enable_glusterfs =
>                 Options.options.enable_glusterfs
>                      > +
>                      > +    if Options.options.enable_glusterfs:
>                      > +
>                  conf.check_cfg(package='glusterfs-api',
>                     args='"glusterfs-api >= 4" --cflags --libs',
>                      > +
>                 uselib_store='GLUSTERFS', msg='Checking
>                     for glusterfs-api >= 4',
>                      > +                       mandatory=False)
>                      > +
>                      >      conf.env.build_regedit = False
>                      >      if not Options.options.with_regedit ==
>                 False:
>                      >
>                  conf.PROCESS_SEPARATE_RULE('system_ncurses')
>                      > @@ -1797,6 +1809,9 @@ main() {
>                      >      if conf.CONFIG_SET("HAVE_CEPH"):
>                      >
>                  default_shared_modules.extend(TO_LIST('vfs_ceph'))
>                      >
>                      > +    if conf.CONFIG_SET('HAVE_GLUSTERFS'):
>                      > +
>                  default_shared_modules.extend(TO_LIST('vfs_glusterfs'))
>                      > +
>                      >      explicit_shared_modules =
>                     TO_LIST(Options.options.shared_modules,
>                 delimiter=',')
>                      >      explicit_static_modules =
>                     TO_LIST(Options.options.static_modules,
>                 delimiter=',')
>                 
>                     This much looks good, assuming it is tested and
>                 works.   You might need
>                     to make uselib_store='glusterfs' (not sure).
>                 
>                 
>                 As mentioned above, I tried this but still get the
>                 dependency error. Not
>                 sure what I am missing..
>                 
>                 
>         
>         I tried to look up documentation on the web, but I couldn't
>         find anything specific. My understanding so far is:
>         
>         conf.check_cfg(...) does the 'detection' and stores the result
>         in variables. You can specify a variable name prefix with
>         uselib_store=NAME parameter.
>         
>         You can then use the test results while building, with a
>         construct like:
>         
>         bld.new_task_gen(..., uselib=NAME, ...)
>         
>         However, samba is using bld.SAMBA3_MODULE(...) for building,
>         and that does not seem to be accepting uselib= parameter.
>         
>         What I am trying to achieve is:
>         
>         - detect for presence of glusterfs headers/libs in the
>         buildsystem. This is detected with the presence of
>         glusterfs-api.pc
>         
>         - use the --libs and --cflags from pkg-config on
>         glusterfs-api.pc to build vfs_glusterfs.c
>         
>         I know how to do this in autotools. I am not familiar with
>         waf, and it doesn't seem to be intuitive enough to be self
>         understood. There seems to be quite a lot of macro hackery
>         around it which makes the techniques you get from a google
>         search "not applicable".
>         
>         Any help from the waf experts will be most appreciated!
> 
> 
> Looks like the issue was that there had to be atleast one call to
> conf.CHECK_HEADER in context of the package (unlike autotools where
> this doesn't seem to be necessary). After adding a line to
> CHECK_HEADERS (in v8 patch) everything else just worked.

That shouldn't be needed, but at this point I don't want to hold you up
any longer.  If you can happen to point me at Fedora 18 packages and/or
instructions I'll do an incremental patch to fix it further, not because
it matters massively for glusterfs, but because this will I think be the
canonical example for similar requirements in the future, where we know
that there must be a pkg-config. 

The only other thing is: do we really need the configure option?

Even with these concerns, I'm happy at this point for you to consider
'[PATCH v8] vfs_glusterfs: Samba VFS module for glusterfs' to be

Reviewed-by: Andrew Bartlett <abartlet at samba.org>

Thanks for your patience, and I'm sure we can address these final issues
in the next little while, without blocking getting this into master.

Andrew Bartlett
-- 
Andrew Bartlett                                http://samba.org/~abartlet/
Authentication Developer, Samba Team           http://samba.org






More information about the Gluster-devel mailing list