ext4: do not convert to indirect with bigalloc enabled
authorLukas Czerner <lczerner@redhat.com>
Thu, 11 Apr 2013 14:54:46 +0000 (10:54 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 11 Apr 2013 14:54:46 +0000 (10:54 -0400)
With bigalloc feature enabled we do not support indirect addressing at all
so we have to prevent extent addressing to indirect addressing
conversion in this case. The problem has been introduced with the commit
"ext4: support simple conversion of extent-mapped inodes to use i_blocks"

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/migrate.c

index d129a4dc16a713834b81ff7d6bb330cbbf8be1ce..49e8bdff9163e830931570f4c2660cea201ab3fd 100644 (file)
@@ -625,6 +625,10 @@ int ext4_ind_migrate(struct inode *inode)
            (!ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)))
                return -EINVAL;
 
+       if (EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb,
+                                      EXT4_FEATURE_RO_COMPAT_BIGALLOC))
+               return -EOPNOTSUPP;
+
        handle = ext4_journal_start(inode, EXT4_HT_MIGRATE, 1);
        if (IS_ERR(handle))
                return PTR_ERR(handle);