Message ID | 20171013173145.36510-1-jaegeuk@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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@kernel.org> Reviewed-by: Chao Yu <yuchao0@huawei.com> 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)) > + stat->blocks += (stat->size + 511) >> 9; > + > return 0; > } > >
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@kernel.org> > > Reviewed-by: Chao Yu <yuchao0@huawei.com> > > 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. > > + stat->blocks += (stat->size + 511) >> 9; > > + > > return 0; > > } > > > >
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@kernel.org> >> >> Reviewed-by: Chao Yu <yuchao0@huawei.com> >> >> 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. Thanks, > >>> + stat->blocks += (stat->size + 511) >> 9; >>> + >>> return 0; >>> } >>> >>> > > . >
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@kernel.org> > >> > >> Reviewed-by: Chao Yu <yuchao0@huawei.com> > >> > >> 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; > >>> } > >>> > >>> > > > > . > >
On 2017/10/20 3:12, Jaegeuk Kim wrote: > 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@kernel.org> >>>> >>>> Reviewed-by: Chao Yu <yuchao0@huawei.com> >>>> >>>> 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. OK, let's fix this issue first. ;) Thanks, > >> >> Thanks, >> >>> >>>>> + stat->blocks += (stat->size + 511) >> 9; >>>>> + >>>>> return 0; >>>>> } >>>>> >>>>> >>> >>> . >>> > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Linux-f2fs-devel mailing list > Linux-f2fs-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel >
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)) + stat->blocks += (stat->size + 511) >> 9; + return 0; }
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@kernel.org> --- fs/f2fs/file.c | 5 +++++ 1 file changed, 5 insertions(+)