]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
f2fs: expose main_blkaddr in sysfs
authorJaegeuk Kim <jaegeuk@kernel.org>
Fri, 22 Nov 2019 19:53:10 +0000 (11:53 -0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 25 Nov 2019 18:01:27 +0000 (10:01 -0800)
Expose in /sys/fs/f2fs/<blockdev>/main_blkaddr the block address where the
main area starts. This allows user mode programs to determine:

- That pinned files that are made exclusively of fully allocated 2MB
  segments will never be unpinned by the file system.

- Where the main area starts. This is required by programs that want to
  verify if a file is made exclusively of 2MB f2fs segments, the alignment
  boundary for segments starts at this address. Testing for 2MB alignment
  relative to the start of the device is incorrect, because for some
  filesystems main_blkaddr is not at a 2MB boundary relative to the start
  of the device.

The entry will be used when validating reliable pinning file feature proposed
by "f2fs: support aligned pinned file".

Signed-off-by: Ramon Pantin <pantin@google.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Documentation/ABI/testing/sysfs-fs-f2fs
Documentation/filesystems/f2fs.txt
fs/f2fs/sysfs.c

index 7ab2b1b5e255f9ac226b5f17a4881077ab7f8a2e..aedeae1e8ec180f699f32a7f05b6b6b81105372c 100644 (file)
@@ -31,6 +31,12 @@ Contact:     "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
 Description:
                 Controls the issue rate of segment discard commands.
 
+What:          /sys/fs/f2fs/<disk>/max_blkaddr
+Date:          November 2019
+Contact:       "Ramon Pantin" <pantin@google.com>
+Description:
+                Shows first block address of MAIN area.
+
 What:          /sys/fs/f2fs/<disk>/ipu_policy
 Date:          November 2013
 Contact:       "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
index 29020af0cff9fcb1fadb96e691ca8dc321d1abef..3135b80df6daf29c68198c3a9e2647a18c4cbfed 100644 (file)
@@ -297,6 +297,9 @@ Files in /sys/fs/f2fs/<devname>
                              reclaim the prefree segments to free segments.
                              By default, 5% over total # of segments.
 
+ main_blkaddr                 This value gives the first block address of
+                             MAIN area in the partition.
+
  max_small_discards          This parameter controls the number of discard
                              commands that consist small blocks less than 2MB.
                              The candidates to be discarded are cached until
index f164959e4224ff7eea9f0ee4adb62b1fb723ae21..70945ceb9c0cadd7b166e5b53a3c3208c5da7655 100644 (file)
@@ -445,6 +445,7 @@ F2FS_RW_ATTR(GC_THREAD, f2fs_gc_kthread, gc_no_gc_sleep_time, no_gc_sleep_time);
 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, gc_idle, gc_mode);
 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, gc_urgent, gc_mode);
 F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, reclaim_segments, rec_prefree_segments);
+F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, main_blkaddr, main_blkaddr);
 F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, max_small_discards, max_discards);
 F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, discard_granularity, discard_granularity);
 F2FS_RW_ATTR(RESERVED_BLOCKS, f2fs_sb_info, reserved_blocks, reserved_blocks);
@@ -512,6 +513,7 @@ static struct attribute *f2fs_attrs[] = {
        ATTR_LIST(gc_idle),
        ATTR_LIST(gc_urgent),
        ATTR_LIST(reclaim_segments),
+       ATTR_LIST(main_blkaddr),
        ATTR_LIST(max_small_discards),
        ATTR_LIST(discard_granularity),
        ATTR_LIST(batched_trim_sections),