Re: when should the client request a directory delegation?

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

 



On Wed, 2024-02-07 at 08:34 -0500, Jeff Layton wrote:
> I've started work on a patchset to add support for directory
> delegations
> to the Linux kernel client and server. It's still too rough to post
> at
> this point, and for now, I'm just cobbling in a ioctl to drive it.
> 
> As I started working on some of the client bits, however, I realized
> that I don't really have a clear picture as to when the client should
> request a delegation on a directory. It seems like there are a lot of
> things we could do:
> 
> One idea: request one on an initial directory readdir. So maybe when
> the
> offset is 0 and we don't have a dir delegation already, do:
> 
> 	PUTFH:GET_DIR_DELEGATION:READDIR
> 
> Or, maybe just do it on any readdir when we haven't requested one in
> a
> little while?
> 
> We could also do one on every lookup, when we expect that the result
> will be a directory. I'm not sure if LOOKUP_DIRECTORY would be a
> sufficient indicator or if we'd need the vfs to indicate that with a
> new
> flag.
> 
> Would we also want to request one after a mkdir?
> 
> 	PUTFH:CREATE:GET_DIR_DELEGATION:GETFH:GET_DIR_DELEGATION:...
> 
> Assuming we can get this all working, what should drive the client to
> issues GET_DIR_DELEGATION ops?

As far as I'm concerned, the main case to be made for directory
delegations in the client is for reducing the number of revalidations
on said directory, particularly during path lookups.
i.e. the goal is to eliminate the need to constantly poll the directory
change attribute, and to eliminate the need to constantly revalidate
the dentries (and negative dentries!) contained in the directory after
a change.

Perhaps that means we should focus on adding a request for a directory
delegation to the function nfs_lookup_revalidate() since that would
seem to indicate that we're going through the same directory multiple
times? The other call site to consider would be nfs_check_verifier().

-- 
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trond.myklebust@xxxxxxxxxxxxxxx






[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