diff options
author | Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> | 2008-01-28 23:58:27 -0500 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2008-01-28 23:58:27 -0500 |
commit | 8180a5627d126362c2f64e4fa886d6f608d9632a (patch) | |
tree | 1b3a3261f72f8245afdd87088703641c76f60392 /fs/ext4/super.c | |
parent | 0fc1b451471dfc3cabd6e99ef441df9804616e63 (diff) | |
download | kernel-crypto-8180a5627d126362c2f64e4fa886d6f608d9632a.tar.gz kernel-crypto-8180a5627d126362c2f64e4fa886d6f608d9632a.tar.xz kernel-crypto-8180a5627d126362c2f64e4fa886d6f608d9632a.zip |
ext4: Support large files
This patch converts ext4_inode i_blocks to represent total
blocks occupied by the inode in file system block size.
Earlier the variable used to represent this in 512 byte
block size. This actually limited the total size of the file.
The feature is enabled transparently when we write an inode
whose i_blocks cannot be represnted as 512 byte units in a
48 bit variable.
inode flag EXT4_HUGE_FILE_FL
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Diffstat (limited to 'fs/ext4/super.c')
-rw-r--r-- | fs/ext4/super.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 2b9dc96ec43..64067de70c6 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -1631,11 +1631,14 @@ static loff_t ext4_max_size(int bits) upper_limit >>= (bits - 9); } else { - /* We use 48 bit ext4_inode i_blocks */ + /* + * We use 48 bit ext4_inode i_blocks + * With EXT4_HUGE_FILE_FL set the i_blocks + * represent total number of blocks in + * file system block size + */ upper_limit = (1LL << 48) - 1; - /* total blocks in file system block size */ - upper_limit >>= (bits - 9); } /* indirect blocks */ |