Message ID | 1700788128-29002-1-git-send-email-zhiguo.niu@unisoc.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [f2fs-dev] f2fs: show more discard stat by sysfs | expand |
On 2023/11/24 9:08, Zhiguo Niu wrote: > The current pending_discard attr just only shows the discard_cmd_cnt > information, which is not very meaningful. More discard information > can be shown so that we can check them through sysfs when needed. What about adding this entry to /sys/fs/f2fs/<dev>/stat/? > > Signed-off-by: Zhiguo Niu <zhiguo.niu@unisoc.com> > --- > fs/f2fs/sysfs.c | 21 +++++++++++++++------ > 1 file changed, 15 insertions(+), 6 deletions(-) > > diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c > index 417fae96..f98e680 100644 > --- a/fs/f2fs/sysfs.c > +++ b/fs/f2fs/sysfs.c > @@ -134,13 +134,22 @@ static ssize_t cp_status_show(struct f2fs_attr *a, > return sysfs_emit(buf, "%x\n", le32_to_cpu(F2FS_CKPT(sbi)->ckpt_flags)); > } > > -static ssize_t pending_discard_show(struct f2fs_attr *a, > +static ssize_t discard_stat_show(struct f2fs_attr *a, > struct f2fs_sb_info *sbi, char *buf) > { > - if (!SM_I(sbi)->dcc_info) > + struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; > + > + if (!dcc) > return -EINVAL; > - return sysfs_emit(buf, "%llu\n", (unsigned long long)atomic_read( > - &SM_I(sbi)->dcc_info->discard_cmd_cnt)); It's better to keep the old one for any potential user. > + > + return sysfs_emit(buf, "%llu, %llu, %llu, %u\n", > + (unsigned long long)atomic_read( > + &dcc->discard_cmd_cnt), > + (unsigned long long)atomic_read( > + &dcc->issued_discard), > + (unsigned long long)atomic_read( > + &dcc->queued_discard), > + dcc->undiscard_blks); > } > > static ssize_t gc_mode_show(struct f2fs_attr *a, > @@ -1016,7 +1025,7 @@ static ssize_t f2fs_sb_feature_show(struct f2fs_attr *a, > F2FS_GENERAL_RO_ATTR(encoding); > F2FS_GENERAL_RO_ATTR(mounted_time_sec); > F2FS_GENERAL_RO_ATTR(main_blkaddr); > -F2FS_GENERAL_RO_ATTR(pending_discard); > +F2FS_GENERAL_RO_ATTR(discard_stat); It needs to adjust Documentation/ABI/testing/sysfs-fs-f2fs. Thanks, > F2FS_GENERAL_RO_ATTR(gc_mode); > #ifdef CONFIG_F2FS_STAT_FS > F2FS_GENERAL_RO_ATTR(moved_blocks_background); > @@ -1074,7 +1083,7 @@ static ssize_t f2fs_sb_feature_show(struct f2fs_attr *a, > ATTR_LIST(discard_urgent_util), > ATTR_LIST(discard_granularity), > ATTR_LIST(max_ordered_discard), > - ATTR_LIST(pending_discard), > + ATTR_LIST(discard_stat), > ATTR_LIST(gc_mode), > ATTR_LIST(ipu_policy), > ATTR_LIST(min_ipu_util),
Dear Chao, On Tue, Nov 28, 2023 at 10:13 AM Chao Yu <chao@kernel.org> wrote: > > On 2023/11/24 9:08, Zhiguo Niu wrote: > > The current pending_discard attr just only shows the discard_cmd_cnt > > information, which is not very meaningful. More discard information > > can be shown so that we can check them through sysfs when needed. > > What about adding this entry to /sys/fs/f2fs/<dev>/stat/? I think it is ok! The purpose of this patch is to obtain f2fs discard related status when necessary. Because sys/kernel/debug/f2fs/status cannot be used on the user version, I will change it according to your suggestion. > > > > > Signed-off-by: Zhiguo Niu <zhiguo.niu@unisoc.com> > > --- > > fs/f2fs/sysfs.c | 21 +++++++++++++++------ > > 1 file changed, 15 insertions(+), 6 deletions(-) > > > > diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c > > index 417fae96..f98e680 100644 > > --- a/fs/f2fs/sysfs.c > > +++ b/fs/f2fs/sysfs.c > > @@ -134,13 +134,22 @@ static ssize_t cp_status_show(struct f2fs_attr *a, > > return sysfs_emit(buf, "%x\n", le32_to_cpu(F2FS_CKPT(sbi)->ckpt_flags)); > > } > > > > -static ssize_t pending_discard_show(struct f2fs_attr *a, > > +static ssize_t discard_stat_show(struct f2fs_attr *a, > > struct f2fs_sb_info *sbi, char *buf) > > { > > - if (!SM_I(sbi)->dcc_info) > > + struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; > > + > > + if (!dcc) > > return -EINVAL; > > - return sysfs_emit(buf, "%llu\n", (unsigned long long)atomic_read( > > - &SM_I(sbi)->dcc_info->discard_cmd_cnt)); > > It's better to keep the old one for any potential user. > > > + > > + return sysfs_emit(buf, "%llu, %llu, %llu, %u\n", > > + (unsigned long long)atomic_read( > > + &dcc->discard_cmd_cnt), > > + (unsigned long long)atomic_read( > > + &dcc->issued_discard), > > + (unsigned long long)atomic_read( > > + &dcc->queued_discard), > > + dcc->undiscard_blks); > > } > > > > static ssize_t gc_mode_show(struct f2fs_attr *a, > > @@ -1016,7 +1025,7 @@ static ssize_t f2fs_sb_feature_show(struct f2fs_attr *a, > > F2FS_GENERAL_RO_ATTR(encoding); > > F2FS_GENERAL_RO_ATTR(mounted_time_sec); > > F2FS_GENERAL_RO_ATTR(main_blkaddr); > > -F2FS_GENERAL_RO_ATTR(pending_discard); > > +F2FS_GENERAL_RO_ATTR(discard_stat); > > It needs to adjust Documentation/ABI/testing/sysfs-fs-f2fs. > > Thanks, > > > F2FS_GENERAL_RO_ATTR(gc_mode); > > #ifdef CONFIG_F2FS_STAT_FS > > F2FS_GENERAL_RO_ATTR(moved_blocks_background); > > @@ -1074,7 +1083,7 @@ static ssize_t f2fs_sb_feature_show(struct f2fs_attr *a, > > ATTR_LIST(discard_urgent_util), > > ATTR_LIST(discard_granularity), > > ATTR_LIST(max_ordered_discard), > > - ATTR_LIST(pending_discard), > > + ATTR_LIST(discard_stat), > > ATTR_LIST(gc_mode), > > ATTR_LIST(ipu_policy), > > ATTR_LIST(min_ipu_util),
diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c index 417fae96..f98e680 100644 --- a/fs/f2fs/sysfs.c +++ b/fs/f2fs/sysfs.c @@ -134,13 +134,22 @@ static ssize_t cp_status_show(struct f2fs_attr *a, return sysfs_emit(buf, "%x\n", le32_to_cpu(F2FS_CKPT(sbi)->ckpt_flags)); } -static ssize_t pending_discard_show(struct f2fs_attr *a, +static ssize_t discard_stat_show(struct f2fs_attr *a, struct f2fs_sb_info *sbi, char *buf) { - if (!SM_I(sbi)->dcc_info) + struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; + + if (!dcc) return -EINVAL; - return sysfs_emit(buf, "%llu\n", (unsigned long long)atomic_read( - &SM_I(sbi)->dcc_info->discard_cmd_cnt)); + + return sysfs_emit(buf, "%llu, %llu, %llu, %u\n", + (unsigned long long)atomic_read( + &dcc->discard_cmd_cnt), + (unsigned long long)atomic_read( + &dcc->issued_discard), + (unsigned long long)atomic_read( + &dcc->queued_discard), + dcc->undiscard_blks); } static ssize_t gc_mode_show(struct f2fs_attr *a, @@ -1016,7 +1025,7 @@ static ssize_t f2fs_sb_feature_show(struct f2fs_attr *a, F2FS_GENERAL_RO_ATTR(encoding); F2FS_GENERAL_RO_ATTR(mounted_time_sec); F2FS_GENERAL_RO_ATTR(main_blkaddr); -F2FS_GENERAL_RO_ATTR(pending_discard); +F2FS_GENERAL_RO_ATTR(discard_stat); F2FS_GENERAL_RO_ATTR(gc_mode); #ifdef CONFIG_F2FS_STAT_FS F2FS_GENERAL_RO_ATTR(moved_blocks_background); @@ -1074,7 +1083,7 @@ static ssize_t f2fs_sb_feature_show(struct f2fs_attr *a, ATTR_LIST(discard_urgent_util), ATTR_LIST(discard_granularity), ATTR_LIST(max_ordered_discard), - ATTR_LIST(pending_discard), + ATTR_LIST(discard_stat), ATTR_LIST(gc_mode), ATTR_LIST(ipu_policy), ATTR_LIST(min_ipu_util),
The current pending_discard attr just only shows the discard_cmd_cnt information, which is not very meaningful. More discard information can be shown so that we can check them through sysfs when needed. Signed-off-by: Zhiguo Niu <zhiguo.niu@unisoc.com> --- fs/f2fs/sysfs.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-)