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 9ce3b67b726..c9e06c647ce 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 8a7d510ffa9..46f6ba56fa9 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) |
