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