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:
@@ -141,11 +141,11 @@ nfs4_file_fsync(struct file *file, loff_t start, loff_t end, int datasync)
|
||||
ret = filemap_write_and_wait_range(inode->i_mapping, start, end);
|
||||
if (ret != 0)
|
||||
break;
|
||||
mutex_lock(&inode->i_mutex);
|
||||
inode_lock(inode);
|
||||
ret = nfs_file_fsync_commit(file, start, end, datasync);
|
||||
if (!ret)
|
||||
ret = pnfs_sync_inode(inode, !!datasync);
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
inode_unlock(inode);
|
||||
/*
|
||||
* If nfs_file_fsync_commit detected a server reboot, then
|
||||
* resend all dirty pages that might have been covered by
|
||||
@@ -219,13 +219,13 @@ static int nfs42_clone_file_range(struct file *src_file, loff_t src_off,
|
||||
|
||||
/* XXX: do we lock at all? what if server needs CB_RECALL_LAYOUT? */
|
||||
if (same_inode) {
|
||||
mutex_lock(&src_inode->i_mutex);
|
||||
inode_lock(src_inode);
|
||||
} else if (dst_inode < src_inode) {
|
||||
mutex_lock_nested(&dst_inode->i_mutex, I_MUTEX_PARENT);
|
||||
mutex_lock_nested(&src_inode->i_mutex, I_MUTEX_CHILD);
|
||||
inode_lock_nested(dst_inode, I_MUTEX_PARENT);
|
||||
inode_lock_nested(src_inode, I_MUTEX_CHILD);
|
||||
} else {
|
||||
mutex_lock_nested(&src_inode->i_mutex, I_MUTEX_PARENT);
|
||||
mutex_lock_nested(&dst_inode->i_mutex, I_MUTEX_CHILD);
|
||||
inode_lock_nested(src_inode, I_MUTEX_PARENT);
|
||||
inode_lock_nested(dst_inode, I_MUTEX_CHILD);
|
||||
}
|
||||
|
||||
/* flush all pending writes on both src and dst so that server
|
||||
@@ -246,13 +246,13 @@ static int nfs42_clone_file_range(struct file *src_file, loff_t src_off,
|
||||
|
||||
out_unlock:
|
||||
if (same_inode) {
|
||||
mutex_unlock(&src_inode->i_mutex);
|
||||
inode_unlock(src_inode);
|
||||
} else if (dst_inode < src_inode) {
|
||||
mutex_unlock(&src_inode->i_mutex);
|
||||
mutex_unlock(&dst_inode->i_mutex);
|
||||
inode_unlock(src_inode);
|
||||
inode_unlock(dst_inode);
|
||||
} else {
|
||||
mutex_unlock(&dst_inode->i_mutex);
|
||||
mutex_unlock(&src_inode->i_mutex);
|
||||
inode_unlock(dst_inode);
|
||||
inode_unlock(src_inode);
|
||||
}
|
||||
out:
|
||||
return ret;
|
||||
|
Reference in New Issue
Block a user