]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
rpc_{rmdir_,}depopulate(): use simple_recursive_removal() instead
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 9 May 2024 01:29:34 +0000 (21:29 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 3 Jul 2025 02:44:54 +0000 (22:44 -0400)
no need to give an exact list of objects to be remove when it's
simply every child of the victim directory.

Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
net/sunrpc/rpc_pipe.c

index 580e078e49a300f8a86f33fbb5151b7049984624..9571cbd913052ffff37a80bc85967a8ebec70c8d 100644 (file)
@@ -678,17 +678,6 @@ next:
        }
 }
 
-static void rpc_depopulate(struct dentry *parent,
-                          const struct rpc_filelist *files,
-                          int start, int eof)
-{
-       struct inode *dir = d_inode(parent);
-
-       inode_lock_nested(dir, I_MUTEX_CHILD);
-       __rpc_depopulate(parent, files, start, eof);
-       inode_unlock(dir);
-}
-
 static int rpc_populate(struct dentry *parent,
                        const struct rpc_filelist *files,
                        int start, int eof,
@@ -762,24 +751,6 @@ out_err:
        goto out;
 }
 
-static int rpc_rmdir_depopulate(struct dentry *dentry,
-               void (*depopulate)(struct dentry *))
-{
-       struct dentry *parent;
-       struct inode *dir;
-       int error;
-
-       parent = dget_parent(dentry);
-       dir = d_inode(parent);
-       inode_lock_nested(dir, I_MUTEX_PARENT);
-       if (depopulate != NULL)
-               depopulate(dentry);
-       error = __rpc_rmdir(dir, dentry);
-       inode_unlock(dir);
-       dput(parent);
-       return error;
-}
-
 /**
  * rpc_mkpipe_dentry - make an rpc_pipefs file for kernel<->userspace
  *                    communication
@@ -1030,11 +1001,6 @@ static int rpc_clntdir_populate(struct dentry *dentry, void *private)
                            private);
 }
 
-static void rpc_clntdir_depopulate(struct dentry *dentry)
-{
-       rpc_depopulate(dentry, authfiles, RPCAUTH_info, RPCAUTH_EOF);
-}
-
 /**
  * rpc_create_client_dir - Create a new rpc_client directory in rpc_pipefs
  * @dentry: the parent of new directory
@@ -1073,7 +1039,8 @@ int rpc_remove_client_dir(struct rpc_clnt *rpc_client)
                return 0;
        rpc_destroy_pipe_dir_objects(&rpc_client->cl_pipedir_objects);
        rpc_client->cl_pipedir_objects.pdh_dentry = NULL;
-       return rpc_rmdir_depopulate(dentry, rpc_clntdir_depopulate);
+       simple_recursive_removal(dentry, NULL);
+       return 0;
 }
 
 static const struct rpc_filelist cache_pipefs_files[3] = {
@@ -1101,11 +1068,6 @@ static int rpc_cachedir_populate(struct dentry *dentry, void *private)
                            private);
 }
 
-static void rpc_cachedir_depopulate(struct dentry *dentry)
-{
-       rpc_depopulate(dentry, cache_pipefs_files, 0, 3);
-}
-
 struct dentry *rpc_create_cache_dir(struct dentry *parent, const char *name,
                                    umode_t umode, struct cache_detail *cd)
 {
@@ -1115,7 +1077,7 @@ struct dentry *rpc_create_cache_dir(struct dentry *parent, const char *name,
 
 void rpc_remove_cache_dir(struct dentry *dentry)
 {
-       rpc_rmdir_depopulate(dentry, rpc_cachedir_depopulate);
+       simple_recursive_removal(dentry, NULL);
 }
 
 /*