[LU-3314] failed to check ".lustre" for the MDT upgraded from Lustre-2.x (x <= 3) Created: 10/May/13 Updated: 29/Apr/14 Resolved: 13/May/13 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | Lustre 2.4.0 |
| Fix Version/s: | Lustre 2.4.0 |
| Type: | Bug | Priority: | Blocker |
| Reporter: | nasf (Inactive) | Assignee: | nasf (Inactive) |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | LB, fid | ||
| Severity: | 3 |
| Rank (Obsolete): | 8202 |
| Description |
|
For lustre-2.x (x <= 3), the ".lustre" object has NO FID-in-LMA, so the client will get IGIF for the ".lustre" object when the MDT restart. From the OI scrub view, when the MDT upgrade to Lustre-2.4, it does not know whether there are some alive clients have cached ".lustre" IGIF during the upgrading, so it has to generate IGIF-in-LMA and IGIF-in-OI for ".lustre" object. It will cause the others on the MDT failed to check "fid_is_dot_lustre()". static inline int fid_is_dot_lustre(const struct lu_fid *fid) { return unlikely(fid_seq(fid) == FID_SEQ_DOT_LUSTRE && fid_oid(fid) == FID_OID_DOT_LUSTRE); } |
| Comments |
| Comment by nasf (Inactive) [ 10/May/13 ] |
|
This is the patch: |
| Comment by Andreas Dilger [ 10/May/13 ] |
|
Chris, Ned, |
| Comment by Ned Bass [ 10/May/13 ] |
|
Andreas, thanks a lot for the heads up. |
| Comment by nasf (Inactive) [ 11/May/13 ] |
|
The current solution is that: Use fixed FID {FID_SEQ_DOT_LUSTRE, FID_OID_DOT_LUSTRE, 0} for ".lustre" in spite of whether there are some old clients cached the ".lustre" IGIF or not. It enables the check "fid_is_dot_lustre()" on the MDT, although it will cause that the old connected clients cannot access the ".lustre" with the cached IGIF. Usually, it is rare case for the old connected clients to access the ".lustre" with cached IGIF. |
| Comment by Peter Jones [ 13/May/13 ] |
|
Landed for 2.4 |