lkml.org 
[lkml]   [1999]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: files >4gig [WAS Adding more than 8 swap partitions]
On Fri, Jun 04, 1999 at 07:45:12PM -0400, Uncle George wrote:
> So I created a 17 gig file using Linux 2.2.9 & a file in /tmp.
> Interestingly enough at 17 gig I get an error 22 ( still have space &
> inodes available ).

EINVAL is per standards error code for exceeding filesystem
addressability range. EFBIG would have been more intuitive,
I think, but this is what POSIX and Single Unix Specification
tell us to use :-/

You have 1k blocksize at your filesystem, and you are actually
seeing 16 GB + epsilon worth of file offset range.

... in the 32-bit front, it seems that during 2.3.* the systems
will be able to address file offsets up to 512 * 4G = 2 TB.
Not quite sizeof(page_size) * 4G that my initial code did..
(intel has 4kB pages)

> YOU ALSO NOW HAVE A CORRUPT / BUSTED-SUPER-BLOCK in the partition.
> fsck wants to use an alternate superblock, and suggests using 8192(?),
> which doesn't work. :-\
> this is the little pgm used to create the 17gig sparse file.
> So I guess its not a 2/4gig boundary problem anymore.
> gat
>
> BTW it may be that fsck cant handle it ( redhat 5.0 vintage ), but I
> dunno at the moment :( It just at reboot time, i always force a fsck.
> Removeing the 17gig file didn't help :-(

That guess is correct, that old fsck DOESN'T handle it.

/Matti Aarnio <matti.aarnio@sonera.fi>

From my 'try-lfs.c' program comments:

/*
* Execution of this program creates a large (looking) file at
* local system. The execution of this program stops at offset
* which is just beyond what the local filesystem can support.
*
* In case the local filesystem is EXT2 or UFS, the triply-
* indirection scheme can support up to following sizes per
* filesystem basic block size:
*
* 512 2 GB + epsilon
* 1k 16 GB + epsilon
* 2k 128 GB + epsilon
* 4k 1024 GB + epsilon
* 8k 8192 GB + epsilon ( not without PAGE_SIZE >= 8 kB )
*
* However, the basic block device layer can support only up to
* 4G blocks of 512 bytes; being at safe side, lets say 2G blocks
* of 512 bytes: 1024 GB without epsilon.
*
* The basic filesystem block size supportable at given system is
* currently dependent on what the system page cache page size is.
* If the filesystem basic block exceeds of the system page size,
* the system does not work currently. (2.2.* series kernels.)
*
*
* bb = sizeof(basic block)
* B = bb / 4
* MaxSize = bb * (B^3 + B^2 + B + 10)
* = bb^4 / 4^3 + bb^3 / 4^2 + bb^2 / 4^1 + 10 * bb
* = bb^4 / 64 + bb^3 / 16 + bb^2 / 4 + 10 * bb
*
* The primary term (bb^4/64) yields that 16 GB for bb=1k
* The 'epsilon' is all the rest, and is less than 1/250 of
* the primary term for 1kB, even less for larger bb values.
*
*
* The EXT2 (and UFS) can address up to 4G of "basic blocks", however
* that limit will likely to be beyond of other limitations from other
* parts of the system.
*
*/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:52    [W:0.056 / U:0.656 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site