[LU-6475] race between open and migration Created: 18/Apr/15 Updated: 09/Sep/16 Resolved: 24/Aug/15 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | Lustre 2.6.0, Lustre 2.7.0 |
| Fix Version/s: | Lustre 2.8.0 |
| Type: | Bug | Priority: | Critical |
| Reporter: | Di Wang | Assignee: | Di Wang |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | dne2 | ||
| Issue Links: |
|
||||||||||||||||
| Severity: | 3 | ||||||||||||||||
| Rank (Obsolete): | 9223372036854775807 | ||||||||||||||||
| Description |
|
After the directory is migrated to another MDT, the object on the original MDT will be destroyed (mark as DEAD object). If another client is trying to open the file under this directory at the same time (sending RPC to the original MDT), it will then find the object has been destroyed, then return ENOENT to the client, which will cause open fails. See mdt_reint_open(). if (result == -ENOENT || result == -ESTALE) {
mdt_set_disposition(info, ldlm_rep, DISP_LOOKUP_NEG);
if (result == -ESTALE) {
/*
* -ESTALE means the parent is a dead(unlinked) dir, so
* it should return -ENOENT to in accordance with the
* original mds implementaion.
*/
GOTO(out_parent, result = -ENOENT);
}
In this case, we should return the new parent FID to that client and let it retry open. |
| Comments |
| Comment by Gerrit Updater [ 20/Apr/15 ] |
|
wangdi (di.wang@intel.com) uploaded a new patch: http://review.whamcloud.com/14497 |
| Comment by Gerrit Updater [ 24/Aug/15 ] |
|
Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/14497/ |
| Comment by Joseph Gmitter (Inactive) [ 24/Aug/15 ] |
|
Patch has landed for 2.8. |