On Saturday 19 January 2008, Jan Engelhardt wrote:> Hi,
>
> >From the XFS list I gather that btrfs, being able to mount a >16 TB
>
> volume on a 32-bit x86 box, either has some special power - or bug.
> Which of the two is it?
mkfs.btrfs doesn't have to write past 16TB, so it isn't an issue from
userland
(btrfsck is a different story). That would have to shift to O_DIRECT IO,
which wouldn't be horrible now that Yan has extent_buffers ported.
From the kernel, you'll bump into the unsigned long radix tree, which is
only
32 bits. Currently a single address_space is used as the backing for the
block device, which is used for all metadata.
There aren't many functions that care about this, basically just the ones
that
read, write or find pages for extent_buffers.
So, btrfs could chain multiple address spaces together to go beyond 16TB, and
abstract it out in extent_map.c:extend_buffer_page() and a handful of other
spots.
-chris