Skip to content

Commit 6ef6849

Browse files
JasonYanHwtytso
authored andcommitted
ext4: use ext4_group_desc_free() in ext4_put_super() to save some duplicated code
The only difference here is that ->s_group_desc and ->s_flex_groups share the same rcu read lock here but it is not necessary. In other places they do not share the lock at all. Signed-off-by: Jason Yan <yanaijie@huawei.com> Link: https://lore.kernel.org/r/20230323140517.1070239-4-yanaijie@huawei.com Signed-off-by: Theodore Ts'o <tytso@mit.edu>
1 parent 1f79467 commit 6ef6849

1 file changed

Lines changed: 14 additions & 18 deletions

File tree

fs/ext4/super.c

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1226,11 +1226,23 @@ static void ext4_percpu_param_destroy(struct ext4_sb_info *sbi)
12261226
percpu_free_rwsem(&sbi->s_writepages_rwsem);
12271227
}
12281228

1229+
static void ext4_group_desc_free(struct ext4_sb_info *sbi)
1230+
{
1231+
struct buffer_head **group_desc;
1232+
int i;
1233+
1234+
rcu_read_lock();
1235+
group_desc = rcu_dereference(sbi->s_group_desc);
1236+
for (i = 0; i < sbi->s_gdb_count; i++)
1237+
brelse(group_desc[i]);
1238+
kvfree(group_desc);
1239+
rcu_read_unlock();
1240+
}
1241+
12291242
static void ext4_put_super(struct super_block *sb)
12301243
{
12311244
struct ext4_sb_info *sbi = EXT4_SB(sb);
12321245
struct ext4_super_block *es = sbi->s_es;
1233-
struct buffer_head **group_desc;
12341246
struct flex_groups **flex_groups;
12351247
int aborted = 0;
12361248
int i, err;
@@ -1281,11 +1293,8 @@ static void ext4_put_super(struct super_block *sb)
12811293
if (!sb_rdonly(sb))
12821294
ext4_commit_super(sb);
12831295

1296+
ext4_group_desc_free(sbi);
12841297
rcu_read_lock();
1285-
group_desc = rcu_dereference(sbi->s_group_desc);
1286-
for (i = 0; i < sbi->s_gdb_count; i++)
1287-
brelse(group_desc[i]);
1288-
kvfree(group_desc);
12891298
flex_groups = rcu_dereference(sbi->s_flex_groups);
12901299
if (flex_groups) {
12911300
for (i = 0; i < sbi->s_flex_groups_allocated; i++)
@@ -4757,19 +4766,6 @@ static int ext4_geometry_check(struct super_block *sb,
47574766
return 0;
47584767
}
47594768

4760-
static void ext4_group_desc_free(struct ext4_sb_info *sbi)
4761-
{
4762-
struct buffer_head **group_desc;
4763-
int i;
4764-
4765-
rcu_read_lock();
4766-
group_desc = rcu_dereference(sbi->s_group_desc);
4767-
for (i = 0; i < sbi->s_gdb_count; i++)
4768-
brelse(group_desc[i]);
4769-
kvfree(group_desc);
4770-
rcu_read_unlock();
4771-
}
4772-
47734769
static int ext4_group_desc_init(struct super_block *sb,
47744770
struct ext4_super_block *es,
47754771
ext4_fsblk_t logical_sb_block,

0 commit comments

Comments
 (0)