Loading include/linux/sunrpc/rpc_pipe_fs.h +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ struct rpc_inode { int pipelen; int nreaders; int nwriters; int nkern_readwriters; wait_queue_head_t waitq; #define RPC_PIPE_WAIT_FOR_OPEN 1 int flags; Loading net/sunrpc/rpc_pipe.c +8 −4 Original line number Diff line number Diff line Loading @@ -737,6 +737,7 @@ rpc_mkpipe(struct dentry *parent, const char *name, void *private, struct rpc_pi dput (dentry); dentry = ERR_PTR(-EBUSY); } rpci->nkern_readwriters++; goto out; } inode = rpc_get_inode(dir->i_sb, S_IFIFO | S_IRUSR | S_IWUSR); Loading @@ -749,6 +750,7 @@ rpc_mkpipe(struct dentry *parent, const char *name, void *private, struct rpc_pi rpci->private = private; rpci->flags = flags; rpci->ops = ops; rpci->nkern_readwriters = 1; inode_dir_notify(dir, DN_CREATE); dget(dentry); out: Loading @@ -773,10 +775,12 @@ rpc_unlink(struct dentry *dentry) parent = dget_parent(dentry); dir = parent->d_inode; mutex_lock_nested(&dir->i_mutex, I_MUTEX_PARENT); if (--RPC_I(dentry->d_inode)->nkern_readwriters == 0) { rpc_close_pipes(dentry->d_inode); error = simple_unlink(dir, dentry); if (!error) d_delete(dentry); } dput(dentry); mutex_unlock(&dir->i_mutex); dput(parent); Loading Loading
include/linux/sunrpc/rpc_pipe_fs.h +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ struct rpc_inode { int pipelen; int nreaders; int nwriters; int nkern_readwriters; wait_queue_head_t waitq; #define RPC_PIPE_WAIT_FOR_OPEN 1 int flags; Loading
net/sunrpc/rpc_pipe.c +8 −4 Original line number Diff line number Diff line Loading @@ -737,6 +737,7 @@ rpc_mkpipe(struct dentry *parent, const char *name, void *private, struct rpc_pi dput (dentry); dentry = ERR_PTR(-EBUSY); } rpci->nkern_readwriters++; goto out; } inode = rpc_get_inode(dir->i_sb, S_IFIFO | S_IRUSR | S_IWUSR); Loading @@ -749,6 +750,7 @@ rpc_mkpipe(struct dentry *parent, const char *name, void *private, struct rpc_pi rpci->private = private; rpci->flags = flags; rpci->ops = ops; rpci->nkern_readwriters = 1; inode_dir_notify(dir, DN_CREATE); dget(dentry); out: Loading @@ -773,10 +775,12 @@ rpc_unlink(struct dentry *dentry) parent = dget_parent(dentry); dir = parent->d_inode; mutex_lock_nested(&dir->i_mutex, I_MUTEX_PARENT); if (--RPC_I(dentry->d_inode)->nkern_readwriters == 0) { rpc_close_pipes(dentry->d_inode); error = simple_unlink(dir, dentry); if (!error) d_delete(dentry); } dput(dentry); mutex_unlock(&dir->i_mutex); dput(parent); Loading