On Thu, 10 April 2008 16:07:44 +0200, Arnd Bergmann wrote: > On Tuesday 01 April 2008, joern@xxxxxxxxx wrote: > > +#if BITS_PER_LONG == 32 > > +#define BTREE_NODES 20 /* 32bit, 240 byte nodes */ > > +#else > > +#define BTREE_NODES 16 /* 64bit, 256 byte nodes */ > > +#endif > > + > > +struct btree_node { > > + u64 key; > > + struct btree_node *node; > > +}; > > On 32 bit platforms other than x86, your struct btree_node > is 16 bytes long because of alignment requirements, rather > than the 12 bytes you are assuming. Indeed. Will change the definition. Long-term I'd like to generalize the btree a bit and allow three key variants: long, u64 and u8[]. Some people want to stuff a (u64, u64, u8) tupel into a btree. For those it seems ideal to just treat the key as an array and do memcmp() for comparison. Jörn -- You can't tell where a program is going to spend its time. Bottlenecks occur in surprising places, so don't try to second guess and put in a speed hack until you've proven that's where the bottleneck is. -- Rob Pike -- 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