> > The alignment is fine (the offset of the u16 is 8 bytes), but > > unfortunately with the metag port of gcc, sizeof(struct > > scsi_varlen_cdb_hdr) is rounded up to a 4 byte boundary (even though the > > largest data member alignment is only 2 bytes), which is 12 bytes > > instead of 10. > > That sounds to be a bug in your compiler ... it shouldn't be rounding up > structure sizes if the structure can fit in 10 bytes. This isn't > happening in any other architecture that I know of (otherwise we'd have > had a reported build break). It's not a bug for the alignment rules of the processor as far as I can see. The architectural definition is perfectly entitled to have tail padding in this case. The x86 equivalent would be struct foo { double x; int a; }; which is *NOT* 12 bytes long. It is indeed a portability bug in the scsi layer. Alan -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html