* [f2fs-dev] [PATCH v2] mkfs.f2fs: support -C [no]hashonly to control linear lookup fallback
@ 2025-07-25 0:59 Chao Yu via Linux-f2fs-devel
2025-07-25 2:08 ` Zhiguo Niu
0 siblings, 1 reply; 4+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2025-07-25 0:59 UTC (permalink / raw)
To: jaegeuk; +Cc: linux-f2fs-devel
It provides a way to disable linear lookup fallback during mkfs.
Behavior summary:
Android Distro
By default disabled enabled
Tune w/ [no]hashonly no yes
Android case:
1.1) Disable linear lookup:
mkfs.f2fs -f -g android -O casefold -C utf8:hashonly /dev/vdb
dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
s_encoding_flags [0x 2 : 2]
1.2) Enable linear lookup:
mkfs.f2fs -f -g android -O casefold -C utf8:nohashonly /dev/vdb
dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
s_encoding_flags [0x 2 : 2]
1.3) By default:
mkfs.f2fs -f -g android -O casefold -C utf8 /dev/vdb
dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
s_encoding_flags [0x 2 : 2]
Distro case:
2.1) Disable linear lookup:
mkfs.f2fs -f -O casefold -C utf8:hashonly /dev/vdb
dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
s_encoding_flags [0x 2 : 2]
2.2) Enable linear lookup:
mkfs.f2fs -f -O casefold -C utf8:nohashonly /dev/vdb
dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
s_encoding_flags [0x 0 : 0]
2.3) By default:
mkfs.f2fs -f -O casefold -C utf8 /dev/vdb
dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
s_encoding_flags [0x 0 : 0]
Signed-off-by: Chao Yu <chao@kernel.org>
---
v2:
- disable linear lookup by default for Android case
include/f2fs_fs.h | 3 ++-
lib/libf2fs.c | 1 +
man/mkfs.f2fs.8 | 10 ++++++++--
mkfs/f2fs_format.c | 3 +++
mkfs/f2fs_format_main.c | 3 ++-
5 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h
index f7268d1..a8da8fa 100644
--- a/include/f2fs_fs.h
+++ b/include/f2fs_fs.h
@@ -1478,7 +1478,8 @@ enum {
/* feature list in Android */
enum {
- F2FS_FEATURE_NAT_BITS = 0x0001,
+ F2FS_FEATURE_NAT_BITS = 0x0001,
+ F2FS_FEATURE_LINEAR_LOOKUP = 0x0002,
};
/* nolinear lookup tune */
diff --git a/lib/libf2fs.c b/lib/libf2fs.c
index 2f012c8..0e3e62a 100644
--- a/lib/libf2fs.c
+++ b/lib/libf2fs.c
@@ -1424,6 +1424,7 @@ static const struct enc_flags {
char *param;
} encoding_flags[] = {
{ F2FS_ENC_STRICT_MODE_FL, "strict" },
+ { F2FS_ENC_NO_COMPAT_FALLBACK_FL, "hashonly"}
};
/* Return a positive number < 0xff indicating the encoding magic number
diff --git a/man/mkfs.f2fs.8 b/man/mkfs.f2fs.8
index 8b3b0cc..8cb7d32 100644
--- a/man/mkfs.f2fs.8
+++ b/man/mkfs.f2fs.8
@@ -232,9 +232,15 @@ Use UTF-8 for casefolding.
.I flags:
.RS 1.2i
.TP 1.2i
-.B strict
+.B [no]strict
This flag specifies that invalid strings should be rejected by the filesystem.
-Default is disabled.
+For android case, it will disable linear lookup by default.
+.RE
+.RS 1.2i
+.TP 1.2i
+.B [no]hashonly
+This flag specifies that there is no linear lookup fallback during lookup.
+By default, linear lookup fallback is enabled.
.RE
.RE
.TP
diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c
index 2680bd3..a45bbcb 100644
--- a/mkfs/f2fs_format.c
+++ b/mkfs/f2fs_format.c
@@ -671,6 +671,9 @@ static int f2fs_prepare_super_block(void)
memcpy(sb->init_version, c.version, VERSION_LEN);
if (c.feature & F2FS_FEATURE_CASEFOLD) {
+ if (!(c.s_encoding_flags & F2FS_ENC_NO_COMPAT_FALLBACK_FL) &&
+ (c.disabled_feature & F2FS_FEATURE_LINEAR_LOOKUP))
+ c.s_encoding_flags |= F2FS_ENC_NO_COMPAT_FALLBACK_FL;
set_sb(s_encoding, c.s_encoding);
set_sb(s_encoding_flags, c.s_encoding_flags);
}
diff --git a/mkfs/f2fs_format_main.c b/mkfs/f2fs_format_main.c
index f0bec4f..8f8e975 100644
--- a/mkfs/f2fs_format_main.c
+++ b/mkfs/f2fs_format_main.c
@@ -143,7 +143,8 @@ static void add_default_options(void)
force_overwrite = 1;
c.wanted_sector_size = F2FS_BLKSIZE;
c.root_uid = c.root_gid = 0;
- c.disabled_feature |= F2FS_FEATURE_NAT_BITS;
+ c.disabled_feature |= F2FS_FEATURE_NAT_BITS |
+ F2FS_FEATURE_LINEAR_LOOKUP;
/* RO doesn't need any other features */
if (c.feature & F2FS_FEATURE_RO)
--
2.49.0
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [f2fs-dev] [PATCH v2] mkfs.f2fs: support -C [no]hashonly to control linear lookup fallback
2025-07-25 0:59 [f2fs-dev] [PATCH v2] mkfs.f2fs: support -C [no]hashonly to control linear lookup fallback Chao Yu via Linux-f2fs-devel
@ 2025-07-25 2:08 ` Zhiguo Niu
2025-07-25 2:45 ` Chao Yu via Linux-f2fs-devel
0 siblings, 1 reply; 4+ messages in thread
From: Zhiguo Niu @ 2025-07-25 2:08 UTC (permalink / raw)
To: Chao Yu; +Cc: jaegeuk, linux-f2fs-devel
Chao Yu via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net>
于2025年7月25日周五 09:03写道:
>
> It provides a way to disable linear lookup fallback during mkfs.
>
> Behavior summary:
> Android Distro
> By default disabled enabled
> Tune w/ [no]hashonly no yes
>
> Android case:
>
> 1.1) Disable linear lookup:
> mkfs.f2fs -f -g android -O casefold -C utf8:hashonly /dev/vdb
> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
> s_encoding_flags [0x 2 : 2]
>
> 1.2) Enable linear lookup:
> mkfs.f2fs -f -g android -O casefold -C utf8:nohashonly /dev/vdb
> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
> s_encoding_flags [0x 2 : 2]
Hi Chao,
Seems like a typo here? should be:
s_encoding_flags [0x 0 : 0] ?
thanks!
>
> 1.3) By default:
> mkfs.f2fs -f -g android -O casefold -C utf8 /dev/vdb
> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
> s_encoding_flags [0x 2 : 2]
>
> Distro case:
>
> 2.1) Disable linear lookup:
> mkfs.f2fs -f -O casefold -C utf8:hashonly /dev/vdb
> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
> s_encoding_flags [0x 2 : 2]
>
> 2.2) Enable linear lookup:
> mkfs.f2fs -f -O casefold -C utf8:nohashonly /dev/vdb
> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
> s_encoding_flags [0x 0 : 0]
>
> 2.3) By default:
> mkfs.f2fs -f -O casefold -C utf8 /dev/vdb
> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
> s_encoding_flags [0x 0 : 0]
>
> Signed-off-by: Chao Yu <chao@kernel.org>
> ---
> v2:
> - disable linear lookup by default for Android case
> include/f2fs_fs.h | 3 ++-
> lib/libf2fs.c | 1 +
> man/mkfs.f2fs.8 | 10 ++++++++--
> mkfs/f2fs_format.c | 3 +++
> mkfs/f2fs_format_main.c | 3 ++-
> 5 files changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h
> index f7268d1..a8da8fa 100644
> --- a/include/f2fs_fs.h
> +++ b/include/f2fs_fs.h
> @@ -1478,7 +1478,8 @@ enum {
>
> /* feature list in Android */
> enum {
> - F2FS_FEATURE_NAT_BITS = 0x0001,
> + F2FS_FEATURE_NAT_BITS = 0x0001,
> + F2FS_FEATURE_LINEAR_LOOKUP = 0x0002,
> };
>
> /* nolinear lookup tune */
> diff --git a/lib/libf2fs.c b/lib/libf2fs.c
> index 2f012c8..0e3e62a 100644
> --- a/lib/libf2fs.c
> +++ b/lib/libf2fs.c
> @@ -1424,6 +1424,7 @@ static const struct enc_flags {
> char *param;
> } encoding_flags[] = {
> { F2FS_ENC_STRICT_MODE_FL, "strict" },
> + { F2FS_ENC_NO_COMPAT_FALLBACK_FL, "hashonly"}
> };
>
> /* Return a positive number < 0xff indicating the encoding magic number
> diff --git a/man/mkfs.f2fs.8 b/man/mkfs.f2fs.8
> index 8b3b0cc..8cb7d32 100644
> --- a/man/mkfs.f2fs.8
> +++ b/man/mkfs.f2fs.8
> @@ -232,9 +232,15 @@ Use UTF-8 for casefolding.
> .I flags:
> .RS 1.2i
> .TP 1.2i
> -.B strict
> +.B [no]strict
> This flag specifies that invalid strings should be rejected by the filesystem.
> -Default is disabled.
> +For android case, it will disable linear lookup by default.
> +.RE
> +.RS 1.2i
> +.TP 1.2i
> +.B [no]hashonly
> +This flag specifies that there is no linear lookup fallback during lookup.
> +By default, linear lookup fallback is enabled.
> .RE
> .RE
> .TP
> diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c
> index 2680bd3..a45bbcb 100644
> --- a/mkfs/f2fs_format.c
> +++ b/mkfs/f2fs_format.c
> @@ -671,6 +671,9 @@ static int f2fs_prepare_super_block(void)
> memcpy(sb->init_version, c.version, VERSION_LEN);
>
> if (c.feature & F2FS_FEATURE_CASEFOLD) {
> + if (!(c.s_encoding_flags & F2FS_ENC_NO_COMPAT_FALLBACK_FL) &&
> + (c.disabled_feature & F2FS_FEATURE_LINEAR_LOOKUP))
> + c.s_encoding_flags |= F2FS_ENC_NO_COMPAT_FALLBACK_FL;
> set_sb(s_encoding, c.s_encoding);
> set_sb(s_encoding_flags, c.s_encoding_flags);
> }
> diff --git a/mkfs/f2fs_format_main.c b/mkfs/f2fs_format_main.c
> index f0bec4f..8f8e975 100644
> --- a/mkfs/f2fs_format_main.c
> +++ b/mkfs/f2fs_format_main.c
> @@ -143,7 +143,8 @@ static void add_default_options(void)
> force_overwrite = 1;
> c.wanted_sector_size = F2FS_BLKSIZE;
> c.root_uid = c.root_gid = 0;
> - c.disabled_feature |= F2FS_FEATURE_NAT_BITS;
> + c.disabled_feature |= F2FS_FEATURE_NAT_BITS |
> + F2FS_FEATURE_LINEAR_LOOKUP;
>
> /* RO doesn't need any other features */
> if (c.feature & F2FS_FEATURE_RO)
> --
> 2.49.0
>
>
>
> _______________________________________________
> Linux-f2fs-devel mailing list
> Linux-f2fs-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [f2fs-dev] [PATCH v2] mkfs.f2fs: support -C [no]hashonly to control linear lookup fallback
2025-07-25 2:08 ` Zhiguo Niu
@ 2025-07-25 2:45 ` Chao Yu via Linux-f2fs-devel
2025-07-25 3:04 ` Zhiguo Niu
0 siblings, 1 reply; 4+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2025-07-25 2:45 UTC (permalink / raw)
To: Zhiguo Niu; +Cc: jaegeuk, linux-f2fs-devel
On 7/25/2025 10:08 AM, Zhiguo Niu wrote:
> Chao Yu via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net>
> 于2025年7月25日周五 09:03写道:
>>
>> It provides a way to disable linear lookup fallback during mkfs.
>>
>> Behavior summary:
>> Android Distro
>> By default disabled enabled
>> Tune w/ [no]hashonly no yes
>>
>> Android case:
>>
>> 1.1) Disable linear lookup:
>> mkfs.f2fs -f -g android -O casefold -C utf8:hashonly /dev/vdb
>> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
>> s_encoding_flags [0x 2 : 2]
>>
>> 1.2) Enable linear lookup:
>> mkfs.f2fs -f -g android -O casefold -C utf8:nohashonly /dev/vdb
>> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
>> s_encoding_flags [0x 2 : 2]
> Hi Chao,
> Seems like a typo here? should be:
Zhiguo,
Not a typo, it's intentional, see above behavior summary.
But after rethinking about this, I guess it will be good to honor
'nohashonly' for Android case like Distro case.
Anyway, let me update the patch.
Thanks,
> s_encoding_flags [0x 0 : 0] ?
> thanks!
>>
>> 1.3) By default:
>> mkfs.f2fs -f -g android -O casefold -C utf8 /dev/vdb
>> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
>> s_encoding_flags [0x 2 : 2]
>>
>> Distro case:
>>
>> 2.1) Disable linear lookup:
>> mkfs.f2fs -f -O casefold -C utf8:hashonly /dev/vdb
>> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
>> s_encoding_flags [0x 2 : 2]
>>
>> 2.2) Enable linear lookup:
>> mkfs.f2fs -f -O casefold -C utf8:nohashonly /dev/vdb
>> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
>> s_encoding_flags [0x 0 : 0]
>>
>> 2.3) By default:
>> mkfs.f2fs -f -O casefold -C utf8 /dev/vdb
>> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
>> s_encoding_flags [0x 0 : 0]
>>
>> Signed-off-by: Chao Yu <chao@kernel.org>
>> ---
>> v2:
>> - disable linear lookup by default for Android case
>> include/f2fs_fs.h | 3 ++-
>> lib/libf2fs.c | 1 +
>> man/mkfs.f2fs.8 | 10 ++++++++--
>> mkfs/f2fs_format.c | 3 +++
>> mkfs/f2fs_format_main.c | 3 ++-
>> 5 files changed, 16 insertions(+), 4 deletions(-)
>>
>> diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h
>> index f7268d1..a8da8fa 100644
>> --- a/include/f2fs_fs.h
>> +++ b/include/f2fs_fs.h
>> @@ -1478,7 +1478,8 @@ enum {
>>
>> /* feature list in Android */
>> enum {
>> - F2FS_FEATURE_NAT_BITS = 0x0001,
>> + F2FS_FEATURE_NAT_BITS = 0x0001,
>> + F2FS_FEATURE_LINEAR_LOOKUP = 0x0002,
>> };
>>
>> /* nolinear lookup tune */
>> diff --git a/lib/libf2fs.c b/lib/libf2fs.c
>> index 2f012c8..0e3e62a 100644
>> --- a/lib/libf2fs.c
>> +++ b/lib/libf2fs.c
>> @@ -1424,6 +1424,7 @@ static const struct enc_flags {
>> char *param;
>> } encoding_flags[] = {
>> { F2FS_ENC_STRICT_MODE_FL, "strict" },
>> + { F2FS_ENC_NO_COMPAT_FALLBACK_FL, "hashonly"}
>> };
>>
>> /* Return a positive number < 0xff indicating the encoding magic number
>> diff --git a/man/mkfs.f2fs.8 b/man/mkfs.f2fs.8
>> index 8b3b0cc..8cb7d32 100644
>> --- a/man/mkfs.f2fs.8
>> +++ b/man/mkfs.f2fs.8
>> @@ -232,9 +232,15 @@ Use UTF-8 for casefolding.
>> .I flags:
>> .RS 1.2i
>> .TP 1.2i
>> -.B strict
>> +.B [no]strict
>> This flag specifies that invalid strings should be rejected by the filesystem.
>> -Default is disabled.
>> +For android case, it will disable linear lookup by default.
>> +.RE
>> +.RS 1.2i
>> +.TP 1.2i
>> +.B [no]hashonly
>> +This flag specifies that there is no linear lookup fallback during lookup.
>> +By default, linear lookup fallback is enabled.
>> .RE
>> .RE
>> .TP
>> diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c
>> index 2680bd3..a45bbcb 100644
>> --- a/mkfs/f2fs_format.c
>> +++ b/mkfs/f2fs_format.c
>> @@ -671,6 +671,9 @@ static int f2fs_prepare_super_block(void)
>> memcpy(sb->init_version, c.version, VERSION_LEN);
>>
>> if (c.feature & F2FS_FEATURE_CASEFOLD) {
>> + if (!(c.s_encoding_flags & F2FS_ENC_NO_COMPAT_FALLBACK_FL) &&
>> + (c.disabled_feature & F2FS_FEATURE_LINEAR_LOOKUP))
>> + c.s_encoding_flags |= F2FS_ENC_NO_COMPAT_FALLBACK_FL;
>> set_sb(s_encoding, c.s_encoding);
>> set_sb(s_encoding_flags, c.s_encoding_flags);
>> }
>> diff --git a/mkfs/f2fs_format_main.c b/mkfs/f2fs_format_main.c
>> index f0bec4f..8f8e975 100644
>> --- a/mkfs/f2fs_format_main.c
>> +++ b/mkfs/f2fs_format_main.c
>> @@ -143,7 +143,8 @@ static void add_default_options(void)
>> force_overwrite = 1;
>> c.wanted_sector_size = F2FS_BLKSIZE;
>> c.root_uid = c.root_gid = 0;
>> - c.disabled_feature |= F2FS_FEATURE_NAT_BITS;
>> + c.disabled_feature |= F2FS_FEATURE_NAT_BITS |
>> + F2FS_FEATURE_LINEAR_LOOKUP;
>>
>> /* RO doesn't need any other features */
>> if (c.feature & F2FS_FEATURE_RO)
>> --
>> 2.49.0
>>
>>
>>
>> _______________________________________________
>> Linux-f2fs-devel mailing list
>> Linux-f2fs-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [f2fs-dev] [PATCH v2] mkfs.f2fs: support -C [no]hashonly to control linear lookup fallback
2025-07-25 2:45 ` Chao Yu via Linux-f2fs-devel
@ 2025-07-25 3:04 ` Zhiguo Niu
0 siblings, 0 replies; 4+ messages in thread
From: Zhiguo Niu @ 2025-07-25 3:04 UTC (permalink / raw)
To: Chao Yu; +Cc: jaegeuk, linux-f2fs-devel
Chao Yu <chao@kernel.org> 于2025年7月25日周五 10:45写道:
>
> On 7/25/2025 10:08 AM, Zhiguo Niu wrote:
> > Chao Yu via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net>
> > 于2025年7月25日周五 09:03写道:
> >>
> >> It provides a way to disable linear lookup fallback during mkfs.
> >>
> >> Behavior summary:
> >> Android Distro
> >> By default disabled enabled
> >> Tune w/ [no]hashonly no yes
> >>
> >> Android case:
> >>
> >> 1.1) Disable linear lookup:
> >> mkfs.f2fs -f -g android -O casefold -C utf8:hashonly /dev/vdb
> >> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
> >> s_encoding_flags [0x 2 : 2]
> >>
> >> 1.2) Enable linear lookup:
> >> mkfs.f2fs -f -g android -O casefold -C utf8:nohashonly /dev/vdb
> >> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
> >> s_encoding_flags [0x 2 : 2]
> > Hi Chao,
> > Seems like a typo here? should be:
>
> Zhiguo,
>
> Not a typo, it's intentional, see above behavior summary.
>
Hi Chao,
Ah, I got it after checking again.^^
> But after rethinking about this, I guess it will be good to honor
> 'nohashonly' for Android case like Distro case.
>
> Anyway, let me update the patch.
Thanks for this and explanation.
>
> Thanks,
>
> > s_encoding_flags [0x 0 : 0] ?
> > thanks!
> >>
> >> 1.3) By default:
> >> mkfs.f2fs -f -g android -O casefold -C utf8 /dev/vdb
> >> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
> >> s_encoding_flags [0x 2 : 2]
> >>
> >> Distro case:
> >>
> >> 2.1) Disable linear lookup:
> >> mkfs.f2fs -f -O casefold -C utf8:hashonly /dev/vdb
> >> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
> >> s_encoding_flags [0x 2 : 2]
> >>
> >> 2.2) Enable linear lookup:
> >> mkfs.f2fs -f -O casefold -C utf8:nohashonly /dev/vdb
> >> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
> >> s_encoding_flags [0x 0 : 0]
> >>
> >> 2.3) By default:
> >> mkfs.f2fs -f -O casefold -C utf8 /dev/vdb
> >> dump.f2fs -d3 /dev/vdb |grep s_encoding_flags
> >> s_encoding_flags [0x 0 : 0]
> >>
> >> Signed-off-by: Chao Yu <chao@kernel.org>
> >> ---
> >> v2:
> >> - disable linear lookup by default for Android case
> >> include/f2fs_fs.h | 3 ++-
> >> lib/libf2fs.c | 1 +
> >> man/mkfs.f2fs.8 | 10 ++++++++--
> >> mkfs/f2fs_format.c | 3 +++
> >> mkfs/f2fs_format_main.c | 3 ++-
> >> 5 files changed, 16 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h
> >> index f7268d1..a8da8fa 100644
> >> --- a/include/f2fs_fs.h
> >> +++ b/include/f2fs_fs.h
> >> @@ -1478,7 +1478,8 @@ enum {
> >>
> >> /* feature list in Android */
> >> enum {
> >> - F2FS_FEATURE_NAT_BITS = 0x0001,
> >> + F2FS_FEATURE_NAT_BITS = 0x0001,
> >> + F2FS_FEATURE_LINEAR_LOOKUP = 0x0002,
> >> };
> >>
> >> /* nolinear lookup tune */
> >> diff --git a/lib/libf2fs.c b/lib/libf2fs.c
> >> index 2f012c8..0e3e62a 100644
> >> --- a/lib/libf2fs.c
> >> +++ b/lib/libf2fs.c
> >> @@ -1424,6 +1424,7 @@ static const struct enc_flags {
> >> char *param;
> >> } encoding_flags[] = {
> >> { F2FS_ENC_STRICT_MODE_FL, "strict" },
> >> + { F2FS_ENC_NO_COMPAT_FALLBACK_FL, "hashonly"}
> >> };
> >>
> >> /* Return a positive number < 0xff indicating the encoding magic number
> >> diff --git a/man/mkfs.f2fs.8 b/man/mkfs.f2fs.8
> >> index 8b3b0cc..8cb7d32 100644
> >> --- a/man/mkfs.f2fs.8
> >> +++ b/man/mkfs.f2fs.8
> >> @@ -232,9 +232,15 @@ Use UTF-8 for casefolding.
> >> .I flags:
> >> .RS 1.2i
> >> .TP 1.2i
> >> -.B strict
> >> +.B [no]strict
> >> This flag specifies that invalid strings should be rejected by the filesystem.
> >> -Default is disabled.
> >> +For android case, it will disable linear lookup by default.
> >> +.RE
> >> +.RS 1.2i
> >> +.TP 1.2i
> >> +.B [no]hashonly
> >> +This flag specifies that there is no linear lookup fallback during lookup.
> >> +By default, linear lookup fallback is enabled.
> >> .RE
> >> .RE
> >> .TP
> >> diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c
> >> index 2680bd3..a45bbcb 100644
> >> --- a/mkfs/f2fs_format.c
> >> +++ b/mkfs/f2fs_format.c
> >> @@ -671,6 +671,9 @@ static int f2fs_prepare_super_block(void)
> >> memcpy(sb->init_version, c.version, VERSION_LEN);
> >>
> >> if (c.feature & F2FS_FEATURE_CASEFOLD) {
> >> + if (!(c.s_encoding_flags & F2FS_ENC_NO_COMPAT_FALLBACK_FL) &&
> >> + (c.disabled_feature & F2FS_FEATURE_LINEAR_LOOKUP))
> >> + c.s_encoding_flags |= F2FS_ENC_NO_COMPAT_FALLBACK_FL;
> >> set_sb(s_encoding, c.s_encoding);
> >> set_sb(s_encoding_flags, c.s_encoding_flags);
> >> }
> >> diff --git a/mkfs/f2fs_format_main.c b/mkfs/f2fs_format_main.c
> >> index f0bec4f..8f8e975 100644
> >> --- a/mkfs/f2fs_format_main.c
> >> +++ b/mkfs/f2fs_format_main.c
> >> @@ -143,7 +143,8 @@ static void add_default_options(void)
> >> force_overwrite = 1;
> >> c.wanted_sector_size = F2FS_BLKSIZE;
> >> c.root_uid = c.root_gid = 0;
> >> - c.disabled_feature |= F2FS_FEATURE_NAT_BITS;
> >> + c.disabled_feature |= F2FS_FEATURE_NAT_BITS |
> >> + F2FS_FEATURE_LINEAR_LOOKUP;
> >>
> >> /* RO doesn't need any other features */
> >> if (c.feature & F2FS_FEATURE_RO)
> >> --
> >> 2.49.0
> >>
> >>
> >>
> >> _______________________________________________
> >> Linux-f2fs-devel mailing list
> >> Linux-f2fs-devel@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
>
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-07-25 3:05 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-25 0:59 [f2fs-dev] [PATCH v2] mkfs.f2fs: support -C [no]hashonly to control linear lookup fallback Chao Yu via Linux-f2fs-devel
2025-07-25 2:08 ` Zhiguo Niu
2025-07-25 2:45 ` Chao Yu via Linux-f2fs-devel
2025-07-25 3:04 ` Zhiguo Niu
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.