Why both gen and gen_no in bdescr?
Block descriptors currently contain both
generation *) and
uint16_t, which is
gen->no cached). I wonder whether it would be worthwhile to drop the former and always use
generations[bd->gen_no]. Afterall, this would save an entire word per descriptor which may improve our caches' coverage of the bdescr region appreciably. Presumably the
generations array would be hot enough to stay in cache in such a scheme, so I would guess that the cost would be small-ish.
Simon, have you measured this in the past?