diff options
Diffstat (limited to 'fs/ext4/super.c')
| -rw-r--r-- | fs/ext4/super.c | 29 | 
1 files changed, 18 insertions, 11 deletions
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index ba191dae873..e14d22c170d 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -68,7 +68,21 @@ static int ext4_statfs(struct dentry *dentry, struct kstatfs *buf);  static int ext4_unfreeze(struct super_block *sb);  static void ext4_write_super(struct super_block *sb);  static int ext4_freeze(struct super_block *sb); +static int ext4_get_sb(struct file_system_type *fs_type, int flags, +		       const char *dev_name, void *data, struct vfsmount *mnt); +#if !defined(CONFIG_EXT3_FS) && !defined(CONFIG_EXT3_FS_MODULE) && defined(CONFIG_EXT4_USE_FOR_EXT23) +static struct file_system_type ext3_fs_type = { +	.owner		= THIS_MODULE, +	.name		= "ext3", +	.get_sb		= ext4_get_sb, +	.kill_sb	= kill_block_super, +	.fs_flags	= FS_REQUIRES_DEV, +}; +#define IS_EXT3_SB(sb) ((sb)->s_bdev->bd_holder == &ext3_fs_type) +#else +#define IS_EXT3_SB(sb) (0) +#endif  ext4_fsblk_t ext4_block_bitmap(struct super_block *sb,  			       struct ext4_group_desc *bg) @@ -2539,7 +2553,8 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)  	 * enable delayed allocation by default  	 * Use -o nodelalloc to turn it off  	 */ -	set_opt(sbi->s_mount_opt, DELALLOC); +	if (!IS_EXT3_SB(sb)) +		set_opt(sbi->s_mount_opt, DELALLOC);  	if (!parse_options((char *) data, sb, &journal_devnum,  			   &journal_ioprio, NULL, 0)) @@ -4068,7 +4083,7 @@ static int ext4_get_sb(struct file_system_type *fs_type, int flags,  	return get_sb_bdev(fs_type, flags, dev_name, data, ext4_fill_super,mnt);  } -#if !defined(CONTIG_EXT2_FS) && !defined(CONFIG_EXT2_FS_MODULE) && defined(CONFIG_EXT4_USE_FOR_EXT23) +#if !defined(CONFIG_EXT2_FS) && !defined(CONFIG_EXT2_FS_MODULE) && defined(CONFIG_EXT4_USE_FOR_EXT23)  static struct file_system_type ext2_fs_type = {  	.owner		= THIS_MODULE,  	.name		= "ext2", @@ -4095,15 +4110,7 @@ static inline void register_as_ext2(void) { }  static inline void unregister_as_ext2(void) { }  #endif -#if !defined(CONTIG_EXT3_FS) && !defined(CONFIG_EXT3_FS_MODULE) && defined(CONFIG_EXT4_USE_FOR_EXT23) -static struct file_system_type ext3_fs_type = { -	.owner		= THIS_MODULE, -	.name		= "ext3", -	.get_sb		= ext4_get_sb, -	.kill_sb	= kill_block_super, -	.fs_flags	= FS_REQUIRES_DEV, -}; - +#if !defined(CONFIG_EXT3_FS) && !defined(CONFIG_EXT3_FS_MODULE) && defined(CONFIG_EXT4_USE_FOR_EXT23)  static inline void register_as_ext3(void)  {  	int err = register_filesystem(&ext3_fs_type);  |