Hi All, Attached is a proposed patch, which should solve some issues with mixed endians. Unfortunately I was not able to access the latest code on the CVS to see what other fixes might be there. -------------- next part -------------- A non-text attachment was scrubbed... Name: pack_generic.diff Type: text/x-patch Size: 2816 bytes Desc: not available Url : http://mail.clusterfs.com/pipermail/lustre-discuss/attachments/20061206/9dd0b802/pack_generic.bin
Nathaniel Rutman
2006-Dec-06 11:59 UTC
[Lustre-discuss] Re: [Lustre-devel] Big litle endian issues in 1.6 beta 5
There are a couple more patches in https://bugzilla.lustre.org/show_bug.cgi?id=11214 Itamar Ofek wrote:> Hi All, > > Attached is a proposed patch, which should solve some issues with mixed > endians. Unfortunately I was not able to access the latest code on the > CVS to see what other fixes might be there. > > ------------------------------------------------------------------------ > > --- lustre/ptlrpc/pack_generic.c 2006-09-01 03:53:21.000000000 +0300 > +++ pack_generic.c 2006-12-06 14:16:45.000000000 +0200 > @@ -64,9 +64,6 @@ > { > __u32 ver = lustre_msg_get_version(msg); > > - if (lustre_msg_swabbed(msg)) > - return (__swab32(ver) & LUSTRE_VERSION_MASK) != version; > - > return (ver & LUSTRE_VERSION_MASK) != version; > } > > @@ -646,14 +643,6 @@ > int flipped, required_len, i; > ENTRY; > > - /* Now we know the sender speaks my language. */ > - required_len = lustre_msg_hdr_size_v1(0); > - if (len < required_len) { > - /* can''t even look inside the message */ > - CERROR("message length %d too small for lustre_msg\n", len); > - RETURN(-EINVAL); > - } > - > flipped = lustre_msg_swabbed((struct lustre_msg *)m); > > if (flipped) { > @@ -669,6 +658,14 @@ > __swab32s(&m->lm_bufcount); > } > > + /* Now we know the sender speaks my language. */ > + required_len = lustre_msg_hdr_size_v1(0); > + if (len < required_len) { > + /* can''t even look inside the message */ > + CERROR("message length %d too small for lustre_msg\n", len); > + RETURN(-EINVAL); > + } > + > if (m->lm_version != PTLRPC_MSG_VERSION) { > CERROR("wrong lustre_msg version %08x\n", m->lm_version); > RETURN(-EINVAL); > @@ -703,14 +701,6 @@ > { > int flipped, required_len, i; > > - required_len = lustre_msg_hdr_size_v2(m->lm_bufcount); > - if (len < required_len) { > - /* didn''t receive all the buffer lengths */ > - CERROR ("message length %d too small for %d buflens\n", > - len, m->lm_bufcount); > - return -EINVAL; > - } > - > flipped = lustre_msg_swabbed(m); > > if (flipped) { > @@ -719,6 +709,13 @@ > __swab32s(&m->lm_repsize); > } > > + required_len = lustre_msg_hdr_size_v2(m->lm_bufcount); > + if (len < required_len) { > + /* didn''t receive all the buffer lengths */ > + CERROR ("message length %d too small for %d buflens\n", > + len, m->lm_bufcount); > + return -EINVAL; > + } > for (i = 0; i < m->lm_bufcount; i++) { > if (flipped) > __swab32s(&m->lm_buflens[i]); > @@ -747,8 +744,10 @@ > * rather than a short message. > * > */ > + > required_len = offsetof(struct lustre_msg, lm_magic) + > sizeof(m->lm_magic); > + > if (len < required_len) { > /* can''t even look inside the message */ > CERROR("message length %d too small for magic/version check\n", > > ------------------------------------------------------------------------ > > _______________________________________________ > Lustre-devel mailing list > Lustre-devel@clusterfs.com > https://mail.clusterfs.com/mailman/listinfo/lustre-devel >