[LU-8858] o_lcookie is not swabbed properly Created: 22/Nov/16 Updated: 22/Nov/16 Resolved: 22/Nov/16 |
|
| Status: | Closed |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | Lustre 1.8.x (1.8.0 - 1.8.5), Lustre 2.1.6 |
| Fix Version/s: | Lustre 2.8.0 |
| Type: | Bug | Priority: | Minor |
| Reporter: | Wang Shilong (Inactive) | Assignee: | WC Triage |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Severity: | 3 |
| Rank (Obsolete): | 9223372036854775807 |
| Description |
|
We hit a problem when using Sparc Client vs x86_64 Lustre server(Server is 2.1.6) Call Trace: Kernel panic - not syncing: LBUG But we could mount x86_64 client using same Lustre version, problems seems come to I still could not see where master branch fix the problem, so i think latest master branch |
| Comments |
| Comment by Gerrit Updater [ 22/Nov/16 ] |
|
Wang Shilong (wshilong@ddn.com) uploaded a new patch: http://review.whamcloud.com/23891 |
| Comment by Andreas Dilger [ 22/Nov/16 ] |
|
Since 2.8 the client does not pass o_lcookie from the MDS at all, it is only used internally by the OSP on the MDS. All of the code to pass the cookie from the MDS to the OSS via the client was removed in patch http://review.whamcloud.com/12922 " Even on 2.3 and earlier clients, the cookie is opaque to the client and is only passed through the client from the MDS to the OSS, so the client shouldn't be swabbing this structure. Do you have the actual LASSERT() that is failing? Is it: static inline struct llog_ctxt *llog_group_get_ctxt(struct obd_llog_group *olg, int index) { struct llog_ctxt *ctxt; LASSERT(index >= 0 && index < LLOG_MAX_CTXTS); This shouldn't be LASSERTing on data from the network. Do you have any idea what values were being sent for index? I'm not against adding the swabbing on the client, but I don't think that is actually fixing the right problem. It may be that the 2.8 client is just sending garbage values in this field and swabbing won't make any difference. |
| Comment by Wang Shilong (Inactive) [ 22/Nov/16 ] |
|
Hi Andreas, Sorry, i did not make it clear enough, Problem Client version is b1_8 based. and We applied this patch in the Server |
| Comment by Wang Shilong (Inactive) [ 22/Nov/16 ] |
|
I checked codes again, In the 1.8 series and 2.1 series branch, I could see o_lcookie passed from Clients to MDS. [root@localhost lustre-release]# git grep o_lcookie lustre/include/lustre/lustre_idl.h: struct llog_cookie o_lcookie; /* destroy: unlink cookie from MDS */ lustre/obdclass/obdo.c: dst->o_lcookie = src->o_lcookie; lustre/obdfilter/filter.c: *fcc = oa->o_lcookie; lustre/obdfilter/filter.c: fcc = &oa->o_lcookie; lustre/obdfilter/filter.c: *fcc = oa->o_lcookie; lustre/obdfilter/filter_log.c: oa->o_lcookie = *cookie; lustre/obdfilter/filter_log.c: oinfo.oi_oa->o_lcookie = *cookie; lustre/osc/osc_request.c: oinfo->oi_oa->o_lcookie = *oti->oti_logcookies; lustre/osc/osc_request.c: *oti->oti_logcookies = oa->o_lcookie; lustre/osc/osc_request.c: oa->o_lcookie = *oti->oti_logcookies; lustre/ost/ost_handler.c: oti->oti_logcookies = &body->oa.o_lcookie; lustre/ost/ost_handler.c: oti->oti_logcookies = &repbody->oa.o_lcookie; lustre/ptlrpc/wiretest.c: LASSERTF((int)offsetof(struct obdo, o_lcookie) == 136, " found %lld\n", lustre/ptlrpc/wiretest.c: (long long)(int)offsetof(struct obdo, o_lcookie)); lustre/ptlrpc/wiretest.c: LASSERTF((int)sizeof(((struct obdo *)0)->o_lcookie) == 32, " found %lld\n", lustre/ptlrpc/wiretest.c: (long long)(int)sizeof(((struct obdo *)0)->o_lcookie)); lustre/utils/wirecheck.c: CHECK_MEMBER(obdo, o_lcookie); lustre/utils/wiretest.c: LASSERTF((int)offsetof(struct obdo, o_lcookie) == 136, " found %lld\n", lustre/utils/wiretest.c: (long long)(int)offsetof(struct obdo, o_lcookie)); lustre/utils/wiretest.c: LASSERTF((int)sizeof(((struct obdo *)0)->o_lcookie) == 32, " found %lld\n", lustre/utils/wiretest.c: (long long)(int)sizeof(((struct obdo *)0)->o_lcookie)); But in the latest master codes Clients won't pass o_lcookie to server any more. |
| Comment by Wang Shilong (Inactive) [ 22/Nov/16 ] |
|
Problem dose not exist in the latest master. |