mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-27 03:19:35 +03:00
Revert "Fix z_xattr_lock/z_teardown_lock lock inversion"
This reverts commit 6b32ef572f754efc3f9edb20d022450f8e6b02d9.
This commit is contained in:
parent
151f84e2c3
commit
228b461b56
@ -1012,16 +1012,7 @@ zfs_rezget(znode_t *zp)
|
|||||||
}
|
}
|
||||||
mutex_exit(&zp->z_acl_lock);
|
mutex_exit(&zp->z_acl_lock);
|
||||||
|
|
||||||
/*
|
rw_enter(&zp->z_xattr_lock, RW_WRITER);
|
||||||
* Lock inversion with zpl_xattr_get->__zpl_xattr_get->zfs_lookup
|
|
||||||
* between z_xattr_lock and z_teardown_lock. Detect this case and
|
|
||||||
* return EBUSY so zfs_resume_fs() will mark the inode stale and it
|
|
||||||
* will safely be revalidated on next access.
|
|
||||||
*/
|
|
||||||
err = rw_tryenter(&zp->z_xattr_lock, RW_WRITER);
|
|
||||||
if (!err)
|
|
||||||
return (SET_ERROR(EBUSY));
|
|
||||||
|
|
||||||
if (zp->z_xattr_cached) {
|
if (zp->z_xattr_cached) {
|
||||||
nvlist_free(zp->z_xattr_cached);
|
nvlist_free(zp->z_xattr_cached);
|
||||||
zp->z_xattr_cached = NULL;
|
zp->z_xattr_cached = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user