f2fs: expose # of overprivision segments
This is useful when checking conditions during checkpoint=disable in Android. Reviewed-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
3c0315424f
commit
0823427989
|
@ -409,3 +409,8 @@ Description: Give a way to change checkpoint merge daemon's io priority.
|
||||||
I/O priority "3". We can select the class between "rt" and "be",
|
I/O priority "3". We can select the class between "rt" and "be",
|
||||||
and set the I/O priority within valid range of it. "," delimiter
|
and set the I/O priority within valid range of it. "," delimiter
|
||||||
is necessary in between I/O class and priority number.
|
is necessary in between I/O class and priority number.
|
||||||
|
|
||||||
|
What: /sys/fs/f2fs/<disk>/ovp_segments
|
||||||
|
Date: March 2021
|
||||||
|
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||||
|
Description: Shows the number of overprovision segments.
|
||||||
|
|
|
@ -91,6 +91,13 @@ static ssize_t free_segments_show(struct f2fs_attr *a,
|
||||||
(unsigned long long)(free_segments(sbi)));
|
(unsigned long long)(free_segments(sbi)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ssize_t ovp_segments_show(struct f2fs_attr *a,
|
||||||
|
struct f2fs_sb_info *sbi, char *buf)
|
||||||
|
{
|
||||||
|
return sprintf(buf, "%llu\n",
|
||||||
|
(unsigned long long)(overprovision_segments(sbi)));
|
||||||
|
}
|
||||||
|
|
||||||
static ssize_t lifetime_write_kbytes_show(struct f2fs_attr *a,
|
static ssize_t lifetime_write_kbytes_show(struct f2fs_attr *a,
|
||||||
struct f2fs_sb_info *sbi, char *buf)
|
struct f2fs_sb_info *sbi, char *buf)
|
||||||
{
|
{
|
||||||
|
@ -629,6 +636,7 @@ F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, node_io_flag, node_io_flag);
|
||||||
F2FS_RW_ATTR(CPRC_INFO, ckpt_req_control, ckpt_thread_ioprio, ckpt_thread_ioprio);
|
F2FS_RW_ATTR(CPRC_INFO, ckpt_req_control, ckpt_thread_ioprio, ckpt_thread_ioprio);
|
||||||
F2FS_GENERAL_RO_ATTR(dirty_segments);
|
F2FS_GENERAL_RO_ATTR(dirty_segments);
|
||||||
F2FS_GENERAL_RO_ATTR(free_segments);
|
F2FS_GENERAL_RO_ATTR(free_segments);
|
||||||
|
F2FS_GENERAL_RO_ATTR(ovp_segments);
|
||||||
F2FS_GENERAL_RO_ATTR(lifetime_write_kbytes);
|
F2FS_GENERAL_RO_ATTR(lifetime_write_kbytes);
|
||||||
F2FS_GENERAL_RO_ATTR(features);
|
F2FS_GENERAL_RO_ATTR(features);
|
||||||
F2FS_GENERAL_RO_ATTR(current_reserved_blocks);
|
F2FS_GENERAL_RO_ATTR(current_reserved_blocks);
|
||||||
|
@ -715,6 +723,7 @@ static struct attribute *f2fs_attrs[] = {
|
||||||
ATTR_LIST(ckpt_thread_ioprio),
|
ATTR_LIST(ckpt_thread_ioprio),
|
||||||
ATTR_LIST(dirty_segments),
|
ATTR_LIST(dirty_segments),
|
||||||
ATTR_LIST(free_segments),
|
ATTR_LIST(free_segments),
|
||||||
|
ATTR_LIST(ovp_segments),
|
||||||
ATTR_LIST(unusable),
|
ATTR_LIST(unusable),
|
||||||
ATTR_LIST(lifetime_write_kbytes),
|
ATTR_LIST(lifetime_write_kbytes),
|
||||||
ATTR_LIST(features),
|
ATTR_LIST(features),
|
||||||
|
|
Loading…
Reference in New Issue