diff options
-rw-r--r-- | fs/ext4/bitmap.c | 12 | ||||
-rw-r--r-- | fs/ext4/ext4.h | 8 | ||||
-rw-r--r-- | fs/ext4/extents.c | 6 | ||||
-rw-r--r-- | fs/ext4/ialloc.c | 3 | ||||
-rw-r--r-- | fs/ext4/inline.c | 3 | ||||
-rw-r--r-- | fs/ext4/inode.c | 9 | ||||
-rw-r--r-- | fs/ext4/ioctl.c | 3 | ||||
-rw-r--r-- | fs/ext4/mmp.c | 6 | ||||
-rw-r--r-- | fs/ext4/namei.c | 39 | ||||
-rw-r--r-- | fs/ext4/resize.c | 3 | ||||
-rw-r--r-- | fs/ext4/super.c | 15 | ||||
-rw-r--r-- | fs/ext4/xattr.c | 6 |
12 files changed, 43 insertions, 70 deletions
diff --git a/fs/ext4/bitmap.c b/fs/ext4/bitmap.c index 3285aa5a706a..b610779a958c 100644 --- a/fs/ext4/bitmap.c +++ b/fs/ext4/bitmap.c | |||
@@ -24,8 +24,7 @@ int ext4_inode_bitmap_csum_verify(struct super_block *sb, ext4_group_t group, | |||
24 | __u32 provided, calculated; | 24 | __u32 provided, calculated; |
25 | struct ext4_sb_info *sbi = EXT4_SB(sb); | 25 | struct ext4_sb_info *sbi = EXT4_SB(sb); |
26 | 26 | ||
27 | if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, | 27 | if (!ext4_has_metadata_csum(sb)) |
28 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
29 | return 1; | 28 | return 1; |
30 | 29 | ||
31 | provided = le16_to_cpu(gdp->bg_inode_bitmap_csum_lo); | 30 | provided = le16_to_cpu(gdp->bg_inode_bitmap_csum_lo); |
@@ -46,8 +45,7 @@ void ext4_inode_bitmap_csum_set(struct super_block *sb, ext4_group_t group, | |||
46 | __u32 csum; | 45 | __u32 csum; |
47 | struct ext4_sb_info *sbi = EXT4_SB(sb); | 46 | struct ext4_sb_info *sbi = EXT4_SB(sb); |
48 | 47 | ||
49 | if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, | 48 | if (!ext4_has_metadata_csum(sb)) |
50 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
51 | return; | 49 | return; |
52 | 50 | ||
53 | csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)bh->b_data, sz); | 51 | csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)bh->b_data, sz); |
@@ -65,8 +63,7 @@ int ext4_block_bitmap_csum_verify(struct super_block *sb, ext4_group_t group, | |||
65 | struct ext4_sb_info *sbi = EXT4_SB(sb); | 63 | struct ext4_sb_info *sbi = EXT4_SB(sb); |
66 | int sz = EXT4_CLUSTERS_PER_GROUP(sb) / 8; | 64 | int sz = EXT4_CLUSTERS_PER_GROUP(sb) / 8; |
67 | 65 | ||
68 | if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, | 66 | if (!ext4_has_metadata_csum(sb)) |
69 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
70 | return 1; | 67 | return 1; |
71 | 68 | ||
72 | provided = le16_to_cpu(gdp->bg_block_bitmap_csum_lo); | 69 | provided = le16_to_cpu(gdp->bg_block_bitmap_csum_lo); |
@@ -91,8 +88,7 @@ void ext4_block_bitmap_csum_set(struct super_block *sb, ext4_group_t group, | |||
91 | __u32 csum; | 88 | __u32 csum; |
92 | struct ext4_sb_info *sbi = EXT4_SB(sb); | 89 | struct ext4_sb_info *sbi = EXT4_SB(sb); |
93 | 90 | ||
94 | if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, | 91 | if (!ext4_has_metadata_csum(sb)) |
95 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
96 | return; | 92 | return; |
97 | 93 | ||
98 | csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)bh->b_data, sz); | 94 | csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)bh->b_data, sz); |
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 012e89bd9644..1483d9c6061f 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h | |||
@@ -2337,6 +2337,14 @@ static inline int ext4_has_group_desc_csum(struct super_block *sb) | |||
2337 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM); | 2337 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM); |
2338 | } | 2338 | } |
2339 | 2339 | ||
2340 | static inline int ext4_has_metadata_csum(struct super_block *sb) | ||
2341 | { | ||
2342 | WARN_ON_ONCE(EXT4_HAS_RO_COMPAT_FEATURE(sb, | ||
2343 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM) && | ||
2344 | !EXT4_SB(sb)->s_chksum_driver); | ||
2345 | |||
2346 | return (EXT4_SB(sb)->s_chksum_driver != NULL); | ||
2347 | } | ||
2340 | static inline ext4_fsblk_t ext4_blocks_count(struct ext4_super_block *es) | 2348 | static inline ext4_fsblk_t ext4_blocks_count(struct ext4_super_block *es) |
2341 | { | 2349 | { |
2342 | return ((ext4_fsblk_t)le32_to_cpu(es->s_blocks_count_hi) << 32) | | 2350 | return ((ext4_fsblk_t)le32_to_cpu(es->s_blocks_count_hi) << 32) | |
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index c3ed9af20d20..37043d0b2be8 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c | |||
@@ -73,8 +73,7 @@ static int ext4_extent_block_csum_verify(struct inode *inode, | |||
73 | { | 73 | { |
74 | struct ext4_extent_tail *et; | 74 | struct ext4_extent_tail *et; |
75 | 75 | ||
76 | if (!EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 76 | if (!ext4_has_metadata_csum(inode->i_sb)) |
77 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
78 | return 1; | 77 | return 1; |
79 | 78 | ||
80 | et = find_ext4_extent_tail(eh); | 79 | et = find_ext4_extent_tail(eh); |
@@ -88,8 +87,7 @@ static void ext4_extent_block_csum_set(struct inode *inode, | |||
88 | { | 87 | { |
89 | struct ext4_extent_tail *et; | 88 | struct ext4_extent_tail *et; |
90 | 89 | ||
91 | if (!EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 90 | if (!ext4_has_metadata_csum(inode->i_sb)) |
92 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
93 | return; | 91 | return; |
94 | 92 | ||
95 | et = find_ext4_extent_tail(eh); | 93 | et = find_ext4_extent_tail(eh); |
diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c index 5b87fc36aab8..8012a5daf401 100644 --- a/fs/ext4/ialloc.c +++ b/fs/ext4/ialloc.c | |||
@@ -1011,8 +1011,7 @@ got: | |||
1011 | spin_unlock(&sbi->s_next_gen_lock); | 1011 | spin_unlock(&sbi->s_next_gen_lock); |
1012 | 1012 | ||
1013 | /* Precompute checksum seed for inode metadata */ | 1013 | /* Precompute checksum seed for inode metadata */ |
1014 | if (EXT4_HAS_RO_COMPAT_FEATURE(sb, | 1014 | if (ext4_has_metadata_csum(sb)) { |
1015 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) { | ||
1016 | __u32 csum; | 1015 | __u32 csum; |
1017 | __le32 inum = cpu_to_le32(inode->i_ino); | 1016 | __le32 inum = cpu_to_le32(inode->i_ino); |
1018 | __le32 gen = cpu_to_le32(inode->i_generation); | 1017 | __le32 gen = cpu_to_le32(inode->i_generation); |
diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c index 378aadf5e6db..3ea62695abce 100644 --- a/fs/ext4/inline.c +++ b/fs/ext4/inline.c | |||
@@ -1128,8 +1128,7 @@ static int ext4_finish_convert_inline_dir(handle_t *handle, | |||
1128 | memcpy((void *)de, buf + EXT4_INLINE_DOTDOT_SIZE, | 1128 | memcpy((void *)de, buf + EXT4_INLINE_DOTDOT_SIZE, |
1129 | inline_size - EXT4_INLINE_DOTDOT_SIZE); | 1129 | inline_size - EXT4_INLINE_DOTDOT_SIZE); |
1130 | 1130 | ||
1131 | if (EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 1131 | if (ext4_has_metadata_csum(inode->i_sb)) |
1132 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
1133 | csum_size = sizeof(struct ext4_dir_entry_tail); | 1132 | csum_size = sizeof(struct ext4_dir_entry_tail); |
1134 | 1133 | ||
1135 | inode->i_size = inode->i_sb->s_blocksize; | 1134 | inode->i_size = inode->i_sb->s_blocksize; |
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 0dd9150c0c04..e9777f93cf05 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c | |||
@@ -83,8 +83,7 @@ static int ext4_inode_csum_verify(struct inode *inode, struct ext4_inode *raw, | |||
83 | 83 | ||
84 | if (EXT4_SB(inode->i_sb)->s_es->s_creator_os != | 84 | if (EXT4_SB(inode->i_sb)->s_es->s_creator_os != |
85 | cpu_to_le32(EXT4_OS_LINUX) || | 85 | cpu_to_le32(EXT4_OS_LINUX) || |
86 | !EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 86 | !ext4_has_metadata_csum(inode->i_sb)) |
87 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
88 | return 1; | 87 | return 1; |
89 | 88 | ||
90 | provided = le16_to_cpu(raw->i_checksum_lo); | 89 | provided = le16_to_cpu(raw->i_checksum_lo); |
@@ -105,8 +104,7 @@ static void ext4_inode_csum_set(struct inode *inode, struct ext4_inode *raw, | |||
105 | 104 | ||
106 | if (EXT4_SB(inode->i_sb)->s_es->s_creator_os != | 105 | if (EXT4_SB(inode->i_sb)->s_es->s_creator_os != |
107 | cpu_to_le32(EXT4_OS_LINUX) || | 106 | cpu_to_le32(EXT4_OS_LINUX) || |
108 | !EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 107 | !ext4_has_metadata_csum(inode->i_sb)) |
109 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
110 | return; | 108 | return; |
111 | 109 | ||
112 | csum = ext4_inode_csum(inode, raw, ei); | 110 | csum = ext4_inode_csum(inode, raw, ei); |
@@ -3928,8 +3926,7 @@ struct inode *ext4_iget(struct super_block *sb, unsigned long ino) | |||
3928 | ei->i_extra_isize = 0; | 3926 | ei->i_extra_isize = 0; |
3929 | 3927 | ||
3930 | /* Precompute checksum seed for inode metadata */ | 3928 | /* Precompute checksum seed for inode metadata */ |
3931 | if (EXT4_HAS_RO_COMPAT_FEATURE(sb, | 3929 | if (ext4_has_metadata_csum(sb)) { |
3932 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) { | ||
3933 | struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); | 3930 | struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); |
3934 | __u32 csum; | 3931 | __u32 csum; |
3935 | __le32 inum = cpu_to_le32(inode->i_ino); | 3932 | __le32 inum = cpu_to_le32(inode->i_ino); |
diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index 3d5de16f028f..bfda18a15592 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c | |||
@@ -331,8 +331,7 @@ flags_out: | |||
331 | if (!inode_owner_or_capable(inode)) | 331 | if (!inode_owner_or_capable(inode)) |
332 | return -EPERM; | 332 | return -EPERM; |
333 | 333 | ||
334 | if (EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 334 | if (ext4_has_metadata_csum(inode->i_sb)) { |
335 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) { | ||
336 | ext4_warning(sb, "Setting inode version is not " | 335 | ext4_warning(sb, "Setting inode version is not " |
337 | "supported with metadata_csum enabled."); | 336 | "supported with metadata_csum enabled."); |
338 | return -ENOTTY; | 337 | return -ENOTTY; |
diff --git a/fs/ext4/mmp.c b/fs/ext4/mmp.c index 32bce844c2e1..8313ca3324ec 100644 --- a/fs/ext4/mmp.c +++ b/fs/ext4/mmp.c | |||
@@ -20,8 +20,7 @@ static __le32 ext4_mmp_csum(struct super_block *sb, struct mmp_struct *mmp) | |||
20 | 20 | ||
21 | static int ext4_mmp_csum_verify(struct super_block *sb, struct mmp_struct *mmp) | 21 | static int ext4_mmp_csum_verify(struct super_block *sb, struct mmp_struct *mmp) |
22 | { | 22 | { |
23 | if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, | 23 | if (!ext4_has_metadata_csum(sb)) |
24 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
25 | return 1; | 24 | return 1; |
26 | 25 | ||
27 | return mmp->mmp_checksum == ext4_mmp_csum(sb, mmp); | 26 | return mmp->mmp_checksum == ext4_mmp_csum(sb, mmp); |
@@ -29,8 +28,7 @@ static int ext4_mmp_csum_verify(struct super_block *sb, struct mmp_struct *mmp) | |||
29 | 28 | ||
30 | static void ext4_mmp_csum_set(struct super_block *sb, struct mmp_struct *mmp) | 29 | static void ext4_mmp_csum_set(struct super_block *sb, struct mmp_struct *mmp) |
31 | { | 30 | { |
32 | if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, | 31 | if (!ext4_has_metadata_csum(sb)) |
33 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
34 | return; | 32 | return; |
35 | 33 | ||
36 | mmp->mmp_checksum = ext4_mmp_csum(sb, mmp); | 34 | mmp->mmp_checksum = ext4_mmp_csum(sb, mmp); |
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index 7037ecf0fc23..61756f941ed0 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c | |||
@@ -124,8 +124,7 @@ static struct buffer_head *__ext4_read_dirblock(struct inode *inode, | |||
124 | "directory leaf block found instead of index block"); | 124 | "directory leaf block found instead of index block"); |
125 | return ERR_PTR(-EIO); | 125 | return ERR_PTR(-EIO); |
126 | } | 126 | } |
127 | if (!EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 127 | if (!ext4_has_metadata_csum(inode->i_sb) || |
128 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM) || | ||
129 | buffer_verified(bh)) | 128 | buffer_verified(bh)) |
130 | return bh; | 129 | return bh; |
131 | 130 | ||
@@ -338,8 +337,7 @@ int ext4_dirent_csum_verify(struct inode *inode, struct ext4_dir_entry *dirent) | |||
338 | { | 337 | { |
339 | struct ext4_dir_entry_tail *t; | 338 | struct ext4_dir_entry_tail *t; |
340 | 339 | ||
341 | if (!EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 340 | if (!ext4_has_metadata_csum(inode->i_sb)) |
342 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
343 | return 1; | 341 | return 1; |
344 | 342 | ||
345 | t = get_dirent_tail(inode, dirent); | 343 | t = get_dirent_tail(inode, dirent); |
@@ -360,8 +358,7 @@ static void ext4_dirent_csum_set(struct inode *inode, | |||
360 | { | 358 | { |
361 | struct ext4_dir_entry_tail *t; | 359 | struct ext4_dir_entry_tail *t; |
362 | 360 | ||
363 | if (!EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 361 | if (!ext4_has_metadata_csum(inode->i_sb)) |
364 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
365 | return; | 362 | return; |
366 | 363 | ||
367 | t = get_dirent_tail(inode, dirent); | 364 | t = get_dirent_tail(inode, dirent); |
@@ -436,8 +433,7 @@ static int ext4_dx_csum_verify(struct inode *inode, | |||
436 | struct dx_tail *t; | 433 | struct dx_tail *t; |
437 | int count_offset, limit, count; | 434 | int count_offset, limit, count; |
438 | 435 | ||
439 | if (!EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 436 | if (!ext4_has_metadata_csum(inode->i_sb)) |
440 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
441 | return 1; | 437 | return 1; |
442 | 438 | ||
443 | c = get_dx_countlimit(inode, dirent, &count_offset); | 439 | c = get_dx_countlimit(inode, dirent, &count_offset); |
@@ -466,8 +462,7 @@ static void ext4_dx_csum_set(struct inode *inode, struct ext4_dir_entry *dirent) | |||
466 | struct dx_tail *t; | 462 | struct dx_tail *t; |
467 | int count_offset, limit, count; | 463 | int count_offset, limit, count; |
468 | 464 | ||
469 | if (!EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 465 | if (!ext4_has_metadata_csum(inode->i_sb)) |
470 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
471 | return; | 466 | return; |
472 | 467 | ||
473 | c = get_dx_countlimit(inode, dirent, &count_offset); | 468 | c = get_dx_countlimit(inode, dirent, &count_offset); |
@@ -555,8 +550,7 @@ static inline unsigned dx_root_limit(struct inode *dir, unsigned infosize) | |||
555 | unsigned entry_space = dir->i_sb->s_blocksize - EXT4_DIR_REC_LEN(1) - | 550 | unsigned entry_space = dir->i_sb->s_blocksize - EXT4_DIR_REC_LEN(1) - |
556 | EXT4_DIR_REC_LEN(2) - infosize; | 551 | EXT4_DIR_REC_LEN(2) - infosize; |
557 | 552 | ||
558 | if (EXT4_HAS_RO_COMPAT_FEATURE(dir->i_sb, | 553 | if (ext4_has_metadata_csum(dir->i_sb)) |
559 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
560 | entry_space -= sizeof(struct dx_tail); | 554 | entry_space -= sizeof(struct dx_tail); |
561 | return entry_space / sizeof(struct dx_entry); | 555 | return entry_space / sizeof(struct dx_entry); |
562 | } | 556 | } |
@@ -565,8 +559,7 @@ static inline unsigned dx_node_limit(struct inode *dir) | |||
565 | { | 559 | { |
566 | unsigned entry_space = dir->i_sb->s_blocksize - EXT4_DIR_REC_LEN(0); | 560 | unsigned entry_space = dir->i_sb->s_blocksize - EXT4_DIR_REC_LEN(0); |
567 | 561 | ||
568 | if (EXT4_HAS_RO_COMPAT_FEATURE(dir->i_sb, | 562 | if (ext4_has_metadata_csum(dir->i_sb)) |
569 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
570 | entry_space -= sizeof(struct dx_tail); | 563 | entry_space -= sizeof(struct dx_tail); |
571 | return entry_space / sizeof(struct dx_entry); | 564 | return entry_space / sizeof(struct dx_entry); |
572 | } | 565 | } |
@@ -1524,8 +1517,7 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir, | |||
1524 | int csum_size = 0; | 1517 | int csum_size = 0; |
1525 | int err = 0, i; | 1518 | int err = 0, i; |
1526 | 1519 | ||
1527 | if (EXT4_HAS_RO_COMPAT_FEATURE(dir->i_sb, | 1520 | if (ext4_has_metadata_csum(dir->i_sb)) |
1528 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
1529 | csum_size = sizeof(struct ext4_dir_entry_tail); | 1521 | csum_size = sizeof(struct ext4_dir_entry_tail); |
1530 | 1522 | ||
1531 | bh2 = ext4_append(handle, dir, &newblock); | 1523 | bh2 = ext4_append(handle, dir, &newblock); |
@@ -1691,8 +1683,7 @@ static int add_dirent_to_buf(handle_t *handle, struct dentry *dentry, | |||
1691 | int csum_size = 0; | 1683 | int csum_size = 0; |
1692 | int err; | 1684 | int err; |
1693 | 1685 | ||
1694 | if (EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 1686 | if (ext4_has_metadata_csum(inode->i_sb)) |
1695 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
1696 | csum_size = sizeof(struct ext4_dir_entry_tail); | 1687 | csum_size = sizeof(struct ext4_dir_entry_tail); |
1697 | 1688 | ||
1698 | if (!de) { | 1689 | if (!de) { |
@@ -1759,8 +1750,7 @@ static int make_indexed_dir(handle_t *handle, struct dentry *dentry, | |||
1759 | struct fake_dirent *fde; | 1750 | struct fake_dirent *fde; |
1760 | int csum_size = 0; | 1751 | int csum_size = 0; |
1761 | 1752 | ||
1762 | if (EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 1753 | if (ext4_has_metadata_csum(inode->i_sb)) |
1763 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
1764 | csum_size = sizeof(struct ext4_dir_entry_tail); | 1754 | csum_size = sizeof(struct ext4_dir_entry_tail); |
1765 | 1755 | ||
1766 | blocksize = dir->i_sb->s_blocksize; | 1756 | blocksize = dir->i_sb->s_blocksize; |
@@ -1877,8 +1867,7 @@ static int ext4_add_entry(handle_t *handle, struct dentry *dentry, | |||
1877 | ext4_lblk_t block, blocks; | 1867 | ext4_lblk_t block, blocks; |
1878 | int csum_size = 0; | 1868 | int csum_size = 0; |
1879 | 1869 | ||
1880 | if (EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 1870 | if (ext4_has_metadata_csum(inode->i_sb)) |
1881 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
1882 | csum_size = sizeof(struct ext4_dir_entry_tail); | 1871 | csum_size = sizeof(struct ext4_dir_entry_tail); |
1883 | 1872 | ||
1884 | sb = dir->i_sb; | 1873 | sb = dir->i_sb; |
@@ -2142,8 +2131,7 @@ static int ext4_delete_entry(handle_t *handle, | |||
2142 | return err; | 2131 | return err; |
2143 | } | 2132 | } |
2144 | 2133 | ||
2145 | if (EXT4_HAS_RO_COMPAT_FEATURE(dir->i_sb, | 2134 | if (ext4_has_metadata_csum(dir->i_sb)) |
2146 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
2147 | csum_size = sizeof(struct ext4_dir_entry_tail); | 2135 | csum_size = sizeof(struct ext4_dir_entry_tail); |
2148 | 2136 | ||
2149 | BUFFER_TRACE(bh, "get_write_access"); | 2137 | BUFFER_TRACE(bh, "get_write_access"); |
@@ -2362,8 +2350,7 @@ static int ext4_init_new_dir(handle_t *handle, struct inode *dir, | |||
2362 | int csum_size = 0; | 2350 | int csum_size = 0; |
2363 | int err; | 2351 | int err; |
2364 | 2352 | ||
2365 | if (EXT4_HAS_RO_COMPAT_FEATURE(dir->i_sb, | 2353 | if (ext4_has_metadata_csum(dir->i_sb)) |
2366 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
2367 | csum_size = sizeof(struct ext4_dir_entry_tail); | 2354 | csum_size = sizeof(struct ext4_dir_entry_tail); |
2368 | 2355 | ||
2369 | if (ext4_test_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA)) { | 2356 | if (ext4_test_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA)) { |
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c index bb0e80f03e2e..d5afb0a0cf25 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c | |||
@@ -1210,8 +1210,7 @@ static int ext4_set_bitmap_checksums(struct super_block *sb, | |||
1210 | { | 1210 | { |
1211 | struct buffer_head *bh; | 1211 | struct buffer_head *bh; |
1212 | 1212 | ||
1213 | if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, | 1213 | if (!ext4_has_metadata_csum(sb)) |
1214 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
1215 | return 0; | 1214 | return 0; |
1216 | 1215 | ||
1217 | bh = ext4_get_bitmap(sb, group_data->inode_bitmap); | 1216 | bh = ext4_get_bitmap(sb, group_data->inode_bitmap); |
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index a0811cc00c91..5afe42db303c 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
@@ -140,8 +140,7 @@ static __le32 ext4_superblock_csum(struct super_block *sb, | |||
140 | static int ext4_superblock_csum_verify(struct super_block *sb, | 140 | static int ext4_superblock_csum_verify(struct super_block *sb, |
141 | struct ext4_super_block *es) | 141 | struct ext4_super_block *es) |
142 | { | 142 | { |
143 | if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, | 143 | if (!ext4_has_metadata_csum(sb)) |
144 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
145 | return 1; | 144 | return 1; |
146 | 145 | ||
147 | return es->s_checksum == ext4_superblock_csum(sb, es); | 146 | return es->s_checksum == ext4_superblock_csum(sb, es); |
@@ -151,8 +150,7 @@ void ext4_superblock_csum_set(struct super_block *sb) | |||
151 | { | 150 | { |
152 | struct ext4_super_block *es = EXT4_SB(sb)->s_es; | 151 | struct ext4_super_block *es = EXT4_SB(sb)->s_es; |
153 | 152 | ||
154 | if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, | 153 | if (!ext4_has_metadata_csum(sb)) |
155 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
156 | return; | 154 | return; |
157 | 155 | ||
158 | es->s_checksum = ext4_superblock_csum(sb, es); | 156 | es->s_checksum = ext4_superblock_csum(sb, es); |
@@ -1989,8 +1987,7 @@ static __le16 ext4_group_desc_csum(struct ext4_sb_info *sbi, __u32 block_group, | |||
1989 | __u16 crc = 0; | 1987 | __u16 crc = 0; |
1990 | __le32 le_group = cpu_to_le32(block_group); | 1988 | __le32 le_group = cpu_to_le32(block_group); |
1991 | 1989 | ||
1992 | if ((sbi->s_es->s_feature_ro_compat & | 1990 | if (ext4_has_metadata_csum(sbi->s_sb)) { |
1993 | cpu_to_le32(EXT4_FEATURE_RO_COMPAT_METADATA_CSUM))) { | ||
1994 | /* Use new metadata_csum algorithm */ | 1991 | /* Use new metadata_csum algorithm */ |
1995 | __le16 save_csum; | 1992 | __le16 save_csum; |
1996 | __u32 csum32; | 1993 | __u32 csum32; |
@@ -3199,8 +3196,7 @@ static int set_journal_csum_feature_set(struct super_block *sb) | |||
3199 | int compat, incompat; | 3196 | int compat, incompat; |
3200 | struct ext4_sb_info *sbi = EXT4_SB(sb); | 3197 | struct ext4_sb_info *sbi = EXT4_SB(sb); |
3201 | 3198 | ||
3202 | if (EXT4_HAS_RO_COMPAT_FEATURE(sb, | 3199 | if (ext4_has_metadata_csum(sb)) { |
3203 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) { | ||
3204 | /* journal checksum v3 */ | 3200 | /* journal checksum v3 */ |
3205 | compat = 0; | 3201 | compat = 0; |
3206 | incompat = JBD2_FEATURE_INCOMPAT_CSUM_V3; | 3202 | incompat = JBD2_FEATURE_INCOMPAT_CSUM_V3; |
@@ -3508,8 +3504,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) | |||
3508 | } | 3504 | } |
3509 | 3505 | ||
3510 | /* Precompute checksum seed for all metadata */ | 3506 | /* Precompute checksum seed for all metadata */ |
3511 | if (EXT4_HAS_RO_COMPAT_FEATURE(sb, | 3507 | if (ext4_has_metadata_csum(sb)) |
3512 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
3513 | sbi->s_csum_seed = ext4_chksum(sbi, ~0, es->s_uuid, | 3508 | sbi->s_csum_seed = ext4_chksum(sbi, ~0, es->s_uuid, |
3514 | sizeof(es->s_uuid)); | 3509 | sizeof(es->s_uuid)); |
3515 | 3510 | ||
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index 42823ab3718c..1e09fc77395c 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c | |||
@@ -142,8 +142,7 @@ static int ext4_xattr_block_csum_verify(struct inode *inode, | |||
142 | sector_t block_nr, | 142 | sector_t block_nr, |
143 | struct ext4_xattr_header *hdr) | 143 | struct ext4_xattr_header *hdr) |
144 | { | 144 | { |
145 | if (EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 145 | if (ext4_has_metadata_csum(inode->i_sb) && |
146 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM) && | ||
147 | (hdr->h_checksum != ext4_xattr_block_csum(inode, block_nr, hdr))) | 146 | (hdr->h_checksum != ext4_xattr_block_csum(inode, block_nr, hdr))) |
148 | return 0; | 147 | return 0; |
149 | return 1; | 148 | return 1; |
@@ -153,8 +152,7 @@ static void ext4_xattr_block_csum_set(struct inode *inode, | |||
153 | sector_t block_nr, | 152 | sector_t block_nr, |
154 | struct ext4_xattr_header *hdr) | 153 | struct ext4_xattr_header *hdr) |
155 | { | 154 | { |
156 | if (!EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 155 | if (!ext4_has_metadata_csum(inode->i_sb)) |
157 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
158 | return; | 156 | return; |
159 | 157 | ||
160 | hdr->h_checksum = ext4_xattr_block_csum(inode, block_nr, hdr); | 158 | hdr->h_checksum = ext4_xattr_block_csum(inode, block_nr, hdr); |