fs/ext4/super.c: Let 'counters' switched by SMP
PATCH 1/1 fs/ext4/super.c: Let 'counters' switched by SMP
When SMP is disabled, 'struct percpu_counter' has no 'counters' member, so need skip it when in !SMP.
The related git commit:
"feab139 ext4: rearrange initialization to fix EXT4FS_DEBUG".
The related error (with allmodconfig under score):
CC [M] fs/ext4/super.o
fs/ext4/super.c: In function 'ext4_commit_super':
fs/ext4/super.c:4546:41: error: 'struct percpu_counter' has no member named 'counters'
if (EXT4_SB(sb)->s_freeclusters_counter.counters)
^
fs/ext4/super.c:4550:39: error: 'struct percpu_counter' has no member named 'counters'
if (EXT4_SB(sb)->s_freeinodes_counter.counters)
^--- fs/ext4/super.c | 4 ++++ 1 file changed, 4 insertions(+)
fs/ext4/super.c +4 -0
@@ -4543,11 +4543,15 @@ static int ext4_commit_super(struct super_block *sb, int sync)else es->s_kbytes_written =cpu_to_le64 (EXT4_SB (sb)->s_kbytes_written); +#ifdef CONFIG_SMP if (EXT4_SB(sb)->s_freeclusters_counter.counters) +#endif ext4_free_blocks_count_set(es, EXT4_C2B(EXT4_SB(sb), percpu_counter_sum_positive( &EXT4_SB(sb)->s_freeclusters_counter))); +#ifdef CONFIG_SMP if (EXT4_SB(sb)->s_freeinodes_counter.counters) +#endif es->s_free_inodes_count = cpu_to_le32(percpu_counter_sum_positive( &EXT4_SB(sb)->s_freeinodes_counter));
Signature · 1 line
1.9.2.459.g68773ac
Theodore Ts'o
maintainerQuoted 9 lines · Chen Gang
When SMP is disabled, 'struct
percpu_counter' has no 'counters' member, so need skip it when in !SMP.The related git commit:
"feab139 ext4: rearrange initialization to fix
EXT4FS_DEBUG".The related error (with allmodconfig under score):
Quoted 7 lines
CC [M] fs/ext4/super.o
fs/ext4/super.c: In function 'ext4_commit_super':
fs/ext4/super.c:4546:41: error: 'struct percpu_counter' has no member named 'counters'
if (EXT4_SB(sb)->s_freeclusters_counter.counters)
^
fs/ext4/super.c:4550:39: error: 'struct percpu_counter' has no member named 'counters'
if (EXT4_SB(sb)->s_freeinodes_counter.counters)Thanks for the pointing out the problem. I though think the right way of fixing this problem, though, instead of using the #ifdef CONFIG_SMP, is to do this:
if (percpu_counter_initialized(&EXT4_SB(sb)->s_freeclusters_counter))
...I'll respin the "ext4: rearrange initialization to fix EXT4FS_DEBUG" commit to include this fix and give you credit in the commit logs for pointing out this issue.
Cheers,
- Ted
Quoted 18 lines · Theodore Ts'o
Quoted 9 lines · Chen Gang
When SMP is disabled, 'struct
percpu_counter' has no 'counters' member, so need skip it when in !SMP.The related git commit:
"feab139 ext4: rearrange initialization to fix
EXT4FS_DEBUG".The related error (with allmodconfig under score):
Quoted 7 lines
CC [M] fs/ext4/super.o fs/ext4/super.c: In function 'ext4_commit_super': fs/ext4/super.c:4546:41: error: 'struct percpu_counter' has no member named 'counters' if (EXT4_SB(sb)->s_freeclusters_counter.counters) ^ fs/ext4/super.c:4550:39: error: 'struct percpu_counter' has no member named 'counters' if (EXT4_SB(sb)->s_freeinodes_counter.counters)
Quoted 7 lines
Thanks for the pointing out the problem. I though think the right way of fixing this problem, though, instead of using the #ifdef
CONFIG_SMP, is to do this:if (percpu_counter_initialized(&EXT4_SB(sb)->s_freeclusters_counter)) ...
That sounds fine to me (unlike my ugly fix, your fix is common and standard), thanks.
Quoted 4 lines
I'll respin the "ext4: rearrange initialization to fix
EXT4FS_DEBUG" commit to include this fix and give you credit in the commit logs for pointing out this issue.
Thank you for your work.
Thanks.
Signature · 3 lines
Chen Gang Open, share, and attitude like air, water, and life which God blessed
Hi Ted,
Quoted 22 lines · Theodore Ts'o
Quoted 9 lines · Chen Gang
When SMP is disabled, 'struct
percpu_counter' has no 'counters' member, so need skip it when in !SMP.The related git commit:
"feab139 ext4: rearrange initialization to fix
EXT4FS_DEBUG".The related error (with allmodconfig under score):
Quoted 7 lines
CC [M] fs/ext4/super.o fs/ext4/super.c: In function 'ext4_commit_super': fs/ext4/super.c:4546:41: error: 'struct percpu_counter' has no member named 'counters' if (EXT4_SB(sb)->s_freeclusters_counter.counters) ^ fs/ext4/super.c:4550:39: error: 'struct percpu_counter' has no member named 'counters' if (EXT4_SB(sb)->s_freeinodes_counter.counters)Thanks for the pointing out the problem. I though think the right way of fixing this problem, though, instead of using the #ifdef
CONFIG_SMP, is to do this:
Quoted 6 lines
if (percpu_counter_initialized(&EXT4_SB(sb)->s_freeclusters_counter)) ...I'll respin the "ext4: rearrange initialization to fix
EXT4FS_DEBUG" commit to include this fix and give you credit in the commit logs for pointing out this issue.
Friendly ping, since all !SMP builds in -next seem to be broken by this still.
-Olof
Theodore Ts'o
maintainerQuoted 5 lines · Olof Johansson
Quoted 3 lines
I'll respin the "ext4: rearrange initialization to fix
EXT4FS_DEBUG" commit to include this fix and give you credit in the commit logs for pointing out this issue.Friendly ping, since all !SMP builds in -next seem to be broken by this still.
Right, sorry, I'm currently in vacation in Rome, and the network connection was really lousy here now that I'm no longer at the ACACES summer school in Fiuggi. (Also, now that I'm no longer actually teaching, I've beeen trying to actually do the disconnecting and sightseeing thing. :-)
Pushed now.
- Ted
Quoted 6 lines · Theodore Ts'o
Right, sorry, I'm currently in vacation in Rome, and the network connection was really lousy here now that I'm no longer at the ACACES summer school in Fiuggi. (Also, now that I'm no longer actually teaching, I've beeen trying to actually do the disconnecting and sightseeing thing. :-)
Confirmed this is now fixed in linux-next, thanks Ted!