Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] 2TB files: change type of kstatfs entries

This fix was proposed by Trond Myklebust. He says: The type "sector_t" is
heavily tied in to the block layer interface as an offset/handle to a block,
and is subject to a supposedly block-specific configuration option:
CONFIG_LBD. Despite this, it is used in struct kstatfs to save a couple of
bytes on the stack whenever we call the filesystems' ->statfs().

So kstatfs's entries related to blocks are invalid on statfs64 for a network
filesystem which has more than 2^32-1 blocks when CONFIG_LBD is disabled.

- struct kstatfs
Change the type of following entries from sector_t to u64.
f_blocks
f_bfree
f_bavail
f_files
f_ffree

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Signed-off-by: Takashi Sato <sho@tnes.nec.co.jp>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Takashi Sato and committed by
Linus Torvalds
e2d53f95 5515eff8

+5 -5
+5 -5
include/linux/statfs.h
··· 8 8 struct kstatfs { 9 9 long f_type; 10 10 long f_bsize; 11 - sector_t f_blocks; 12 - sector_t f_bfree; 13 - sector_t f_bavail; 14 - sector_t f_files; 15 - sector_t f_ffree; 11 + u64 f_blocks; 12 + u64 f_bfree; 13 + u64 f_bavail; 14 + u64 f_files; 15 + u64 f_ffree; 16 16 __kernel_fsid_t f_fsid; 17 17 long f_namelen; 18 18 long f_frsize;