diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/sunrpc/clnt.c | 1 | ||||
-rw-r--r-- | net/sunrpc/rpc_pipe.c | 16 |
2 files changed, 17 insertions, 0 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index ed7c22de9319..4c6848017168 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c | |||
@@ -222,6 +222,7 @@ static int rpc_pipefs_event(struct notifier_block *nb, unsigned long event, | |||
222 | 222 | ||
223 | static struct notifier_block rpc_clients_block = { | 223 | static struct notifier_block rpc_clients_block = { |
224 | .notifier_call = rpc_pipefs_event, | 224 | .notifier_call = rpc_pipefs_event, |
225 | .priority = SUNRPC_PIPEFS_RPC_PRIO, | ||
225 | }; | 226 | }; |
226 | 227 | ||
227 | int rpc_clients_notifier_register(void) | 228 | int rpc_clients_notifier_register(void) |
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c index 6b417fcabdbf..bae4e71d8663 100644 --- a/net/sunrpc/rpc_pipe.c +++ b/net/sunrpc/rpc_pipe.c | |||
@@ -616,6 +616,22 @@ static int __rpc_rmdir(struct inode *dir, struct dentry *dentry) | |||
616 | return ret; | 616 | return ret; |
617 | } | 617 | } |
618 | 618 | ||
619 | int rpc_rmdir(struct dentry *dentry) | ||
620 | { | ||
621 | struct dentry *parent; | ||
622 | struct inode *dir; | ||
623 | int error; | ||
624 | |||
625 | parent = dget_parent(dentry); | ||
626 | dir = parent->d_inode; | ||
627 | mutex_lock_nested(&dir->i_mutex, I_MUTEX_PARENT); | ||
628 | error = __rpc_rmdir(dir, dentry); | ||
629 | mutex_unlock(&dir->i_mutex); | ||
630 | dput(parent); | ||
631 | return error; | ||
632 | } | ||
633 | EXPORT_SYMBOL_GPL(rpc_rmdir); | ||
634 | |||
619 | static int __rpc_unlink(struct inode *dir, struct dentry *dentry) | 635 | static int __rpc_unlink(struct inode *dir, struct dentry *dentry) |
620 | { | 636 | { |
621 | int ret; | 637 | int ret; |