Thread (3 messages) 3 messages, 2 authors, 2012-05-22

Re: Which is the maximum files size in BTRFS ? [was Re: btrfs: Probably the larger filesystem I will see for a long time]

From: Goffredo Baroncelli <hidden>
Date: 2012-05-22 19:47:59

On 05/22/2012 07:17 PM, Goffredo Baroncelli wrote:
Hi all,
quoted
From the specification [1] the btrfs maximum file size limit should be
1<<64 bytes. However I was never able to create a file >= 1<<63 bytes.


ghigo@venice:/mnt/old-btrfs/home/ghigo/gianfile$ ls -l giantfile2
-rw-r--r-- 1 ghigo ghigo 9223372036854775807 May 22 18:55 giantfile2
ghigo@venice:/mnt/old-btrfs/home/ghigo/gianfile$ ls -lh giantfile2
-rw-r--r-- 1 ghigo ghigo 8.0E May 22 18:55 giantfile2
ghigo@venice:/mnt/old-btrfs/home/ghigo/gianfile$ echo -n x >>giantfile2
bash: echo: write error: File too large
ghigo@venice:/mnt/old-btrfs/home/ghigo/gianfile$ python -c "print 1<<63"
9223372036854775808

Could be a kernel limit ?
Yes, it seems to be a kernel limit: the generic_file_llseek() function
check the lseek "offset" argument against superblock->s_maxbytes, which
is set to MAX_LFS_FILESIZE in btrfs. (see file fs/read_write.c and
fs/btrfs/super.c).
MAX_LFS_FILESIZE is defined in include/linux/fs.h as

  /* Page cache limit. The filesystems should put that into their
     s_maxbytes limits, otherwise bad things can happen in VM. */

  #if BITS_PER_LONG==32

  #define MAX_LFS_FILESIZE \
	(((u64)PAGE_CACHE_SIZE << (BITS_PER_LONG-1))-1)

  #elif BITS_PER_LONG==64

  #define MAX_LFS_FILESIZE 0x7fffffffffffffffUL

  #endif

Which means that in btrfs under linux there is a file size limit of 8EB
( 0x7fffffffffffffff +1 ).

Goffredo

Goffredo

[1] https://btrfs.wiki.kernel.org/index.php/Main_Page

P.S.
I am asking about this un-useful question because I want to create a
loop based btrfs filesystem on a file greater than 8E. But I was unable
to create a such big file. I got success up to 8E-1



On 05/19/2012 05:03 AM, Christian Robert wrote:
quoted
Probably the larger filesystem I will ever see. Tryed 8 Exabytes but it
failed.

[root@CentOS6-A:/root] # df
Filesystem                    1K-blocks      Used         Available 
Use%  Mounted
/dev/mapper/vg01-root          17915884  11533392           5513572  
68%  /
/dev/sda1                        508745    140314            342831  
30%  /boot
/dev/mapper/data_0             66993872   1644372          61994060   
3%  /mnt/data_0
/dev/mapper/data_1     7881299347898368    508360  7881248224091896   
1%  /mnt/data_1

[root@CentOS6-A:/root] # df -h
Filesystem             Size  Used  Avail  Use%  Mounted
/dev/mapper/vg01-root   18G   11G   5.3G   68%  /
/dev/sda1              497M  138M   335M   30%  /boot
/dev/mapper/data_0      64G  1.6G    60G    3%  /mnt/data_0
/dev/mapper/data_1     7.0E  497M   7.0E    1%  /mnt/data_1

[root@CentOS6-A:/root] # df -Th
Filesystem              Type  Size  Used  Avail  Use%
/dev/mapper/vg01-root   ext4   18G   11G   5.3G  68%
/dev/sda1               ext4  497M  138M   335M  30%
/dev/mapper/data_0      ext4   64G  1.6G    60G  3%
/dev/mapper/data_1     btrfs  7.0E  499M   7.0E  1%
[root@CentOS6-A:/root] #


[root@CentOS6-A:/root] # uname -rv
3.4.0-rc7+ #23 SMP Wed May 16 20:20:47 EDT 2012


made with a dm-thin device sitting on a device pair composed of
(metadata 256Megs and data 23 Gigs)

running on my laptop at home.

yes, this is 7 Exabytes or 7,168 Petabytes or ( 7,340,032 Terabytes ) or
7,516,192,768 Gigabytes.


please do not answer, it is just a statement of a fact at 3.4-rc7 (was
not working at 3.4-rc3 if I remember).


Xtian.
-- 
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
.
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help