Eric Sandeen wrote: > Boaz Harrosh wrote: > > ... > >> I don't understand >> >> if you have a structure like >> struct foo { >> u32 one; >> u32 two; >> }; >> vs >> struct foo_packed { >> u32 one; >> u32 two; >> } __packed; >> >> Just adding an __attribute__((packed)) to it clearly does not change >> the layout of the structure. Are you saying the __attribute__((packed)) >> is an hint to the compiler that foo_packed might be used unaligned. This >> is just brain-dead, because I can use an unaligned pointer to foo just as >> I can to foo_packed. Otherwise there is no difference what-so-ever between >> the two. I have to see it to believe. It is totally the wrong hint in the >> wrong place taking away valuable meaning of saying "please don't use padding >> holes in this structure" >> >> Sorry for been so slow, I just don't get it. >> Boaz > > While I'm no gcc guru, I can confirm that gratuitous use of the packed > attribute is suboptimal; adding "packed" to every ondisk structure made > obdump -d xfs.ko | wc -l explode by about 15,000 lines on ia64. Yes! but are the structures the same? that is sizeof(foo_packed) == sizeof(foo) ? If not then clearly above is expected. In anyway, if __attribute__((packed)) makes some brain-dead gcc do the wrong thing putting a _Padding member where you expect an alignment hole, and a BUILD_BUG_ON(sizeof() != ()) statement somewhere in code is a must, specifically for the brain-dead. > > -Eric There are to many places in Kernel where these things are left to chance that give me an headache, not talking about cross platform mounts. Boaz -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html