[LU-15245] getxattr can lead to MDS thread exhaustion and deadlock Created: 17/Nov/21 Updated: 05/May/22 Resolved: 06/Jan/22 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | Lustre 2.15.0 |
| Type: | Improvement | Priority: | Major |
| Reporter: | Patrick Farrell | Assignee: | Patrick Farrell |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||
| Rank (Obsolete): | 9223372036854775807 | ||||
| Description |
|
When selinux is enabled, a getxattr becomes part of lookup. So, this sequence occurs: -------- Client B attempts a modifying operation on resource X, so it requests a conflicting lock on resource X. Now we have client C... Client D... client E, F, G, H ... etc. You can easily see how any number of threads can be consumed like this. So now, go back to client A: And now client A is holding lock A, but it cannot complete the operation. So, eventually client A is evicted because it can't give the lock back. The solution is to move getaxttr - and getattr for consistency, as there may be a possible bug there as well - to the MDS_READPAGE portal. |
| Comments |
| Comment by Gerrit Updater [ 17/Nov/21 ] |
|
"Patrick Farrell <pfarrell@whamcloud.com>" uploaded a new patch: https://review.whamcloud.com/45593 |
| Comment by Gerrit Updater [ 06/Jan/22 ] |
|
"Oleg Drokin <green@whamcloud.com>" merged in patch https://review.whamcloud.com/45593/ |
| Comment by Peter Jones [ 06/Jan/22 ] |
|
Landed for 2.15 |