From patchwork Tue Jan 31 15:58:16 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: ext4: let getattr report the right blocks in delalloc+bigalloc. Date: Tue, 31 Jan 2012 05:58:16 -0000 From: Tao Ma X-Patchwork-Id: 138797 Message-Id: <1328025496-3521-1-git-send-email-tm@tao.ma> To: linux-ext4@vger.kernel.org Cc: sandeen@redhat.com, "Theodore Ts'o" From: Tao Ma In delayed allocation, i_reserved_data_blocks now indicates clusters, not blocks. So report it in the right number. This can be easily exposed by the following command: echo foo > blah; du -hc blah; sync; du -hc blah Cc: "Theodore Ts'o" Reported-by: Eric Sandeen Signed-off-by: Tao Ma Reviewed-by: Eric Sandeen --- fs/ext4/inode.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index feaa82f..a5eb8c6 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -4200,7 +4200,8 @@ int ext4_getattr(struct vfsmount *mnt, struct dentry *dentry, * will return the blocks that include the delayed allocation * blocks for this file. */ - delalloc_blocks = EXT4_I(inode)->i_reserved_data_blocks; + delalloc_blocks = EXT4_C2B(EXT4_SB(inode->i_sb), + EXT4_I(inode)->i_reserved_data_blocks); stat->blocks += (delalloc_blocks << inode->i_sb->s_blocksize_bits)>>9; return 0;