Details
-
Bug
-
Resolution: Fixed
-
Blocker
-
Lustre 2.10.0, Lustre 2.11.0
-
None
-
2
-
9223372036854775807
Description
Consider the following scenarios:
1) The Thread1 calls osd_attr_set() to set flags on the object. The osd_attr_set() will call the osd_xattr_get() with holding the read mode semaphore on the object::oo_guard.
2) The Thread2 calls osd_declare_destroy() to destroy the object, it will down_write() on the object::oo_gurad, but be blocked by the Thread1's granted read mode semaphore.
3) The osd_xattr_get() triggered by the osd_xattr_set() will also down_read() on the object::oo_guard. But it will be blocked by the Thread2's pending down_write() request.
Then the Thread1 and the Thread2 deadlock.
John L. Hammond (john.hammond@intel.com) merged in patch https://review.whamcloud.com/31514/
Subject:
LU-10769osd-zfs: fix deadlock on osd_object::oo_guardProject: fs/lustre-release
Branch: b2_10
Current Patch Set:
Commit: 0e51abb8a512213b58579e66a9d74133001877ff