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

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

 



On Thu, 2023-08-31 at 11:17 -0400, Benjamin Coddington wrote:
> On 30 Aug 2023, at 17:14, Jeff Layton 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.
> 
> It occurred to me that we could let those other server folks ask for
> whatever attributes they wanted if we make it tunable at runtime:
> 
> https://lore.kernel.org/linux-nfs/8f752f70daf73016e20c49508f825e8c2c94f5e7.1693494824.git.bcodding@xxxxxxxxxx/T/#u
> 

That's a possibility, but I probably wouldn't add tunables for this
until the need was more clear.
-- 
Jeff Layton <jlayton@xxxxxxxxxx>




[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