Details
-
Bug
-
Resolution: Fixed
-
Blocker
-
Lustre 2.1.6, Lustre 2.6.0, Lustre 2.5.2, Lustre 2.4.3
-
3
-
12984
Description
the current rename code locks objects in the order: src parent, dst parent, src child, dst child. it may happen that dst is a parent of src, what may lead to deadlock.
example from a core dump:
res1 - dst parent
res2 - dst parent, PDO
res3 - src parent
Thread 1 (T1), rename:
Has RES3 (CW,0x2)
Wants RES1 (CW,0x2)
Thread 2 (T2), getattr:
Has RES1(CR,0x2)
Has RES2(PR,0x2)
Wants RES3(PR,0x2) - blocked by T1
Thread 3 (T3), create or open|create
Has RES1(CW,0x2)
Wants RES2(PW,0x2) - blocked by T2
Thread4 (T4), getattr or similar
Wants RES1(PR,0x2) - blocked by T3
T1 has no conflicts, but is sitting in the waiting queue behind T4, thus not granted.
Attachments
Issue Links
- duplicates
-
LU-5178 object leak in mdt_rename_sanity()
-
- Closed
-
- is related to
-
LU-5514 After upgrade from 1.8.7 to 2.5.2 stack trace cfs_hash_bd_lookup_intent
-
- Resolved
-
-
LU-5111 interop 2.5 server and higher version client failure on test suite sanityn test_55a: mv succeeded
-
- Resolved
-
-
LU-16589 sanityn test_55d: FAIL: (2) mv succeeded
-
- Resolved
-
-
LU-5178 object leak in mdt_rename_sanity()
-
- Closed
-
The result for first patch shows two tests, this because first patch is not complete.
All 19 tests pass for second patch. (I was not sure where to mention it in gerrit, so updating here).
http://review.whamcloud.com/#/c/10916/
http://review.whamcloud.com/#/c/10917/