diff options
author | Alex Tomas <alex@clusterfs.com> | 2006-10-11 04:21:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-11 14:14:16 -0400 |
commit | a86c61812637c7dd0c57e29880cffd477b62f2e7 (patch) | |
tree | 10737307293afde2999a887cfeac32c7d7584aa7 /fs/ext4/super.c | |
parent | c3fcc8137ce4296ad6ab94f88bd60cbe03d21527 (diff) |
[PATCH] ext3: add extent map support
On disk extents format:
/*
* this is extent on-disk structure
* it's used at the bottom of the tree
*/
struct ext3_extent {
__le32 ee_block; /* first logical block extent covers */
__le16 ee_len; /* number of blocks covered by extent */
__le16 ee_start_hi; /* high 16 bits of physical block */
__le32 ee_start; /* low 32 bigs of physical block */
};
Signed-off-by: Alex Tomas <alex@clusterfs.com>
Signed-off-by: Dave Kleikamp <shaggy@austin.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/ext4/super.c')
-rw-r--r-- | fs/ext4/super.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index f131bb69b62e..69f875250500 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
@@ -390,6 +390,7 @@ static void ext4_put_super (struct super_block * sb) | |||
390 | struct ext4_super_block *es = sbi->s_es; | 390 | struct ext4_super_block *es = sbi->s_es; |
391 | int i; | 391 | int i; |
392 | 392 | ||
393 | ext4_ext_release(sb); | ||
393 | ext4_xattr_put_super(sb); | 394 | ext4_xattr_put_super(sb); |
394 | jbd2_journal_destroy(sbi->s_journal); | 395 | jbd2_journal_destroy(sbi->s_journal); |
395 | if (!(sb->s_flags & MS_RDONLY)) { | 396 | if (!(sb->s_flags & MS_RDONLY)) { |
@@ -454,6 +455,7 @@ static struct inode *ext4_alloc_inode(struct super_block *sb) | |||
454 | #endif | 455 | #endif |
455 | ei->i_block_alloc_info = NULL; | 456 | ei->i_block_alloc_info = NULL; |
456 | ei->vfs_inode.i_version = 1; | 457 | ei->vfs_inode.i_version = 1; |
458 | memset(&ei->i_cached_extent, 0, sizeof(struct ext4_ext_cache)); | ||
457 | return &ei->vfs_inode; | 459 | return &ei->vfs_inode; |
458 | } | 460 | } |
459 | 461 | ||
@@ -677,7 +679,7 @@ enum { | |||
677 | Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota, | 679 | Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota, |
678 | Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota, | 680 | Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota, |
679 | Opt_ignore, Opt_barrier, Opt_err, Opt_resize, Opt_usrquota, | 681 | Opt_ignore, Opt_barrier, Opt_err, Opt_resize, Opt_usrquota, |
680 | Opt_grpquota | 682 | Opt_grpquota, Opt_extents, |
681 | }; | 683 | }; |
682 | 684 | ||
683 | static match_table_t tokens = { | 685 | static match_table_t tokens = { |
@@ -727,6 +729,7 @@ static match_table_t tokens = { | |||
727 | {Opt_quota, "quota"}, | 729 | {Opt_quota, "quota"}, |
728 | {Opt_usrquota, "usrquota"}, | 730 | {Opt_usrquota, "usrquota"}, |
729 | {Opt_barrier, "barrier=%u"}, | 731 | {Opt_barrier, "barrier=%u"}, |
732 | {Opt_extents, "extents"}, | ||
730 | {Opt_err, NULL}, | 733 | {Opt_err, NULL}, |
731 | {Opt_resize, "resize"}, | 734 | {Opt_resize, "resize"}, |
732 | }; | 735 | }; |
@@ -1059,6 +1062,9 @@ clear_qf_name: | |||
1059 | case Opt_bh: | 1062 | case Opt_bh: |
1060 | clear_opt(sbi->s_mount_opt, NOBH); | 1063 | clear_opt(sbi->s_mount_opt, NOBH); |
1061 | break; | 1064 | break; |
1065 | case Opt_extents: | ||
1066 | set_opt (sbi->s_mount_opt, EXTENTS); | ||
1067 | break; | ||
1062 | default: | 1068 | default: |
1063 | printk (KERN_ERR | 1069 | printk (KERN_ERR |
1064 | "EXT4-fs: Unrecognized mount option \"%s\" " | 1070 | "EXT4-fs: Unrecognized mount option \"%s\" " |
@@ -1787,6 +1793,8 @@ static int ext4_fill_super (struct super_block *sb, void *data, int silent) | |||
1787 | test_opt(sb,DATA_FLAGS) == EXT4_MOUNT_ORDERED_DATA ? "ordered": | 1793 | test_opt(sb,DATA_FLAGS) == EXT4_MOUNT_ORDERED_DATA ? "ordered": |
1788 | "writeback"); | 1794 | "writeback"); |
1789 | 1795 | ||
1796 | ext4_ext_init(sb); | ||
1797 | |||
1790 | lock_kernel(); | 1798 | lock_kernel(); |
1791 | return 0; | 1799 | return 0; |
1792 | 1800 | ||