David Mosberger wrote:
> The current Linux kernel (both 2.4.xx and 2.5.xx) declare the b_size
> member in struct buffer_head as an "unsigned short". This obviously
> limits the maximum block size to something less than 65536. This is
> bad because on some platforms (e.g., ia64), the page size can be up to
> 64KB large.
> Two questions:
> - does anyone object to widening b_size to "unsigned int"?
Sounds OK to me for 2.5.
I do have vague plans to remove b_data and to replace all instances
with buffer_data(), which would kmap the page and calculate the address.
Not that I've really thought this through...
This may lead to the introduction of a `b_offset'. Which would be 16
bits, which would snuggle in with the 16-bit b_size. But I would
scale both these values by 256 or 512, for the reasons which you
For 2.4, a 32-bit b_size would push sizeof(buffer_head) from 96 up
to 100 bytes, which does not pack as well into the slab. This would
be an intensely unpopular move. So you'd have to ifdef it. Which
makes it an ia64-only problem, which greatly improves your merge
> - does anyone know of any other code paths where the block
> size is assumed to fit into 16 bits?
Not off the top, but they're probably there.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to email@example.com
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Tue May 14 2002 - 12:00:13 EST