Commit a4db59ac authored by Jaegeuk Kim's avatar Jaegeuk Kim
Browse files

f2fs: expose main_blkaddr in sysfs



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: default avatarRamon Pantin <pantin@google.com>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent 909110c0
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -31,6 +31,12 @@ Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
Description:
Description:
		 Controls the issue rate of segment discard commands.
		 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
What:		/sys/fs/f2fs/<disk>/ipu_policy
Date:		November 2013
Date:		November 2013
Contact:	"Jaegeuk Kim" <jaegeuk.kim@samsung.com>
Contact:	"Jaegeuk Kim" <jaegeuk.kim@samsung.com>
+3 −0
Original line number Original line Diff line number Diff line
@@ -297,6 +297,9 @@ Files in /sys/fs/f2fs/<devname>
			      reclaim the prefree segments to free segments.
			      reclaim the prefree segments to free segments.
			      By default, 5% over total # of 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
 max_small_discards	      This parameter controls the number of discard
			      commands that consist small blocks less than 2MB.
			      commands that consist small blocks less than 2MB.
			      The candidates to be discarded are cached until
			      The candidates to be discarded are cached until
+2 −0
Original line number Original line Diff line number Diff line
@@ -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_idle, gc_mode);
F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, gc_urgent, 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, 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, max_small_discards, max_discards);
F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, discard_granularity, discard_granularity);
F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, discard_granularity, discard_granularity);
F2FS_RW_ATTR(RESERVED_BLOCKS, f2fs_sb_info, reserved_blocks, reserved_blocks);
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_idle),
	ATTR_LIST(gc_urgent),
	ATTR_LIST(gc_urgent),
	ATTR_LIST(reclaim_segments),
	ATTR_LIST(reclaim_segments),
	ATTR_LIST(main_blkaddr),
	ATTR_LIST(max_small_discards),
	ATTR_LIST(max_small_discards),
	ATTR_LIST(discard_granularity),
	ATTR_LIST(discard_granularity),
	ATTR_LIST(batched_trim_sections),
	ATTR_LIST(batched_trim_sections),