ext4: fix overhead calculations in ext4_stats, again
PATCH 1/1 ext4: fix overhead calculations in ext4_stats, again
"overhead" was a write-only variable in this function after commit 952fc18e; we set it to 0 for minixdf, or to sbi->s_overhead if !minixdf, but never read it again after that.
We need to use it, not sbi->s_overhead, when subtracting out overhead for f_blocks, or we get the wrong answer for minixdf.
---
"Once more, with feeling!" ;)
fs/ext4/super.c +1 -1
@@ -4758,7 +4758,7 @@ static int ext4_statfs(struct dentry *dentry, struct kstatfs *buf) buf->f_type =EXT4_SUPER_MAGIC ; buf->f_bsize = sb->s_blocksize; - buf->f_blocks =ext4_blocks_count (es) -EXT4_C2B (sbi, sbi->s_overhead); + buf->f_blocks =ext4_blocks_count (es) -EXT4_C2B (sbi, overhead); bfree =percpu_counter_sum_positive (&sbi->s_freeclusters_counter) -percpu_counter_sum_positive (&sbi->s_dirtyclusters_counter);/* prevent underflow in case that few free space is available */
Re: [PATCH] ext4: fix overhead calculations in ext4_statfs, again
sorry that should be "ext4_statfs" in the subject.
Quoted 31 lines · Eric Sandeen
"overhead" was a write-only variable in this function after commit
952fc18e; we set it to 0 for minixdf, or tosbi->s_overheadif !minixdf, but never read it again after that.We need to use it, not
sbi->s_overhead, when subtracting out overhead forf_blocks, or we get the wrong answer for minixdf.Signed-off-by Eric Sandeen <[email protected]>---
"Once more, with feeling!" ;)
fs/ext4/super.c +1
-2@@ -4758,7 +4758,7 @@ static int ext4_statfs(struct dentry *dentry, struct kstatfs *buf) buf->f_type =EXT4_SUPER_MAGIC ; buf->f_bsize = sb->s_blocksize; - buf->f_blocks =ext4_blocks_count (es) -EXT4_C2B (sbi, sbi->s_overhead); + buf->f_blocks =ext4_blocks_count (es) -EXT4_C2B (sbi, overhead); bfree =percpu_counter_sum_positive (&sbi->s_freeclusters_counter) -percpu_counter_sum_positive (&sbi->s_dirtyclusters_counter);/* prevent underflow in case that few free space is available */ --To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 8 lines · Eric Sandeen
"overhead" was a write-only variable in this function after commit
952fc18e; we set it to 0 for minixdf, or tosbi->s_overheadif !minixdf, but never read it again after that.We need to use it, not
sbi->s_overhead, when subtracting out overhead forf_blocks, or we get the wrong answer for minixdf.Signed-off-by Eric Sandeen <[email protected]>
Yeah, looks good. You can add:
Honza
Quoted 22 lines
---
"Once more, with feeling!" ;)
fs/ext4/super.c +1
-2@@ -4758,7 +4758,7 @@ static int ext4_statfs(struct dentry *dentry, struct kstatfs *buf) buf->f_type =EXT4_SUPER_MAGIC ; buf->f_bsize = sb->s_blocksize; - buf->f_blocks =ext4_blocks_count (es) -EXT4_C2B (sbi, sbi->s_overhead); + buf->f_blocks =ext4_blocks_count (es) -EXT4_C2B (sbi, overhead); bfree =percpu_counter_sum_positive (&sbi->s_freeclusters_counter) -percpu_counter_sum_positive (&sbi->s_dirtyclusters_counter);/* prevent underflow in case that few free space is available */ --To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Signature · 2 lines
Jan Kara <[email protected]> SUSE Labs, CR
Quoted 8 lines · Eric Sandeen
"overhead" was a write-only variable in this function after commit
952fc18e; we set it to 0 for minixdf, or tosbi->s_overheadif !minixdf, but never read it again after that.We need to use it, not
sbi->s_overhead, when subtracting out overhead forf_blocks, or we get the wrong answer for minixdf.Signed-off-by Eric Sandeen <[email protected]>
Thanks, applied.
- Ted