summaryrefslogtreecommitdiffstats
path: root/fs/ufs/truncate.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2015-06-16 02:35:14 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2015-07-06 17:39:19 -0400
commitf3e0f3da1b65e84ea82176c1cda03a4b694c9911 (patch)
tree783f8b58b36656f1237b00dbf60af1eeeecbcec0 /fs/ufs/truncate.c
parentd770e558e21961ad6cfdf0ff7df0eb5d7d4f0754 (diff)
downloadop-kernel-dev-f3e0f3da1b65e84ea82176c1cda03a4b694c9911.zip
op-kernel-dev-f3e0f3da1b65e84ea82176c1cda03a4b694c9911.tar.gz
ufs: kill more lock_ufs() calls
a) move it inside ufs_truncate() b) ufs_free_inode() doesn't need it - it's serialized on ->s_lock c) ufs_write_inode() doesn't need it either (and can be called without it anyway). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/ufs/truncate.c')
-rw-r--r--fs/ufs/truncate.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/ufs/truncate.c b/fs/ufs/truncate.c
index 2115470..90cf3a7 100644
--- a/fs/ufs/truncate.c
+++ b/fs/ufs/truncate.c
@@ -457,6 +457,7 @@ int ufs_truncate(struct inode *inode, loff_t old_i_size)
if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
return -EPERM;
+ lock_ufs(sb);
err = ufs_alloc_lastblock(inode);
if (err) {
@@ -486,6 +487,7 @@ int ufs_truncate(struct inode *inode, loff_t old_i_size)
ufsi->i_lastfrag = DIRECT_FRAGMENT;
mark_inode_dirty(inode);
out:
+ unlock_ufs(sb);
UFSD("EXIT: err %d\n", err);
return err;
}
@@ -506,9 +508,7 @@ int ufs_setattr(struct dentry *dentry, struct iattr *attr)
/* XXX(truncate): truncate_setsize should be called last */
truncate_setsize(inode, attr->ia_size);
- lock_ufs(inode->i_sb);
error = ufs_truncate(inode, old_i_size);
- unlock_ufs(inode->i_sb);
if (error)
return error;
}
OpenPOWER on IntegriCloud