diff options
author | Christoph Hellwig <hch@tuxera.com> | 2011-02-16 03:34:26 -0500 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2011-06-30 07:40:59 -0400 |
commit | c6d5f5fa658f2569a7baaff5acda261a1316cee9 (patch) | |
tree | 1e7e03558a9229e8fc3aaec450ffa8049a08c96b /fs/hfsplus/super.c | |
parent | 4ba2d5fdcfd19de0dedf394ddc48db2f219fa89a (diff) |
hfsplus: lift the 2TB size limit
Replace the hardcoded 2TB limit with a dynamic limit based on the block
size now that we have fixed the few overflows preventing operation
with large volumes.
Signed-off-by: Christoph Hellwig <hch@tuxera.com>
Diffstat (limited to 'fs/hfsplus/super.c')
-rw-r--r-- | fs/hfsplus/super.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c index 84a47b709f51..acaef57e3606 100644 --- a/fs/hfsplus/super.c +++ b/fs/hfsplus/super.c | |||
@@ -393,6 +393,13 @@ static int hfsplus_fill_super(struct super_block *sb, void *data, int silent) | |||
393 | if (!sbi->rsrc_clump_blocks) | 393 | if (!sbi->rsrc_clump_blocks) |
394 | sbi->rsrc_clump_blocks = 1; | 394 | sbi->rsrc_clump_blocks = 1; |
395 | 395 | ||
396 | err = generic_check_addressable(sbi->alloc_blksz_shift, | ||
397 | sbi->total_blocks); | ||
398 | if (err) { | ||
399 | printk(KERN_ERR "hfs: filesystem size too large.\n"); | ||
400 | goto out_free_vhdr; | ||
401 | } | ||
402 | |||
396 | /* Set up operations so we can load metadata */ | 403 | /* Set up operations so we can load metadata */ |
397 | sb->s_op = &hfsplus_sops; | 404 | sb->s_op = &hfsplus_sops; |
398 | sb->s_maxbytes = MAX_LFS_FILESIZE; | 405 | sb->s_maxbytes = MAX_LFS_FILESIZE; |
@@ -417,6 +424,8 @@ static int hfsplus_fill_super(struct super_block *sb, void *data, int silent) | |||
417 | sb->s_flags |= MS_RDONLY; | 424 | sb->s_flags |= MS_RDONLY; |
418 | } | 425 | } |
419 | 426 | ||
427 | err = -EINVAL; | ||
428 | |||
420 | /* Load metadata objects (B*Trees) */ | 429 | /* Load metadata objects (B*Trees) */ |
421 | sbi->ext_tree = hfs_btree_open(sb, HFSPLUS_EXT_CNID); | 430 | sbi->ext_tree = hfs_btree_open(sb, HFSPLUS_EXT_CNID); |
422 | if (!sbi->ext_tree) { | 431 | if (!sbi->ext_tree) { |