Re: [PATCH v2] NFSv4: Always ask for type with READDIR

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 31 Aug 2023 at 02:17, Jeff Layton <jlayton@xxxxxxxxxx> wrote:
>
> On Wed, 2023-08-30 at 20:20 +0000, Trond Myklebust wrote:
> > On Wed, 2023-08-30 at 16:10 -0400, Jeff Layton wrote:
> > > On Wed, 2023-08-30 at 15:42 -0400, Benjamin Coddington wrote:
> > > > Again we have claimed regressions for walking a directory tree,
> > > > this time
> > > > with the "find" utility which always tries to optimize away asking
> > > > for any
> > > > attributes until it has a complete list of entries.  This behavior
> > > > makes
> > > > the readdir plus heuristic do the wrong thing, which causes a storm
> > > > of
> > > > GETATTRs to determine each entry's type in order to continue the
> > > > walk.
> > > >
> > > > For v4 add the type attribute to each READDIR request to include it
> > > > no
> > > > matter the heuristic.  This allows a simple `find` command to
> > > > proceed
> > > > quickly through a directory tree.
> > > >
> > >
> > > The important bit here is that with v4, we can fill out d_type even
> > > when
> > > "plus" is false, at little cost. The downside is that non-plus
> > > READDIR
> > > replies will now be a bit larger on the wire. I think it's a
> > > worthwhile
> > > tradeoff though.
> >
> > The reason why we never did it before is that for many servers, it
> > forces them to go to the inode in order to retrieve the information.
> >
> > IOW: You might as well just do readdirplus.
> >
>
> That makes total sense, given how this code has evolved.
>
> FWIW, the Linux NFS server already calls vfs_getattr for every dentry in
> a v4 READDIR reply regardless of what the client requests. It has to in
> order to detect junctions, so we're bringing in the inode no matter
> what. Fetching the type is trivial, so I don't see this as costing
> anything extra there.
>
> Mileage could vary on other servers with more synthetic filesystems, but
> one would hope that most of them can also return the type cheaply.

Do you have examples for such synthetic filesystems?

Ced
-- 
Cedric Blancher <cedric.blancher@xxxxxxxxx>
[https://plus.google.com/u/0/+CedricBlancher/]
Institute Pasteur



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux