f2fs: add a sysfs entry to show zone capacity
authorJaegeuk Kim <jaegeuk@kernel.org>
Tue, 28 Jun 2022 22:49:47 +0000 (15:49 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Sun, 31 Jul 2022 03:16:20 +0000 (20:16 -0700)
This patch adds a sysfs entry showing the unusable space in a section
made by zone capacity.

Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Documentation/ABI/testing/sysfs-fs-f2fs
fs/f2fs/sysfs.c

index 9b583dd0298b7926d7b2ab9bd33a846711d109e3..22c1efd49773bc8c93ec4d6e3c6f9fb2f2d87faa 100644 (file)
@@ -580,3 +580,9 @@ Date:               January 2022
 Contact:       "Jaegeuk Kim" <jaegeuk@kernel.org>
 Description:   Controls max # of node block writes to be used for roll forward
                recovery. This can limit the roll forward recovery time.
+
+What:          /sys/fs/f2fs/<disk>/unusable_blocks_per_sec
+Date:          June 2022
+Contact:       "Jaegeuk Kim" <jaegeuk@kernel.org>
+Description:   Shows the number of unusable blocks in a section which was defined by
+               the zone capacity reported by underlying zoned device.
index 4c50aedd5144e63d0338bc6a7f7aa6da83692061..6eeefe60a7afecccab5b459ea2ec3868db839c93 100644 (file)
@@ -713,6 +713,11 @@ static struct f2fs_attr f2fs_attr_##_name = {                      \
        .offset = _offset                                       \
 }
 
+#define F2FS_RO_ATTR(struct_type, struct_name, name, elname)   \
+       F2FS_ATTR_OFFSET(struct_type, name, 0444,               \
+               f2fs_sbi_show, NULL,                            \
+               offsetof(struct struct_name, elname))
+
 #define F2FS_RW_ATTR(struct_type, struct_name, name, elname)   \
        F2FS_ATTR_OFFSET(struct_type, name, 0644,               \
                f2fs_sbi_show, f2fs_sbi_store,                  \
@@ -811,6 +816,8 @@ F2FS_FEATURE_RO_ATTR(encrypted_casefold);
 #endif /* CONFIG_FS_ENCRYPTION */
 #ifdef CONFIG_BLK_DEV_ZONED
 F2FS_FEATURE_RO_ATTR(block_zoned);
+F2FS_RO_ATTR(F2FS_SBI, f2fs_sb_info, unusable_blocks_per_sec,
+                                       unusable_blocks_per_sec);
 #endif
 F2FS_FEATURE_RO_ATTR(atomic_write);
 F2FS_FEATURE_RO_ATTR(extra_attr);
@@ -919,6 +926,9 @@ static struct attribute *f2fs_attrs[] = {
        ATTR_LIST(moved_blocks_background),
        ATTR_LIST(avg_vblocks),
 #endif
+#ifdef CONFIG_BLK_DEV_ZONED
+       ATTR_LIST(unusable_blocks_per_sec),
+#endif
 #ifdef CONFIG_F2FS_FS_COMPRESSION
        ATTR_LIST(compr_written_block),
        ATTR_LIST(compr_saved_block),