mirror of https://gitee.com/openkylin/linux.git
reiserfs: Relax reiserfs_xattr_set_handle() while acquiring xattr locks
Fix remaining xattr locks acquired in reiserfs_xattr_set_handle() while we are holding the reiserfs lock to avoid lock inversions. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Christian Kujau <lists@nerdbynature.de> Cc: Alexander Beregalov <a.beregalov@gmail.com> Cc: Chris Mason <chris.mason@oracle.com> Cc: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
e0baec1b63
commit
31370f62ba
|
@ -559,8 +559,12 @@ reiserfs_xattr_set_handle(struct reiserfs_transaction_handle *th,
|
|||
.ia_size = buffer_size,
|
||||
.ia_valid = ATTR_SIZE | ATTR_CTIME,
|
||||
};
|
||||
|
||||
reiserfs_write_unlock(inode->i_sb);
|
||||
mutex_lock_nested(&dentry->d_inode->i_mutex, I_MUTEX_XATTR);
|
||||
down_write(&dentry->d_inode->i_alloc_sem);
|
||||
reiserfs_write_lock(inode->i_sb);
|
||||
|
||||
err = reiserfs_setattr(dentry, &newattrs);
|
||||
up_write(&dentry->d_inode->i_alloc_sem);
|
||||
mutex_unlock(&dentry->d_inode->i_mutex);
|
||||
|
|
Loading…
Reference in New Issue