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:
Al Viro
2016-01-22 15:40:57 -05:00
parent 57b8f112cf
commit 5955102c99
177 changed files with 908 additions and 883 deletions
+2 -2
View File
@@ -1799,9 +1799,9 @@ static int spufs_mfc_fsync(struct file *file, loff_t start, loff_t end, int data
struct inode *inode = file_inode(file); struct inode *inode = file_inode(file);
int err = filemap_write_and_wait_range(inode->i_mapping, start, end); int err = filemap_write_and_wait_range(inode->i_mapping, start, end);
if (!err) { if (!err) {
mutex_lock(&inode->i_mutex); inode_lock(inode);
err = spufs_mfc_flush(file, NULL); err = spufs_mfc_flush(file, NULL);
mutex_unlock(&inode->i_mutex); inode_unlock(inode);
} }
return err; return err;
} }
+6 -6
View File
@@ -163,7 +163,7 @@ static void spufs_prune_dir(struct dentry *dir)
{ {
struct dentry *dentry, *tmp; struct dentry *dentry, *tmp;
mutex_lock(&d_inode(dir)->i_mutex); inode_lock(d_inode(dir));
list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) { list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) {
spin_lock(&dentry->d_lock); spin_lock(&dentry->d_lock);
if (simple_positive(dentry)) { if (simple_positive(dentry)) {
@@ -180,7 +180,7 @@ static void spufs_prune_dir(struct dentry *dir)
} }
} }
shrink_dcache_parent(dir); shrink_dcache_parent(dir);
mutex_unlock(&d_inode(dir)->i_mutex); inode_unlock(d_inode(dir));
} }
/* Caller must hold parent->i_mutex */ /* Caller must hold parent->i_mutex */
@@ -225,9 +225,9 @@ static int spufs_dir_close(struct inode *inode, struct file *file)
parent = d_inode(dir->d_parent); parent = d_inode(dir->d_parent);
ctx = SPUFS_I(d_inode(dir))->i_ctx; ctx = SPUFS_I(d_inode(dir))->i_ctx;
mutex_lock_nested(&parent->i_mutex, I_MUTEX_PARENT); inode_lock_nested(parent, I_MUTEX_PARENT);
ret = spufs_rmdir(parent, dir); ret = spufs_rmdir(parent, dir);
mutex_unlock(&parent->i_mutex); inode_unlock(parent);
WARN_ON(ret); WARN_ON(ret);
return dcache_dir_close(inode, file); return dcache_dir_close(inode, file);
@@ -270,7 +270,7 @@ spufs_mkdir(struct inode *dir, struct dentry *dentry, unsigned int flags,
inode->i_op = &simple_dir_inode_operations; inode->i_op = &simple_dir_inode_operations;
inode->i_fop = &simple_dir_operations; inode->i_fop = &simple_dir_operations;
mutex_lock(&inode->i_mutex); inode_lock(inode);
dget(dentry); dget(dentry);
inc_nlink(dir); inc_nlink(dir);
@@ -291,7 +291,7 @@ spufs_mkdir(struct inode *dir, struct dentry *dentry, unsigned int flags,
if (ret) if (ret)
spufs_rmdir(dir, dentry); spufs_rmdir(dir, dentry);
mutex_unlock(&inode->i_mutex); inode_unlock(inode);
return ret; return ret;
} }
+4 -4
View File
@@ -67,7 +67,7 @@ static void hypfs_remove(struct dentry *dentry)
struct dentry *parent; struct dentry *parent;
parent = dentry->d_parent; parent = dentry->d_parent;
mutex_lock(&d_inode(parent)->i_mutex); inode_lock(d_inode(parent));
if (simple_positive(dentry)) { if (simple_positive(dentry)) {
if (d_is_dir(dentry)) if (d_is_dir(dentry))
simple_rmdir(d_inode(parent), dentry); simple_rmdir(d_inode(parent), dentry);
@@ -76,7 +76,7 @@ static void hypfs_remove(struct dentry *dentry)
} }
d_delete(dentry); d_delete(dentry);
dput(dentry); dput(dentry);
mutex_unlock(&d_inode(parent)->i_mutex); inode_unlock(d_inode(parent));
} }
static void hypfs_delete_tree(struct dentry *root) static void hypfs_delete_tree(struct dentry *root)
@@ -331,7 +331,7 @@ static struct dentry *hypfs_create_file(struct dentry *parent, const char *name,
struct dentry *dentry; struct dentry *dentry;
struct inode *inode; struct inode *inode;
mutex_lock(&d_inode(parent)->i_mutex); inode_lock(d_inode(parent));
dentry = lookup_one_len(name, parent, strlen(name)); dentry = lookup_one_len(name, parent, strlen(name));
if (IS_ERR(dentry)) { if (IS_ERR(dentry)) {
dentry = ERR_PTR(-ENOMEM); dentry = ERR_PTR(-ENOMEM);
@@ -359,7 +359,7 @@ static struct dentry *hypfs_create_file(struct dentry *parent, const char *name,
d_instantiate(dentry, inode); d_instantiate(dentry, inode);
dget(dentry); dget(dentry);
fail: fail:
mutex_unlock(&d_inode(parent)->i_mutex); inode_unlock(d_inode(parent));
return dentry; return dentry;
} }
+2 -2
View File
@@ -455,12 +455,12 @@ static int blkdev_daxset(struct block_device *bdev, unsigned long argp)
if (arg && !blkdev_dax_capable(bdev)) if (arg && !blkdev_dax_capable(bdev))
return -ENOTTY; return -ENOTTY;
mutex_lock(&bdev->bd_inode->i_mutex); inode_lock(bdev->bd_inode);
if (bdev->bd_map_count == 0) if (bdev->bd_map_count == 0)
inode_set_flags(bdev->bd_inode, arg, S_DAX); inode_set_flags(bdev->bd_inode, arg, S_DAX);
else else
rc = -EBUSY; rc = -EBUSY;
mutex_unlock(&bdev->bd_inode->i_mutex); inode_unlock(bdev->bd_inode);
return rc; return rc;
} }
#else #else
+6 -6
View File
@@ -215,9 +215,9 @@ static int handle_create(const char *nodename, umode_t mode, kuid_t uid,
newattrs.ia_uid = uid; newattrs.ia_uid = uid;
newattrs.ia_gid = gid; newattrs.ia_gid = gid;
newattrs.ia_valid = ATTR_MODE|ATTR_UID|ATTR_GID; newattrs.ia_valid = ATTR_MODE|ATTR_UID|ATTR_GID;
mutex_lock(&d_inode(dentry)->i_mutex); inode_lock(d_inode(dentry));
notify_change(dentry, &newattrs, NULL); notify_change(dentry, &newattrs, NULL);
mutex_unlock(&d_inode(dentry)->i_mutex); inode_unlock(d_inode(dentry));
/* mark as kernel-created inode */ /* mark as kernel-created inode */
d_inode(dentry)->i_private = &thread; d_inode(dentry)->i_private = &thread;
@@ -244,7 +244,7 @@ static int dev_rmdir(const char *name)
err = -ENOENT; err = -ENOENT;
} }
dput(dentry); dput(dentry);
mutex_unlock(&d_inode(parent.dentry)->i_mutex); inode_unlock(d_inode(parent.dentry));
path_put(&parent); path_put(&parent);
return err; return err;
} }
@@ -321,9 +321,9 @@ static int handle_remove(const char *nodename, struct device *dev)
newattrs.ia_mode = stat.mode & ~0777; newattrs.ia_mode = stat.mode & ~0777;
newattrs.ia_valid = newattrs.ia_valid =
ATTR_UID|ATTR_GID|ATTR_MODE; ATTR_UID|ATTR_GID|ATTR_MODE;
mutex_lock(&d_inode(dentry)->i_mutex); inode_lock(d_inode(dentry));
notify_change(dentry, &newattrs, NULL); notify_change(dentry, &newattrs, NULL);
mutex_unlock(&d_inode(dentry)->i_mutex); inode_unlock(d_inode(dentry));
err = vfs_unlink(d_inode(parent.dentry), dentry, NULL); err = vfs_unlink(d_inode(parent.dentry), dentry, NULL);
if (!err || err == -ENOENT) if (!err || err == -ENOENT)
deleted = 1; deleted = 1;
@@ -332,7 +332,7 @@ static int handle_remove(const char *nodename, struct device *dev)
err = -ENOENT; err = -ENOENT;
} }
dput(dentry); dput(dentry);
mutex_unlock(&d_inode(parent.dentry)->i_mutex); inode_unlock(d_inode(parent.dentry));
path_put(&parent); path_put(&parent);
if (deleted && strchr(nodename, '/')) if (deleted && strchr(nodename, '/'))
+2 -2
View File
@@ -964,9 +964,9 @@ aoecmd_sleepwork(struct work_struct *work)
ssize = get_capacity(d->gd); ssize = get_capacity(d->gd);
bd = bdget_disk(d->gd, 0); bd = bdget_disk(d->gd, 0);
if (bd) { if (bd) {
mutex_lock(&bd->bd_inode->i_mutex); inode_lock(bd->bd_inode);
i_size_write(bd->bd_inode, (loff_t)ssize<<9); i_size_write(bd->bd_inode, (loff_t)ssize<<9);
mutex_unlock(&bd->bd_inode->i_mutex); inode_unlock(bd->bd_inode);
bdput(bd); bdput(bd);
} }
spin_lock_irq(&d->lock); spin_lock_irq(&d->lock);
+2 -2
View File
@@ -434,12 +434,12 @@ static int drbd_single_open(struct file *file, int (*show)(struct seq_file *, vo
if (!parent || d_really_is_negative(parent)) if (!parent || d_really_is_negative(parent))
goto out; goto out;
/* serialize with d_delete() */ /* serialize with d_delete() */
mutex_lock(&d_inode(parent)->i_mutex); inode_lock(d_inode(parent));
/* Make sure the object is still alive */ /* Make sure the object is still alive */
if (simple_positive(file->f_path.dentry) if (simple_positive(file->f_path.dentry)
&& kref_get_unless_zero(kref)) && kref_get_unless_zero(kref))
ret = 0; ret = 0;
mutex_unlock(&d_inode(parent)->i_mutex); inode_unlock(d_inode(parent));
if (!ret) { if (!ret) {
ret = single_open(file, show, data); ret = single_open(file, show, data);
if (ret) if (ret)
+2 -2
View File
@@ -689,7 +689,7 @@ static loff_t memory_lseek(struct file *file, loff_t offset, int orig)
{ {
loff_t ret; loff_t ret;
mutex_lock(&file_inode(file)->i_mutex); inode_lock(file_inode(file));
switch (orig) { switch (orig) {
case SEEK_CUR: case SEEK_CUR:
offset += file->f_pos; offset += file->f_pos;
@@ -706,7 +706,7 @@ static loff_t memory_lseek(struct file *file, loff_t offset, int orig)
default: default:
ret = -EINVAL; ret = -EINVAL;
} }
mutex_unlock(&file_inode(file)->i_mutex); inode_unlock(file_inode(file));
return ret; return ret;
} }
+2 -2
View File
@@ -290,9 +290,9 @@ static int ps3flash_fsync(struct file *file, loff_t start, loff_t end, int datas
{ {
struct inode *inode = file_inode(file); struct inode *inode = file_inode(file);
int err; int err;
mutex_lock(&inode->i_mutex); inode_lock(inode);
err = ps3flash_writeback(ps3flash_dev); err = ps3flash_writeback(ps3flash_dev);
mutex_unlock(&inode->i_mutex); inode_unlock(inode);
return err; return err;
} }
+6 -6
View File
@@ -89,14 +89,14 @@ static int create_file(const char *name, umode_t mode,
{ {
int error; int error;
mutex_lock(&d_inode(parent)->i_mutex); inode_lock(d_inode(parent));
*dentry = lookup_one_len(name, parent, strlen(name)); *dentry = lookup_one_len(name, parent, strlen(name));
if (!IS_ERR(*dentry)) if (!IS_ERR(*dentry))
error = qibfs_mknod(d_inode(parent), *dentry, error = qibfs_mknod(d_inode(parent), *dentry,
mode, fops, data); mode, fops, data);
else else
error = PTR_ERR(*dentry); error = PTR_ERR(*dentry);
mutex_unlock(&d_inode(parent)->i_mutex); inode_unlock(d_inode(parent));
return error; return error;
} }
@@ -481,7 +481,7 @@ static int remove_device_files(struct super_block *sb,
int ret, i; int ret, i;
root = dget(sb->s_root); root = dget(sb->s_root);
mutex_lock(&d_inode(root)->i_mutex); inode_lock(d_inode(root));
snprintf(unit, sizeof(unit), "%u", dd->unit); snprintf(unit, sizeof(unit), "%u", dd->unit);
dir = lookup_one_len(unit, root, strlen(unit)); dir = lookup_one_len(unit, root, strlen(unit));
@@ -491,7 +491,7 @@ static int remove_device_files(struct super_block *sb,
goto bail; goto bail;
} }
mutex_lock(&d_inode(dir)->i_mutex); inode_lock(d_inode(dir));
remove_file(dir, "counters"); remove_file(dir, "counters");
remove_file(dir, "counter_names"); remove_file(dir, "counter_names");
remove_file(dir, "portcounter_names"); remove_file(dir, "portcounter_names");
@@ -506,13 +506,13 @@ static int remove_device_files(struct super_block *sb,
} }
} }
remove_file(dir, "flash"); remove_file(dir, "flash");
mutex_unlock(&d_inode(dir)->i_mutex); inode_unlock(d_inode(dir));
ret = simple_rmdir(d_inode(root), dir); ret = simple_rmdir(d_inode(root), dir);
d_delete(dir); d_delete(dir);
dput(dir); dput(dir);
bail: bail:
mutex_unlock(&d_inode(root)->i_mutex); inode_unlock(d_inode(root));
dput(root); dput(root);
return ret; return ret;
} }
+2 -2
View File
@@ -174,9 +174,9 @@ static int vol_cdev_fsync(struct file *file, loff_t start, loff_t end,
struct ubi_device *ubi = desc->vol->ubi; struct ubi_device *ubi = desc->vol->ubi;
struct inode *inode = file_inode(file); struct inode *inode = file_inode(file);
int err; int err;
mutex_lock(&inode->i_mutex); inode_lock(inode);
err = ubi_sync(ubi->ubi_num); err = ubi_sync(ubi->ubi_num);
mutex_unlock(&inode->i_mutex); inode_unlock(inode);
return err; return err;
} }
+8 -8
View File
@@ -138,22 +138,22 @@ static int __oprofilefs_create_file(struct dentry *root, char const *name,
struct dentry *dentry; struct dentry *dentry;
struct inode *inode; struct inode *inode;
mutex_lock(&d_inode(root)->i_mutex); inode_lock(d_inode(root));
dentry = d_alloc_name(root, name); dentry = d_alloc_name(root, name);
if (!dentry) { if (!dentry) {
mutex_unlock(&d_inode(root)->i_mutex); inode_unlock(d_inode(root));
return -ENOMEM; return -ENOMEM;
} }
inode = oprofilefs_get_inode(root->d_sb, S_IFREG | perm); inode = oprofilefs_get_inode(root->d_sb, S_IFREG | perm);
if (!inode) { if (!inode) {
dput(dentry); dput(dentry);
mutex_unlock(&d_inode(root)->i_mutex); inode_unlock(d_inode(root));
return -ENOMEM; return -ENOMEM;
} }
inode->i_fop = fops; inode->i_fop = fops;
inode->i_private = priv; inode->i_private = priv;
d_add(dentry, inode); d_add(dentry, inode);
mutex_unlock(&d_inode(root)->i_mutex); inode_unlock(d_inode(root));
return 0; return 0;
} }
@@ -215,22 +215,22 @@ struct dentry *oprofilefs_mkdir(struct dentry *parent, char const *name)
struct dentry *dentry; struct dentry *dentry;
struct inode *inode; struct inode *inode;
mutex_lock(&d_inode(parent)->i_mutex); inode_lock(d_inode(parent));
dentry = d_alloc_name(parent, name); dentry = d_alloc_name(parent, name);
if (!dentry) { if (!dentry) {
mutex_unlock(&d_inode(parent)->i_mutex); inode_unlock(d_inode(parent));
return NULL; return NULL;
} }
inode = oprofilefs_get_inode(parent->d_sb, S_IFDIR | 0755); inode = oprofilefs_get_inode(parent->d_sb, S_IFDIR | 0755);
if (!inode) { if (!inode) {
dput(dentry); dput(dentry);
mutex_unlock(&d_inode(parent)->i_mutex); inode_unlock(d_inode(parent));
return NULL; return NULL;
} }
inode->i_op = &simple_dir_inode_operations; inode->i_op = &simple_dir_inode_operations;
inode->i_fop = &simple_dir_operations; inode->i_fop = &simple_dir_operations;
d_add(dentry, inode); d_add(dentry, inode);
mutex_unlock(&d_inode(parent)->i_mutex); inode_unlock(d_inode(parent));
return dentry; return dentry;
} }
+2 -2
View File
@@ -1858,7 +1858,7 @@ static loff_t ll_dir_seek(struct file *file, loff_t offset, int origin)
int api32 = ll_need_32bit_api(sbi); int api32 = ll_need_32bit_api(sbi);
loff_t ret = -EINVAL; loff_t ret = -EINVAL;
mutex_lock(&inode->i_mutex); inode_lock(inode);
switch (origin) { switch (origin) {
case SEEK_SET: case SEEK_SET:
break; break;
@@ -1896,7 +1896,7 @@ static loff_t ll_dir_seek(struct file *file, loff_t offset, int origin)
goto out; goto out;
out: out:
mutex_unlock(&inode->i_mutex); inode_unlock(inode);
return ret; return ret;
} }
+8 -8
View File
@@ -2082,17 +2082,17 @@ putgl:
/* update time if requested */ /* update time if requested */
rc = 0; rc = 0;
if (llss->ia2.ia_valid != 0) { if (llss->ia2.ia_valid != 0) {
mutex_lock(&llss->inode1->i_mutex); inode_lock(llss->inode1);
rc = ll_setattr(file1->f_path.dentry, &llss->ia2); rc = ll_setattr(file1->f_path.dentry, &llss->ia2);
mutex_unlock(&llss->inode1->i_mutex); inode_unlock(llss->inode1);
} }
if (llss->ia1.ia_valid != 0) { if (llss->ia1.ia_valid != 0) {
int rc1; int rc1;
mutex_lock(&llss->inode2->i_mutex); inode_lock(llss->inode2);
rc1 = ll_setattr(file2->f_path.dentry, &llss->ia1); rc1 = ll_setattr(file2->f_path.dentry, &llss->ia1);
mutex_unlock(&llss->inode2->i_mutex); inode_unlock(llss->inode2);
if (rc == 0) if (rc == 0)
rc = rc1; rc = rc1;
} }
@@ -2179,13 +2179,13 @@ static int ll_hsm_import(struct inode *inode, struct file *file,
ATTR_MTIME | ATTR_MTIME_SET | ATTR_MTIME | ATTR_MTIME_SET |
ATTR_ATIME | ATTR_ATIME_SET; ATTR_ATIME | ATTR_ATIME_SET;
mutex_lock(&inode->i_mutex); inode_lock(inode);
rc = ll_setattr_raw(file->f_path.dentry, attr, true); rc = ll_setattr_raw(file->f_path.dentry, attr, true);
if (rc == -ENODATA) if (rc == -ENODATA)
rc = 0; rc = 0;
mutex_unlock(&inode->i_mutex); inode_unlock(inode);
kfree(attr); kfree(attr);
free_hss: free_hss:
@@ -2609,7 +2609,7 @@ int ll_fsync(struct file *file, loff_t start, loff_t end, int datasync)
ll_stats_ops_tally(ll_i2sbi(inode), LPROC_LL_FSYNC, 1); ll_stats_ops_tally(ll_i2sbi(inode), LPROC_LL_FSYNC, 1);
rc = filemap_write_and_wait_range(inode->i_mapping, start, end); rc = filemap_write_and_wait_range(inode->i_mapping, start, end);
mutex_lock(&inode->i_mutex); inode_lock(inode);
/* catch async errors that were recorded back when async writeback /* catch async errors that were recorded back when async writeback
* failed for pages in this mapping. */ * failed for pages in this mapping. */
@@ -2641,7 +2641,7 @@ int ll_fsync(struct file *file, loff_t start, loff_t end, int datasync)
fd->fd_write_failed = false; fd->fd_write_failed = false;
} }
mutex_unlock(&inode->i_mutex); inode_unlock(inode);
return rc; return rc;
} }
@@ -1277,7 +1277,7 @@ int ll_setattr_raw(struct dentry *dentry, struct iattr *attr, bool hsm_import)
return -ENOMEM; return -ENOMEM;
if (!S_ISDIR(inode->i_mode)) if (!S_ISDIR(inode->i_mode))
mutex_unlock(&inode->i_mutex); inode_unlock(inode);
memcpy(&op_data->op_attr, attr, sizeof(*attr)); memcpy(&op_data->op_attr, attr, sizeof(*attr));
@@ -1358,7 +1358,7 @@ out:
ll_finish_md_op_data(op_data); ll_finish_md_op_data(op_data);
if (!S_ISDIR(inode->i_mode)) { if (!S_ISDIR(inode->i_mode)) {
mutex_lock(&inode->i_mutex); inode_lock(inode);
if ((attr->ia_valid & ATTR_SIZE) && !hsm_import) if ((attr->ia_valid & ATTR_SIZE) && !hsm_import)
inode_dio_wait(inode); inode_dio_wait(inode);
} }
@@ -245,9 +245,9 @@ static int ll_get_name(struct dentry *dentry, char *name,
goto out; goto out;
} }
mutex_lock(&dir->i_mutex); inode_lock(dir);
rc = ll_dir_read(dir, &lgd.ctx); rc = ll_dir_read(dir, &lgd.ctx);
mutex_unlock(&dir->i_mutex); inode_unlock(dir);
if (!rc && !lgd.lgd_found) if (!rc && !lgd.lgd_found)
rc = -ENOENT; rc = -ENOENT;
out: out:
+2 -2
View File
@@ -257,9 +257,9 @@ static int do_bio_lustrebacked(struct lloop_device *lo, struct bio *head)
* be asked to write less pages once, this purely depends on * be asked to write less pages once, this purely depends on
* implementation. Anyway, we should be careful to avoid deadlocking. * implementation. Anyway, we should be careful to avoid deadlocking.
*/ */
mutex_lock(&inode->i_mutex); inode_lock(inode);
bytes = ll_direct_rw_pages(env, io, rw, inode, pvec); bytes = ll_direct_rw_pages(env, io, rw, inode, pvec);
mutex_unlock(&inode->i_mutex); inode_unlock(inode);
cl_io_fini(env, io); cl_io_fini(env, io);
return (bytes == pvec->ldp_size) ? 0 : (int)bytes; return (bytes == pvec->ldp_size) ? 0 : (int)bytes;
} }
+2 -2
View File
@@ -115,8 +115,8 @@ static struct ll_cl_context *ll_cl_init(struct file *file,
struct inode *inode = vmpage->mapping->host; struct inode *inode = vmpage->mapping->host;
loff_t pos; loff_t pos;
if (mutex_trylock(&inode->i_mutex)) { if (inode_trylock(inode)) {
mutex_unlock(&(inode)->i_mutex); inode_unlock((inode));
/* this is too bad. Someone is trying to write the /* this is too bad. Someone is trying to write the
* page w/o holding inode mutex. This means we can * page w/o holding inode mutex. This means we can
+2 -2
View File
@@ -403,7 +403,7 @@ static ssize_t ll_direct_IO_26(struct kiocb *iocb, struct iov_iter *iter,
* 1. Need inode mutex to operate transient pages. * 1. Need inode mutex to operate transient pages.
*/ */
if (iov_iter_rw(iter) == READ) if (iov_iter_rw(iter) == READ)
mutex_lock(&inode->i_mutex); inode_lock(inode);
LASSERT(obj->cob_transient_pages == 0); LASSERT(obj->cob_transient_pages == 0);
while (iov_iter_count(iter)) { while (iov_iter_count(iter)) {
@@ -454,7 +454,7 @@ static ssize_t ll_direct_IO_26(struct kiocb *iocb, struct iov_iter *iter,
out: out:
LASSERT(obj->cob_transient_pages == 0); LASSERT(obj->cob_transient_pages == 0);
if (iov_iter_rw(iter) == READ) if (iov_iter_rw(iter) == READ)
mutex_unlock(&inode->i_mutex); inode_unlock(inode);
if (tot_bytes > 0) { if (tot_bytes > 0) {
if (iov_iter_rw(iter) == WRITE) { if (iov_iter_rw(iter) == WRITE) {
+2 -2
View File
@@ -439,7 +439,7 @@ static int vvp_io_setattr_start(const struct lu_env *env,
struct inode *inode = ccc_object_inode(io->ci_obj); struct inode *inode = ccc_object_inode(io->ci_obj);
int result = 0; int result = 0;
mutex_lock(&inode->i_mutex); inode_lock(inode);
if (cl_io_is_trunc(io)) if (cl_io_is_trunc(io))
result = vvp_io_setattr_trunc(env, ios, inode, result = vvp_io_setattr_trunc(env, ios, inode,
io->u.ci_setattr.sa_attr.lvb_size); io->u.ci_setattr.sa_attr.lvb_size);
@@ -459,7 +459,7 @@ static void vvp_io_setattr_end(const struct lu_env *env,
* because osc has already notified to destroy osc_extents. */ * because osc has already notified to destroy osc_extents. */
vvp_do_vmtruncate(inode, io->u.ci_setattr.sa_attr.lvb_size); vvp_do_vmtruncate(inode, io->u.ci_setattr.sa_attr.lvb_size);
mutex_unlock(&inode->i_mutex); inode_unlock(inode);
} }
static void vvp_io_setattr_fini(const struct lu_env *env, static void vvp_io_setattr_fini(const struct lu_env *env,

Some files were not shown because too many files have changed in this diff Show More