Details
-
Bug
-
Resolution: Fixed
-
Critical
-
Lustre 2.6.0, Lustre 2.7.0
-
3
-
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.