Message ID | 1328025496-3521-1-git-send-email-tm@tao.ma |
---|---|
State | Accepted, archived |
Headers | show |
On 1/31/12 9:58 AM, Tao Ma wrote: > From: Tao Ma <boyu.mt@taobao.com> > > 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" <tytso@mit.edu> > Reported-by: Eric Sandeen <sandeen@redhat.com> > Signed-off-by: Tao Ma <boyu.mt@taobao.com> Reviewed-by: Eric Sandeen <sandeen2redhat.com> It'd be great to get this one merged. Thanks, -Eric > --- > 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; -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, May 31, 2012 at 12:08:50PM -0500, Eric Sandeen wrote: > On 1/31/12 9:58 AM, Tao Ma wrote: > > From: Tao Ma <boyu.mt@taobao.com> > > > > 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" <tytso@mit.edu> > > Reported-by: Eric Sandeen <sandeen@redhat.com> > > Signed-off-by: Tao Ma <boyu.mt@taobao.com> > > Reviewed-by: Eric Sandeen <sandeen2redhat.com> > > It'd be great to get this one merged. I'll merge this, but delalloc and bigalloc is still pretty badly busted. But this will make stat return something that is closer to being correct... - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 5/31/12 7:43 PM, Ted Ts'o wrote: > On Thu, May 31, 2012 at 12:08:50PM -0500, Eric Sandeen wrote: >> On 1/31/12 9:58 AM, Tao Ma wrote: >>> From: Tao Ma <boyu.mt@taobao.com> >>> >>> 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" <tytso@mit.edu> >>> Reported-by: Eric Sandeen <sandeen@redhat.com> >>> Signed-off-by: Tao Ma <boyu.mt@taobao.com> >> >> Reviewed-by: Eric Sandeen <sandeen2redhat.com> >> >> It'd be great to get this one merged. > > I'll merge this, but delalloc and bigalloc is still pretty badly > busted. But this will make stat return something that is closer to > being correct... Hm what else is busted? Is there a testcase written? How much else do you know of that's busted with bigalloc? :) (Is this bustedness the reason for not yet having it in the man page?) -Eric > - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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;