[LU-3472] MDS can't umount with blocked flock Created: 14/Jun/13 Updated: 09/Jan/20 Resolved: 09/Jan/20 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Minor |
| Reporter: | Andriy Skulysh | Assignee: | Bruno Faccini (Inactive) |
| Resolution: | Low Priority | Votes: | 0 |
| Labels: | patch | ||
| Severity: | 3 |
| Rank (Obsolete): | 8700 |
| Description |
|
Here is a testcase |
| Comments |
| Comment by Andriy Skulysh [ 14/Jun/13 ] |
| Comment by Andriy Skulysh [ 14/Jun/13 ] |
|
Xyratex-bug-id: MRP-997 |
| Comment by Bruno Faccini (Inactive) [ 14/Jun/13 ] |
|
I think this is only a timing issue due to the time needed to give-up/time-out the FL_UNLCK attempt during the kill or exit of flock cmds. If you just wait/sleep a few seconds before trying to umount from the Client side or simply retry, you will succeed. |
| Comment by Andreas Dilger [ 17/Jun/13 ] |
|
Bruno, I thought you were already working on a patch to clean up FLOCK locks at unmount time? |
| Comment by Bruno Faccini (Inactive) [ 18/Jun/13 ] |
|
Andreas, I am sure you refer to About this ticket's problem, I just ran the reproducer and found that a 2nd/later umount is successful. |
| Comment by Bruno Faccini (Inactive) [ 02/Jul/13 ] |
|
I restarted auto-test on patch-set #2 since it triggered |
| Comment by Bruno Faccini (Inactive) [ 12/Jul/13 ] |
|
Hello, Andriy, |
| Comment by Bruno Faccini (Inactive) [ 17/Jul/13 ] |
|
So definitely, even with patch (that I agree fixes some coding imbalance and add consistency in calling ldlm_flock_blocking_unlink() from ldlm_resource_unlink_lock()!), there is still some timing/asynchronous side effect on Client during FLock cleanup that cause this. Since "killall" works same way (unless man use its -w option), in your reproducer it can not serialize enough to allow a successful 1st Client umount. May be I am wrong and missed something (tell me!), but I don't think we can fix this, it looks just like to ask for I/Os to be complete when sync() just returns. |
| Comment by Andreas Dilger [ 09/Jan/20 ] |
|
Close old bug |