On Thu, Nov 09, 2023 at 09:01:19AM -0500, Chuck Lever wrote: > On Thu, Nov 09, 2023 at 06:20:36AM +0000, Al Viro wrote: > > Reviewed-by: Jeff Layton <jlayton@xxxxxxxxxx> > > Tested-by: Jeff Layton <jlayton@xxxxxxxxxx> > > Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> > > Future me is going to be mightily confused by the lack of a patch > description. I went back to the series cover letter and found some > text that would be nice to include here: Does the following work for you? switch nfsd_client_rmdir() to use of simple_recursive_removal() nfsd_client_rmdir() open-codes a subset of simple_recursive_removal(). Conversion to calling simple_recursive_removal() allows to clean things up quite a bit. While we are at it, nfsdfs_create_files() doesn't need to mess with "pick the reference to struct nfsdfs_client from the already created parent" - the caller already knows it (that's where the parent got it from, after all), so we might as well just pass it as an explicit argument. So __get_nfsdfs_client() is only needed in get_nfsdfs_client() and can be folded in there. Incidentally, the locking in get_nfsdfs_client() is too heavy - we don't need ->i_rwsem for that, ->i_lock serves just fine.