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>
		
			
				
	
	
		
			22 lines
		
	
	
	
		
			305 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
	
		
			305 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef _LINUX_STATFS_H
 | 
						|
#define _LINUX_STATFS_H
 | 
						|
 | 
						|
#include <linux/types.h>
 | 
						|
 | 
						|
#include <asm/statfs.h>
 | 
						|
 | 
						|
struct kstatfs {
 | 
						|
	long f_type;
 | 
						|
	long f_bsize;
 | 
						|
	u64 f_blocks;
 | 
						|
	u64 f_bfree;
 | 
						|
	u64 f_bavail;
 | 
						|
	u64 f_files;
 | 
						|
	u64 f_ffree;
 | 
						|
	__kernel_fsid_t f_fsid;
 | 
						|
	long f_namelen;
 | 
						|
	long f_frsize;
 | 
						|
	long f_spare[5];
 | 
						|
};
 | 
						|
 | 
						|
#endif
 |