diff options
-rw-r--r-- | fs/ext4/super.c | 7 | ||||
-rw-r--r-- | include/linux/percpu_counter.h | 10 |
2 files changed, 15 insertions, 2 deletions
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 9ce3b67b7269..c9e06c647ce8 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
@@ -3964,9 +3964,12 @@ static int ext4_commit_super(struct super_block *sb, int sync) | |||
3964 | else | 3964 | else |
3965 | es->s_kbytes_written = | 3965 | es->s_kbytes_written = |
3966 | cpu_to_le64(EXT4_SB(sb)->s_kbytes_written); | 3966 | cpu_to_le64(EXT4_SB(sb)->s_kbytes_written); |
3967 | ext4_free_blocks_count_set(es, percpu_counter_sum_positive( | 3967 | if (percpu_counter_initialized(&EXT4_SB(sb)->s_freeblocks_counter)) |
3968 | ext4_free_blocks_count_set(es, percpu_counter_sum_positive( | ||
3968 | &EXT4_SB(sb)->s_freeblocks_counter)); | 3969 | &EXT4_SB(sb)->s_freeblocks_counter)); |
3969 | es->s_free_inodes_count = cpu_to_le32(percpu_counter_sum_positive( | 3970 | if (percpu_counter_initialized(&EXT4_SB(sb)->s_freeinodes_counter)) |
3971 | es->s_free_inodes_count = | ||
3972 | cpu_to_le32(percpu_counter_sum_positive( | ||
3970 | &EXT4_SB(sb)->s_freeinodes_counter)); | 3973 | &EXT4_SB(sb)->s_freeinodes_counter)); |
3971 | sb->s_dirt = 0; | 3974 | sb->s_dirt = 0; |
3972 | BUFFER_TRACE(sbh, "marking dirty"); | 3975 | BUFFER_TRACE(sbh, "marking dirty"); |
diff --git a/include/linux/percpu_counter.h b/include/linux/percpu_counter.h index 8a7d510ffa9c..46f6ba56fa91 100644 --- a/include/linux/percpu_counter.h +++ b/include/linux/percpu_counter.h | |||
@@ -78,6 +78,11 @@ static inline s64 percpu_counter_read_positive(struct percpu_counter *fbc) | |||
78 | return 1; | 78 | return 1; |
79 | } | 79 | } |
80 | 80 | ||
81 | static inline int percpu_counter_initialized(struct percpu_counter *fbc) | ||
82 | { | ||
83 | return (fbc->counters != NULL); | ||
84 | } | ||
85 | |||
81 | #else | 86 | #else |
82 | 87 | ||
83 | struct percpu_counter { | 88 | struct percpu_counter { |
@@ -143,6 +148,11 @@ static inline s64 percpu_counter_sum(struct percpu_counter *fbc) | |||
143 | return percpu_counter_read(fbc); | 148 | return percpu_counter_read(fbc); |
144 | } | 149 | } |
145 | 150 | ||
151 | static inline int percpu_counter_initialized(struct percpu_counter *fbc) | ||
152 | { | ||
153 | return 1; | ||
154 | } | ||
155 | |||
146 | #endif /* CONFIG_SMP */ | 156 | #endif /* CONFIG_SMP */ |
147 | 157 | ||
148 | static inline void percpu_counter_inc(struct percpu_counter *fbc) | 158 | static inline void percpu_counter_inc(struct percpu_counter *fbc) |