mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 07:12:09 +00:00
wrappers for ->i_mutex access
parallel to mutex_{lock,unlock,trylock,is_locked,lock_nested}, inode_foo(inode) being mutex_foo(&inode->i_mutex). Please, use those for access to ->i_mutex; over the coming cycle ->i_mutex will become rwsem, with ->lookup() done with it held only shared. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
57b8f112cf
commit
5955102c99
177 changed files with 908 additions and 883 deletions
|
@ -172,7 +172,7 @@ rpc_close_pipes(struct inode *inode)
|
|||
int need_release;
|
||||
LIST_HEAD(free_list);
|
||||
|
||||
mutex_lock(&inode->i_mutex);
|
||||
inode_lock(inode);
|
||||
spin_lock(&pipe->lock);
|
||||
need_release = pipe->nreaders != 0 || pipe->nwriters != 0;
|
||||
pipe->nreaders = 0;
|
||||
|
@ -188,7 +188,7 @@ rpc_close_pipes(struct inode *inode)
|
|||
cancel_delayed_work_sync(&pipe->queue_timeout);
|
||||
rpc_inode_setowner(inode, NULL);
|
||||
RPC_I(inode)->pipe = NULL;
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
inode_unlock(inode);
|
||||
}
|
||||
|
||||
static struct inode *
|
||||
|
@ -221,7 +221,7 @@ rpc_pipe_open(struct inode *inode, struct file *filp)
|
|||
int first_open;
|
||||
int res = -ENXIO;
|
||||
|
||||
mutex_lock(&inode->i_mutex);
|
||||
inode_lock(inode);
|
||||
pipe = RPC_I(inode)->pipe;
|
||||
if (pipe == NULL)
|
||||
goto out;
|
||||
|
@ -237,7 +237,7 @@ rpc_pipe_open(struct inode *inode, struct file *filp)
|
|||
pipe->nwriters++;
|
||||
res = 0;
|
||||
out:
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
inode_unlock(inode);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -248,7 +248,7 @@ rpc_pipe_release(struct inode *inode, struct file *filp)
|
|||
struct rpc_pipe_msg *msg;
|
||||
int last_close;
|
||||
|
||||
mutex_lock(&inode->i_mutex);
|
||||
inode_lock(inode);
|
||||
pipe = RPC_I(inode)->pipe;
|
||||
if (pipe == NULL)
|
||||
goto out;
|
||||
|
@ -278,7 +278,7 @@ rpc_pipe_release(struct inode *inode, struct file *filp)
|
|||
if (last_close && pipe->ops->release_pipe)
|
||||
pipe->ops->release_pipe(inode);
|
||||
out:
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
inode_unlock(inode);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -290,7 +290,7 @@ rpc_pipe_read(struct file *filp, char __user *buf, size_t len, loff_t *offset)
|
|||
struct rpc_pipe_msg *msg;
|
||||
int res = 0;
|
||||
|
||||
mutex_lock(&inode->i_mutex);
|
||||
inode_lock(inode);
|
||||
pipe = RPC_I(inode)->pipe;
|
||||
if (pipe == NULL) {
|
||||
res = -EPIPE;
|
||||
|
@ -322,7 +322,7 @@ rpc_pipe_read(struct file *filp, char __user *buf, size_t len, loff_t *offset)
|
|||
pipe->ops->destroy_msg(msg);
|
||||
}
|
||||
out_unlock:
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
inode_unlock(inode);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -332,11 +332,11 @@ rpc_pipe_write(struct file *filp, const char __user *buf, size_t len, loff_t *of
|
|||
struct inode *inode = file_inode(filp);
|
||||
int res;
|
||||
|
||||
mutex_lock(&inode->i_mutex);
|
||||
inode_lock(inode);
|
||||
res = -EPIPE;
|
||||
if (RPC_I(inode)->pipe != NULL)
|
||||
res = RPC_I(inode)->pipe->ops->downcall(filp, buf, len);
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
inode_unlock(inode);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -349,12 +349,12 @@ rpc_pipe_poll(struct file *filp, struct poll_table_struct *wait)
|
|||
|
||||
poll_wait(filp, &rpci->waitq, wait);
|
||||
|
||||
mutex_lock(&inode->i_mutex);
|
||||
inode_lock(inode);
|
||||
if (rpci->pipe == NULL)
|
||||
mask |= POLLERR | POLLHUP;
|
||||
else if (filp->private_data || !list_empty(&rpci->pipe->pipe))
|
||||
mask |= POLLIN | POLLRDNORM;
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
inode_unlock(inode);
|
||||
return mask;
|
||||
}
|
||||
|
||||
|
@ -367,10 +367,10 @@ rpc_pipe_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|||
|
||||
switch (cmd) {
|
||||
case FIONREAD:
|
||||
mutex_lock(&inode->i_mutex);
|
||||
inode_lock(inode);
|
||||
pipe = RPC_I(inode)->pipe;
|
||||
if (pipe == NULL) {
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
inode_unlock(inode);
|
||||
return -EPIPE;
|
||||
}
|
||||
spin_lock(&pipe->lock);
|
||||
|
@ -381,7 +381,7 @@ rpc_pipe_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|||
len += msg->len - msg->copied;
|
||||
}
|
||||
spin_unlock(&pipe->lock);
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
inode_unlock(inode);
|
||||
return put_user(len, (int __user *)arg);
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
@ -617,9 +617,9 @@ int rpc_rmdir(struct dentry *dentry)
|
|||
|
||||
parent = dget_parent(dentry);
|
||||
dir = d_inode(parent);
|
||||
mutex_lock_nested(&dir->i_mutex, I_MUTEX_PARENT);
|
||||
inode_lock_nested(dir, I_MUTEX_PARENT);
|
||||
error = __rpc_rmdir(dir, dentry);
|
||||
mutex_unlock(&dir->i_mutex);
|
||||
inode_unlock(dir);
|
||||
dput(parent);
|
||||
return error;
|
||||
}
|
||||
|
@ -701,9 +701,9 @@ static void rpc_depopulate(struct dentry *parent,
|
|||
{
|
||||
struct inode *dir = d_inode(parent);
|
||||
|
||||
mutex_lock_nested(&dir->i_mutex, I_MUTEX_CHILD);
|
||||
inode_lock_nested(dir, I_MUTEX_CHILD);
|
||||
__rpc_depopulate(parent, files, start, eof);
|
||||
mutex_unlock(&dir->i_mutex);
|
||||
inode_unlock(dir);
|
||||
}
|
||||
|
||||
static int rpc_populate(struct dentry *parent,
|
||||
|
@ -715,7 +715,7 @@ static int rpc_populate(struct dentry *parent,
|
|||
struct dentry *dentry;
|
||||
int i, err;
|
||||
|
||||
mutex_lock(&dir->i_mutex);
|
||||
inode_lock(dir);
|
||||
for (i = start; i < eof; i++) {
|
||||
dentry = __rpc_lookup_create_exclusive(parent, files[i].name);
|
||||
err = PTR_ERR(dentry);
|
||||
|
@ -739,11 +739,11 @@ static int rpc_populate(struct dentry *parent,
|
|||
if (err != 0)
|
||||
goto out_bad;
|
||||
}
|
||||
mutex_unlock(&dir->i_mutex);
|
||||
inode_unlock(dir);
|
||||
return 0;
|
||||
out_bad:
|
||||
__rpc_depopulate(parent, files, start, eof);
|
||||
mutex_unlock(&dir->i_mutex);
|
||||
inode_unlock(dir);
|
||||
printk(KERN_WARNING "%s: %s failed to populate directory %pd\n",
|
||||
__FILE__, __func__, parent);
|
||||
return err;
|
||||
|
@ -757,7 +757,7 @@ static struct dentry *rpc_mkdir_populate(struct dentry *parent,
|
|||
struct inode *dir = d_inode(parent);
|
||||
int error;
|
||||
|
||||
mutex_lock_nested(&dir->i_mutex, I_MUTEX_PARENT);
|
||||
inode_lock_nested(dir, I_MUTEX_PARENT);
|
||||
dentry = __rpc_lookup_create_exclusive(parent, name);
|
||||
if (IS_ERR(dentry))
|
||||
goto out;
|
||||
|
@ -770,7 +770,7 @@ static struct dentry *rpc_mkdir_populate(struct dentry *parent,
|
|||
goto err_rmdir;
|
||||
}
|
||||
out:
|
||||
mutex_unlock(&dir->i_mutex);
|
||||
inode_unlock(dir);
|
||||
return dentry;
|
||||
err_rmdir:
|
||||
__rpc_rmdir(dir, dentry);
|
||||
|
@ -788,11 +788,11 @@ static int rpc_rmdir_depopulate(struct dentry *dentry,
|
|||
|
||||
parent = dget_parent(dentry);
|
||||
dir = d_inode(parent);
|
||||
mutex_lock_nested(&dir->i_mutex, I_MUTEX_PARENT);
|
||||
inode_lock_nested(dir, I_MUTEX_PARENT);
|
||||
if (depopulate != NULL)
|
||||
depopulate(dentry);
|
||||
error = __rpc_rmdir(dir, dentry);
|
||||
mutex_unlock(&dir->i_mutex);
|
||||
inode_unlock(dir);
|
||||
dput(parent);
|
||||
return error;
|
||||
}
|
||||
|
@ -828,7 +828,7 @@ struct dentry *rpc_mkpipe_dentry(struct dentry *parent, const char *name,
|
|||
if (pipe->ops->downcall == NULL)
|
||||
umode &= ~S_IWUGO;
|
||||
|
||||
mutex_lock_nested(&dir->i_mutex, I_MUTEX_PARENT);
|
||||
inode_lock_nested(dir, I_MUTEX_PARENT);
|
||||
dentry = __rpc_lookup_create_exclusive(parent, name);
|
||||
if (IS_ERR(dentry))
|
||||
goto out;
|
||||
|
@ -837,7 +837,7 @@ struct dentry *rpc_mkpipe_dentry(struct dentry *parent, const char *name,
|
|||
if (err)
|
||||
goto out_err;
|
||||
out:
|
||||
mutex_unlock(&dir->i_mutex);
|
||||
inode_unlock(dir);
|
||||
return dentry;
|
||||
out_err:
|
||||
dentry = ERR_PTR(err);
|
||||
|
@ -865,9 +865,9 @@ rpc_unlink(struct dentry *dentry)
|
|||
|
||||
parent = dget_parent(dentry);
|
||||
dir = d_inode(parent);
|
||||
mutex_lock_nested(&dir->i_mutex, I_MUTEX_PARENT);
|
||||
inode_lock_nested(dir, I_MUTEX_PARENT);
|
||||
error = __rpc_rmpipe(dir, dentry);
|
||||
mutex_unlock(&dir->i_mutex);
|
||||
inode_unlock(dir);
|
||||
dput(parent);
|
||||
return error;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue