xfs
[Top] [All Lists]

Re: mount failed after xfs_growfs beyond 16 TB

To: Eric Sandeen <sandeen@xxxxxxxxxxx>
Subject: Re: mount failed after xfs_growfs beyond 16 TB
From: Timothy Shimmin <tes@xxxxxxx>
Date: Mon, 06 Nov 2006 11:15:22 +1000
Cc: David Chinner <dgc@xxxxxxx>, Christian Guggenberger <christian.guggenberger@xxxxxxxxxxxxxxxxxxxxxxxx>, xfs@xxxxxxxxxxx
In-reply-to: <454B5833.9030008@xxxxxxxxxxx>
References: <20061102172608.GA27769@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <20061103004142.GI8394166@xxxxxxxxxxxxxxxxx> <454B5833.9030008@xxxxxxxxxxx>
Sender: xfs-bounce@xxxxxxxxxxx
Good idea, Eric.
I've created a pv.
I noticed this was taken from xfs_mount_validate_sb() for the dblocks test.
I guess it would be nice to abstract this test in a macro for use in multiple 
places.

Cheers,
Tim.

--On 3 November 2006 8:54:43 AM -0600 Eric Sandeen <sandeen@xxxxxxxxxxx> wrote:

David Chinner wrote:
On Thu, Nov 02, 2006 at 06:26:08PM +0100, Christian Guggenberger wrote:
Hi,

a colleague recently tried to grow a 16 TB filesystem (x86, 32bit) on
top of lvm2 to 17TB. (I am not even sure if that's supposed work with
linux-2.6, 32bit)

Not supported - any metadata access past 16TB will wrap the 32 bit page cache
index for the metadata address space and you'll corrupt the filesystem.


Ohhhh right.  I've been in x86_64 land for too long, sorry for the earlier 
false assertion....  :(

xfs guys, if it's not there already (and I don't see it from a quick look..) 
growfs -really-
should refuse (in the kernel) to grow a filesystem past 16T on a 32-bit 
machine, just as we
refuse to mount one.  something like this in xfs_growfs_data_private:

# if XFS_BIG_BLKNOS     /* Limited by ULONG_MAX of page cache index */
         if (unlikely(
             (nb >> (PAGE_SHIFT - sbp->sb_blocklog)) > ULONG_MAX) {
# else                  /* Limited by UINT_MAX of sectors */
         if (unlikely(
             (nb << (sbp->sb_blocklog - BBSHIFT)) > UINT_MAX) {
# endif
                 cmn_err(CE_WARN,
                         "new filesystem size too large for this system.");
                 return XFS_ERROR(E2BIG);
         }

and something similar in xfs_growfs_rt ?

-Eric






<Prev in Thread] Current Thread [Next in Thread>