• T
    [PATCH] 2TB files: st_blocks is invalid when calling stat64 · abcb6c9f
    Takashi Sato 提交于
    This patch series fixes the following problems on 32 bits architecture.
    
    o stat64 returns the lower 32 bits of blocks, although userland st_blocks
      has 64 bits, because i_blocks has only 32 bits.  The ioctl with FIOQSIZE has
      the same problem.
    
    o As Dave Kleikamp said, making >2TB file on JFS results in writing an
      invalid block number to disk inode.  The cause is the same as above too.
    
    o In generic quota code dquot_transfer(), the file usage is calculated from
      i_blocks via inode_get_bytes().  If the file is over 2TB, the change of
      usage is less than expected.  The cause is the same as above too.
    
    o As Trond Myklebust said, statfs64's entries related to blocks are invalid
      on statfs64 for a network filesystem which has more than 2^32-1 blocks with
      CONFIG_LBD disabled.  [PATCH 3/3]
    
    We made patches to fix problems that occur when handling a large filesystem
    and a large file.  It was discussed on the mails titled "stat64 for over 2TB
    file returned invalid st_blocks".
    Signed-off-by: NTakashi Sato <sho@tnes.nec.co.jp>
    Cc: Dave Kleikamp <shaggy@austin.ibm.com>
    Cc: Jan Kara <jack@ucw.cz>
    Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
    Signed-off-by: NAndrew Morton <akpm@osdl.org>
    Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
    abcb6c9f
fs.h 66.8 KB