diff options
Diffstat (limited to 'fs/ext4/super.c')
-rw-r--r-- | fs/ext4/super.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 4e104dd0ec21..2bf9cdd7a036 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
@@ -1004,6 +1004,7 @@ static int parse_options (char *options, struct super_block *sb, | |||
1004 | int qtype, qfmt; | 1004 | int qtype, qfmt; |
1005 | char *qname; | 1005 | char *qname; |
1006 | #endif | 1006 | #endif |
1007 | ext4_fsblk_t last_block; | ||
1007 | 1008 | ||
1008 | if (!options) | 1009 | if (!options) |
1009 | return 1; | 1010 | return 1; |
@@ -1326,6 +1327,20 @@ set_qf_format: | |||
1326 | set_opt (sbi->s_mount_opt, EXTENTS); | 1327 | set_opt (sbi->s_mount_opt, EXTENTS); |
1327 | break; | 1328 | break; |
1328 | case Opt_noextents: | 1329 | case Opt_noextents: |
1330 | /* | ||
1331 | * When e2fsprogs support resizing an already existing | ||
1332 | * ext3 file system to greater than 2**32 we need to | ||
1333 | * add support to block allocator to handle growing | ||
1334 | * already existing block mapped inode so that blocks | ||
1335 | * allocated for them fall within 2**32 | ||
1336 | */ | ||
1337 | last_block = ext4_blocks_count(sbi->s_es) - 1; | ||
1338 | if (last_block > 0xffffffffULL) { | ||
1339 | printk(KERN_ERR "EXT4-fs: Filesystem too " | ||
1340 | "large to mount with " | ||
1341 | "-o noextents options\n"); | ||
1342 | return 0; | ||
1343 | } | ||
1329 | clear_opt (sbi->s_mount_opt, EXTENTS); | 1344 | clear_opt (sbi->s_mount_opt, EXTENTS); |
1330 | break; | 1345 | break; |
1331 | case Opt_i_version: | 1346 | case Opt_i_version: |