On 10/18, Chao Yu wrote: > On 2017/10/18 6:03, Jaegeuk Kim wrote: > > On 10/16, Chao Yu wrote: > >> On 2017/10/14 1:31, Jaegeuk Kim wrote: > >>> If there's some data written through inline data or dentry, we need to shouw > >>> st_blocks. This fixes reporting zero blocks even though there is small written > >>> data. > >>> > >>> Signed-off-by: Jaegeuk Kim <jaegeuk@xxxxxxxxxx> > >> > >> Reviewed-by: Chao Yu <yuchao0@xxxxxxxxxx> > >> > >> Thanks, > >> > >>> --- > >>> fs/f2fs/file.c | 5 +++++ > >>> 1 file changed, 5 insertions(+) > >>> > >>> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c > >>> index 2eb3efe92018..f7be6c394fa8 100644 > >>> --- a/fs/f2fs/file.c > >>> +++ b/fs/f2fs/file.c > >>> @@ -698,6 +698,11 @@ int f2fs_getattr(const struct path *path, struct kstat *stat, > >>> STATX_ATTR_NODUMP); > >>> > >>> generic_fillattr(inode, stat); > >>> + > >>> + /* we need to show initial sectors used for inline_data/dentries */ > >>> + if (f2fs_has_inline_data(inode) || f2fs_has_inline_dentry(inode)) > > > > FYI; > > I added S_ISREG(inode->i_mode) with f2fs_has_inline_data() to avoid quotacheck > > error. > > If this patch is related to quotacheck issue, I doubt that there will be > problemetic, in no journalled quota case, fs quota system won't stat blocks > in inline file, however, after SPO, when using quotacheck to scan file to > recover quota info, blocks of inline file showed in getattr can be stated > into quota. That would be inconsistent. FWIW, quotacheck counts i_blocks via ioctl for normal files. Without this modification, xfstests gives an failure on quota cases. > > Thanks, > > > > >>> + stat->blocks += (stat->size + 511) >> 9; > >>> + > >>> return 0; > >>> } > >>> > >>> > > > > . > >