diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ext4/ext4.h | 3 | ||||
-rw-r--r-- | fs/ext4/ext4_jbd2.c | 8 | ||||
-rw-r--r-- | fs/ext4/super.c | 7 |
3 files changed, 7 insertions, 11 deletions
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 3ab2539b7b2e..78971cfd9c7f 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h | |||
@@ -2063,8 +2063,7 @@ extern int ext4_resize_fs(struct super_block *sb, ext4_fsblk_t n_blocks_count); | |||
2063 | extern int ext4_calculate_overhead(struct super_block *sb); | 2063 | extern int ext4_calculate_overhead(struct super_block *sb); |
2064 | extern int ext4_superblock_csum_verify(struct super_block *sb, | 2064 | extern int ext4_superblock_csum_verify(struct super_block *sb, |
2065 | struct ext4_super_block *es); | 2065 | struct ext4_super_block *es); |
2066 | extern void ext4_superblock_csum_set(struct super_block *sb, | 2066 | extern void ext4_superblock_csum_set(struct super_block *sb); |
2067 | struct ext4_super_block *es); | ||
2068 | extern void *ext4_kvmalloc(size_t size, gfp_t flags); | 2067 | extern void *ext4_kvmalloc(size_t size, gfp_t flags); |
2069 | extern void *ext4_kvzalloc(size_t size, gfp_t flags); | 2068 | extern void *ext4_kvzalloc(size_t size, gfp_t flags); |
2070 | extern void ext4_kvfree(void *ptr); | 2069 | extern void ext4_kvfree(void *ptr); |
diff --git a/fs/ext4/ext4_jbd2.c b/fs/ext4/ext4_jbd2.c index bfa65b49d424..b4323ba846b5 100644 --- a/fs/ext4/ext4_jbd2.c +++ b/fs/ext4/ext4_jbd2.c | |||
@@ -143,17 +143,13 @@ int __ext4_handle_dirty_super(const char *where, unsigned int line, | |||
143 | struct buffer_head *bh = EXT4_SB(sb)->s_sbh; | 143 | struct buffer_head *bh = EXT4_SB(sb)->s_sbh; |
144 | int err = 0; | 144 | int err = 0; |
145 | 145 | ||
146 | ext4_superblock_csum_set(sb); | ||
146 | if (ext4_handle_valid(handle)) { | 147 | if (ext4_handle_valid(handle)) { |
147 | ext4_superblock_csum_set(sb, | ||
148 | (struct ext4_super_block *)bh->b_data); | ||
149 | err = jbd2_journal_dirty_metadata(handle, bh); | 148 | err = jbd2_journal_dirty_metadata(handle, bh); |
150 | if (err) | 149 | if (err) |
151 | ext4_journal_abort_handle(where, line, __func__, | 150 | ext4_journal_abort_handle(where, line, __func__, |
152 | bh, handle, err); | 151 | bh, handle, err); |
153 | } else { | 152 | } else |
154 | ext4_superblock_csum_set(sb, | ||
155 | (struct ext4_super_block *)bh->b_data); | ||
156 | mark_buffer_dirty(bh); | 153 | mark_buffer_dirty(bh); |
157 | } | ||
158 | return err; | 154 | return err; |
159 | } | 155 | } |
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 982f6fc22c88..5ededf135335 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
@@ -143,9 +143,10 @@ int ext4_superblock_csum_verify(struct super_block *sb, | |||
143 | return es->s_checksum == ext4_superblock_csum(sb, es); | 143 | return es->s_checksum == ext4_superblock_csum(sb, es); |
144 | } | 144 | } |
145 | 145 | ||
146 | void ext4_superblock_csum_set(struct super_block *sb, | 146 | void ext4_superblock_csum_set(struct super_block *sb) |
147 | struct ext4_super_block *es) | ||
148 | { | 147 | { |
148 | struct ext4_super_block *es = EXT4_SB(sb)->s_es; | ||
149 | |||
149 | if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, | 150 | if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, |
150 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | 151 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) |
151 | return; | 152 | return; |
@@ -4387,7 +4388,7 @@ static int ext4_commit_super(struct super_block *sb, int sync) | |||
4387 | cpu_to_le32(percpu_counter_sum_positive( | 4388 | cpu_to_le32(percpu_counter_sum_positive( |
4388 | &EXT4_SB(sb)->s_freeinodes_counter)); | 4389 | &EXT4_SB(sb)->s_freeinodes_counter)); |
4389 | BUFFER_TRACE(sbh, "marking dirty"); | 4390 | BUFFER_TRACE(sbh, "marking dirty"); |
4390 | ext4_superblock_csum_set(sb, es); | 4391 | ext4_superblock_csum_set(sb); |
4391 | mark_buffer_dirty(sbh); | 4392 | mark_buffer_dirty(sbh); |
4392 | if (sync) { | 4393 | if (sync) { |
4393 | error = sync_dirty_buffer(sbh); | 4394 | error = sync_dirty_buffer(sbh); |