xfs
[Top] [All Lists]

Re: mount failed after xfs_growfs beyond 16 TB

To: David Chinner <dgc@xxxxxxx>
Subject: Re: mount failed after xfs_growfs beyond 16 TB
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Fri, 03 Nov 2006 08:54:43 -0600
Cc: Christian Guggenberger <christian.guggenberger@xxxxxxxxxxxxxxxxxxxxxxxx>, xfs@xxxxxxxxxxx
In-reply-to: <20061103004142.GI8394166@xxxxxxxxxxxxxxxxx>
References: <20061102172608.GA27769@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <20061103004142.GI8394166@xxxxxxxxxxxxxxxxx>
Sender: xfs-bounce@xxxxxxxxxxx
User-agent: Thunderbird 1.5.0.7 (Macintosh/20060909)
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>