On 8/4/25 14:03, Daniel Lee wrote: > This commit introduces a new read-only sysfs entry at > /sys/fs/f2fs/<device>/effective_lookup_mode. > > This entry displays the actual directory lookup mode F2FS is > currently using. This is needed for debugging and verification, > as the behavior is determined by both on-disk flags and mount > options. > > Signed-off-by: Daniel Lee <chul...@google.com> > --- > Documentation/ABI/testing/sysfs-fs-f2fs | 14 ++++++++++++++ > fs/f2fs/sysfs.c | 18 ++++++++++++++++++ > 2 files changed, 32 insertions(+) > > diff --git a/Documentation/ABI/testing/sysfs-fs-f2fs > b/Documentation/ABI/testing/sysfs-fs-f2fs > index bf03263b9f46..e847a50e7403 100644 > --- a/Documentation/ABI/testing/sysfs-fs-f2fs > +++ b/Documentation/ABI/testing/sysfs-fs-f2fs > @@ -861,3 +861,17 @@ Description: This is a read-only entry to show the > value of sb.s_encoding_flags, > SB_ENC_STRICT_MODE_FL 0x00000001 > SB_ENC_NO_COMPAT_FALLBACK_FL 0x00000002 > ============================ ========== > + > +What: /sys/fs/f2fs/<disk>/effective_lookup_mode > +Date: August 2025 > +Contact: "Daniel Lee" <chul...@google.com> > +Description: > + This is a read-only entry to show the effective directory > lookup mode > + F2FS is currently using for casefolded directories. > + This considers both the "lookup_mode" mount option and the > on-disk > + encoding flag, SB_ENC_NO_COMPAT_FALLBACK_FL. > + > + Possible values are: > + - "perf": Hash-only lookup. > + - "compat": Hash-based lookup with a linear search fallback > enabled > + for casefolded directories.
Any way to know whether "perf" or "compat" comes from auto mode or not? something like "auto:perf", "auto:compat", maybe? Thanks, > diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c > index 75134d69a0bd..9897dd8564e0 100644 > --- a/fs/f2fs/sysfs.c > +++ b/fs/f2fs/sysfs.c > @@ -281,6 +281,22 @@ static ssize_t encoding_flags_show(struct f2fs_attr *a, > le16_to_cpu(F2FS_RAW_SUPER(sbi)->s_encoding_flags)); > } > > +static ssize_t effective_lookup_mode_show(struct f2fs_attr *a, > + struct f2fs_sb_info *sbi, char *buf) > +{ > + switch (f2fs_get_lookup_mode(sbi)) { > + case LOOKUP_PERF: > + return sysfs_emit(buf, "perf\n"); > + case LOOKUP_COMPAT: > + return sysfs_emit(buf, "compat\n"); > + case LOOKUP_AUTO: > + if (sb_no_casefold_compat_fallback(sbi->sb)) > + return sysfs_emit(buf, "perf\n"); > + return sysfs_emit(buf, "compat\n"); > + } > + return 0; > +} > + > static ssize_t mounted_time_sec_show(struct f2fs_attr *a, > struct f2fs_sb_info *sbi, char *buf) > { > @@ -1166,6 +1182,7 @@ F2FS_GENERAL_RO_ATTR(current_reserved_blocks); > F2FS_GENERAL_RO_ATTR(unusable); > F2FS_GENERAL_RO_ATTR(encoding); > F2FS_GENERAL_RO_ATTR(encoding_flags); > +F2FS_GENERAL_RO_ATTR(effective_lookup_mode); > F2FS_GENERAL_RO_ATTR(mounted_time_sec); > F2FS_GENERAL_RO_ATTR(main_blkaddr); > F2FS_GENERAL_RO_ATTR(pending_discard); > @@ -1282,6 +1299,7 @@ static struct attribute *f2fs_attrs[] = { > ATTR_LIST(current_reserved_blocks), > ATTR_LIST(encoding), > ATTR_LIST(encoding_flags), > + ATTR_LIST(effective_lookup_mode), > ATTR_LIST(mounted_time_sec), > #ifdef CONFIG_F2FS_STAT_FS > ATTR_LIST(cp_foreground_calls), _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel