[Gluster-devel] Dht readdir filtering out names

Soumya Koduri skoduri at redhat.com
Fri Sep 30 12:16:55 UTC 2016



On 09/30/2016 03:02 PM, Poornima Gurusiddaiah wrote:
> In gfapi, we pass down readdirp, irrespective of whether the application
> called readdir/readdirp.
> Hence the behaviour will be same for samba and Ganesha i suppose.

But in gfapi, I see clear distinction for readdir and readdirp calls


 >>>>
         if (plus)
                 ret = syncop_readdirp (subvol, fd, 131072, glfd->offset,
                                        &entries, NULL, NULL);
         else
                 ret = syncop_readdir (subvol, fd, 131072, glfd->offset,
                                       &entries, NULL, NULL);
         DECODE_SYNCOP_ERR (ret);
<<<<

And nfs-ganesha doesn't set 'plus' boolean atm. So I assume think it 
doesn't get converted to readdirp. Or is it that syncop_readdir is 
converted to readdirp in any of the underlying xlators?

Thanks,
Soumya

>
> Regards,
> Poornima
>
> ------------------------------------------------------------------------
>
>     *From: *"Pranith Kumar Karampuri" <pkarampu at redhat.com>
>     *To: *"Raghavendra Gowdappa" <rgowdapp at redhat.com>, "Poornima
>     Gurusiddaiah" <pgurusid at redhat.com>, "Raghavendra Talur"
>     <rtalur at redhat.com>, "Soumya Koduri" <skoduri at redhat.com>
>     *Cc: *"Shyam Ranganathan" <srangana at redhat.com>, "Nithya
>     Balachandran" <nbalacha at redhat.com>, "Gluster Devel"
>     <gluster-devel at gluster.org>
>     *Sent: *Friday, September 30, 2016 12:38:06 AM
>     *Subject: *Re: Dht readdir filtering out names
>
>     Does samba/gfapi/nfs-ganesha have options to disable readdirp?
>
>     On Fri, Sep 30, 2016 at 10:04 AM, Pranith Kumar Karampuri
>     <pkarampu at redhat.com <mailto:pkarampu at redhat.com>> wrote:
>
>         What if the lower xlators want to set the entry->inode to NULL
>         and clear the entry->d_stat to force a lookup on the name? i.e.
>         gfid-split-brain/ia_type mismatches.
>
>         On Fri, Sep 30, 2016 at 10:00 AM, Raghavendra Gowdappa
>         <rgowdapp at redhat.com <mailto:rgowdapp at redhat.com>> wrote:
>
>
>
>             ----- Original Message -----
>             > From: "Raghavendra Gowdappa" <rgowdapp at redhat.com <mailto:rgowdapp at redhat.com>>
>             > To: "Pranith Kumar Karampuri" <pkarampu at redhat.com <mailto:pkarampu at redhat.com>>
>             > Cc: "Shyam Ranganathan" <srangana at redhat.com <mailto:srangana at redhat.com>>, "Nithya
>             Balachandran" <nbalacha at redhat.com
>             <mailto:nbalacha at redhat.com>>, "Gluster Devel"
>             > <gluster-devel at gluster.org <mailto:gluster-devel at gluster.org>>
>             > Sent: Friday, September 30, 2016 9:58:34 AM
>             > Subject: Re: Dht readdir filtering out names
>             >
>             >
>             >
>             > ----- Original Message -----
>             > > From: "Pranith Kumar Karampuri" <pkarampu at redhat.com
>             <mailto:pkarampu at redhat.com>>
>             > > To: "Raghavendra Gowdappa" <rgowdapp at redhat.com
>             <mailto:rgowdapp at redhat.com>>
>             > > Cc: "Shyam Ranganathan" <srangana at redhat.com
>             <mailto:srangana at redhat.com>>, "Nithya Balachandran"
>             > > <nbalacha at redhat.com <mailto:nbalacha at redhat.com>>,
>             "Gluster Devel"
>             > > <gluster-devel at gluster.org
>             <mailto:gluster-devel at gluster.org>>
>             > > Sent: Friday, September 30, 2016 9:53:44 AM
>             > > Subject: Re: Dht readdir filtering out names
>             > >
>             > > On Fri, Sep 30, 2016 at 9:50 AM, Raghavendra Gowdappa
>             <rgowdapp at redhat.com <mailto:rgowdapp at redhat.com>>
>             > > wrote:
>             > >
>             > > >
>             > > >
>             > > > ----- Original Message -----
>             > > > > From: "Pranith Kumar Karampuri" <pkarampu at redhat.com
>             <mailto:pkarampu at redhat.com>>
>             > > > > To: "Raghavendra Gowdappa" <rgowdapp at redhat.com
>             <mailto:rgowdapp at redhat.com>>
>             > > > > Cc: "Shyam Ranganathan" <srangana at redhat.com
>             <mailto:srangana at redhat.com>>, "Nithya Balachandran" <
>             > > > nbalacha at redhat.com <mailto:nbalacha at redhat.com>>,
>             "Gluster Devel"
>             > > > > <gluster-devel at gluster.org
>             <mailto:gluster-devel at gluster.org>>
>             > > > > Sent: Friday, September 30, 2016 9:15:04 AM
>             > > > > Subject: Re: Dht readdir filtering out names
>             > > > >
>             > > > > On Fri, Sep 30, 2016 at 9:13 AM, Raghavendra Gowdappa <
>             > > > rgowdapp at redhat.com <mailto:rgowdapp at redhat.com>>
>             > > > > wrote:
>             > > > >
>             > > > > > dht_readdirp_cbk has different behaviour for
>             directories and files.
>             > > > > >
>             > > > > > 1. If file, pick the dentry (passed from subvols
>             as part of readdirp
>             > > > > > response) if the it corresponds to data file.
>             > > > > > 2. If directory pick the dentry if readdirp
>             response is from
>             > > > hashed-subvol.
>             > > > > >
>             > > > > > In all other cases, the dentry is skipped and not
>             passed to higher
>             > > > > > layers/application. To elaborate, the dentries
>             which are ignored are:
>             > > > > > 1. dentries corresponding to linkto files.
>             > > > > > 2. dentries from non-hashed subvols corresponding
>             to directories.
>             > > > > >
>             > > > > > Since the behaviour is different for different
>             filesystem objects,
>             > > > > > dht
>             > > > > > needs ia_type to choose its behaviour.
>             > > > > >
>             > > > > > ----- Original Message -----
>             > > > > > > From: "Pranith Kumar Karampuri"
>             <pkarampu at redhat.com <mailto:pkarampu at redhat.com>>
>             > > > > > > To: "Shyam Ranganathan" <srangana at redhat.com
>             <mailto:srangana at redhat.com>>, "Raghavendra
>             > > > Gowdappa" <
>             > > > > > rgowdapp at redhat.com <mailto:rgowdapp at redhat.com>>,
>             "Nithya Balachandran"
>             > > > > > > <nbalacha at redhat.com <mailto:nbalacha at redhat.com>>
>             > > > > > > Cc: "Gluster Devel" <gluster-devel at gluster.org
>             <mailto:gluster-devel at gluster.org>>
>             > > > > > > Sent: Friday, September 30, 2016 8:39:28 AM
>             > > > > > > Subject: Dht readdir filtering out names
>             > > > > > >
>             > > > > > > hi,
>             > > > > > >        In dht_readdirp_cbk() there is a check
>             about skipping files
>             > > > > > without
>             > > > > > > ia_type. Could you help me understand why this
>             check is added?
>             > > > > > > There
>             > > > are
>             > > > > > > times when users have to delete gfid of the
>             entries and trigger
>             > > > something
>             > > > > > > like 'find . | xargs stat' to heal the gfids.
>             This case would fail
>             > > > if we
>             > > > > > > skip entries without gfid, if the lower xlators
>             don't send stat
>             > > > > > information
>             > > > > > > for them.
>             > > > > >
>             > > > > > Probably we can make readdirp_cbk not rely on
>             ia_type and pass _all_
>             > > > > > dentries received by subvols to application
>             without filtering.
>             > > > > > However
>             > > > we
>             > > > > > should make this behaviour optional and use this
>             only for recovery
>             > > > setups.
>             > > > > > If we don't rely on ia_type (during non error
>             scenarios),
>             > > > > > applications
>             > > > end
>             > > > > > up seeing duplicate dentries in readdir listing.
>             > > > > >
>             > > > >
>             > > > > That means dht_readdir() gives duplicate entries? As
>             per the code it
>             > > > seems
>             > > > > like it...
>             > > >
>             > > > No. It follows the filtering logic of "pick dentry
>             only from hashed
>             > > > subvol". This logic doesn't need ia_type. Now, that
>             you brought the topic
>             > > > of dht_readdir, I've another solution for your use
>             case (Basically don't
>             > > > use readdirp :) ):
>             > > >
>             > > > 1. mount glusterfs with "--use-readdirp=no" option.
>             > > > 2. disable md-cache/stat-prefetch as it converts all
>             readdir calls into
>             > > > readdirp calls
>             > > >
>             > >
>             > > Probably the ones in dht as well? i.e. use-readdirp option.
>             >
>             > No. dht doesn't convert a readdir into readdirp. The
>             option you are referring
>             > to might be "readdir-optimize" which is something different.
>
>             Sorry. I was wrong. There is an option in dht too, to force
>             using readdirp. As you said, we should disable that too.
>
>             >
>             > >
>             > >
>             > > >
>             > > > Use this only for recovery setups :).
>             > > >
>             > > > >
>             > > > >
>             > > > > >
>             > > > > > >
>             > > > > > > --
>             > > > > > > Pranith
>             > > > > > >
>             > > > > >
>             > > > > > regards,
>             > > > > > Raghavendra
>             > > > > >
>             > > > >
>             > > > >
>             > > > >
>             > > > > --
>             > > > > Pranith
>             > > > >
>             > > >
>             > >
>             > >
>             > >
>             > > --
>             > > Pranith
>             > >
>             >
>
>
>
>
>         --
>         Pranith
>
>
>
>
>     --
>     Pranith
>
>


More information about the Gluster-devel mailing list