2021-06-02 04:25:54

by Daniel Rosenberg

[permalink] [raw]
Subject: [PATCH 0/2] Fix up casefolding sysfs entries for F2FS

These correct displaying support for casefolding only when that capability
is present, and advertise if encryption and casefolding are supported
together. Casefolding requires CONFIG_UNICODE, and casefolding with
encryption wasn't supported until commit 7ad08a58bf67
("f2fs: Handle casefolding with Encryption")

Daniel Rosenberg (2):
f2fs: Show casefolding support only when supported
f2fs: Advertise encrypted casefolding in sysfs

fs/f2fs/sysfs.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)

--
2.32.0.rc0.204.g9fa02ecfa5-goog


2021-06-02 06:28:59

by Daniel Rosenberg

[permalink] [raw]
Subject: [PATCH 1/2] f2fs: Show casefolding support only when supported

The casefolding feature is only supported when CONFIG_UNICODE is set.
This modifies the feature list f2fs presents under sysfs accordingly.

Fixes: 5aba54302a46 ("f2fs: include charset encoding information in the superblock")
Signed-off-by: Daniel Rosenberg <[email protected]>
---
fs/f2fs/sysfs.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c
index dc71bc968c72..09e3f258eb52 100644
--- a/fs/f2fs/sysfs.c
+++ b/fs/f2fs/sysfs.c
@@ -720,7 +720,9 @@ F2FS_FEATURE_RO_ATTR(lost_found, FEAT_LOST_FOUND);
F2FS_FEATURE_RO_ATTR(verity, FEAT_VERITY);
#endif
F2FS_FEATURE_RO_ATTR(sb_checksum, FEAT_SB_CHECKSUM);
+#ifdef CONFIG_UNICODE
F2FS_FEATURE_RO_ATTR(casefold, FEAT_CASEFOLD);
+#endif
#ifdef CONFIG_F2FS_FS_COMPRESSION
F2FS_FEATURE_RO_ATTR(compression, FEAT_COMPRESSION);
F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, compr_written_block, compr_written_block);
@@ -829,7 +831,9 @@ static struct attribute *f2fs_feat_attrs[] = {
ATTR_LIST(verity),
#endif
ATTR_LIST(sb_checksum),
+#ifdef CONFIG_UNICODE
ATTR_LIST(casefold),
+#endif
#ifdef CONFIG_F2FS_FS_COMPRESSION
ATTR_LIST(compression),
#endif
--
2.32.0.rc0.204.g9fa02ecfa5-goog

2021-06-02 07:42:31

by Daniel Rosenberg

[permalink] [raw]
Subject: [PATCH 2/2] f2fs: Advertise encrypted casefolding in sysfs

Older kernels don't support encryption with casefolding. This adds
the sysfs entry encrypted_casefold to show support for those combined
features. Support for this feature was originally added by
commit 7ad08a58bf67 ("f2fs: Handle casefolding with Encryption")

Signed-off-by: Daniel Rosenberg <[email protected]>
---
fs/f2fs/sysfs.c | 11 +++++++++++
1 file changed, 11 insertions(+)

diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c
index 09e3f258eb52..3c1095a76710 100644
--- a/fs/f2fs/sysfs.c
+++ b/fs/f2fs/sysfs.c
@@ -161,6 +161,9 @@ static ssize_t features_show(struct f2fs_attr *a,
if (f2fs_sb_has_compression(sbi))
len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s",
len ? ", " : "", "compression");
+ if (f2fs_sb_has_casefold(sbi) && f2fs_sb_has_encrypt(sbi))
+ len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s",
+ len ? ", " : "", "encrypted_casefold");
len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s",
len ? ", " : "", "pin_file");
len += scnprintf(buf + len, PAGE_SIZE - len, "\n");
@@ -579,6 +582,7 @@ enum feat_id {
FEAT_CASEFOLD,
FEAT_COMPRESSION,
FEAT_TEST_DUMMY_ENCRYPTION_V2,
+ FEAT_ENCRYPTED_CASEFOLD,
};

static ssize_t f2fs_feature_show(struct f2fs_attr *a,
@@ -600,6 +604,7 @@ static ssize_t f2fs_feature_show(struct f2fs_attr *a,
case FEAT_CASEFOLD:
case FEAT_COMPRESSION:
case FEAT_TEST_DUMMY_ENCRYPTION_V2:
+ case FEAT_ENCRYPTED_CASEFOLD:
return sprintf(buf, "supported\n");
}
return 0;
@@ -704,6 +709,9 @@ F2FS_GENERAL_RO_ATTR(avg_vblocks);
#ifdef CONFIG_FS_ENCRYPTION
F2FS_FEATURE_RO_ATTR(encryption, FEAT_CRYPTO);
F2FS_FEATURE_RO_ATTR(test_dummy_encryption_v2, FEAT_TEST_DUMMY_ENCRYPTION_V2);
+#ifdef CONFIG_UNICODE
+F2FS_FEATURE_RO_ATTR(encrypted_casefold, FEAT_ENCRYPTED_CASEFOLD);
+#endif
#endif
#ifdef CONFIG_BLK_DEV_ZONED
F2FS_FEATURE_RO_ATTR(block_zoned, FEAT_BLKZONED);
@@ -815,6 +823,9 @@ static struct attribute *f2fs_feat_attrs[] = {
#ifdef CONFIG_FS_ENCRYPTION
ATTR_LIST(encryption),
ATTR_LIST(test_dummy_encryption_v2),
+#ifdef CONFIG_UNICODE
+ ATTR_LIST(encrypted_casefold),
+#endif
#endif
#ifdef CONFIG_BLK_DEV_ZONED
ATTR_LIST(block_zoned),
--
2.32.0.rc0.204.g9fa02ecfa5-goog

2021-06-02 14:56:12

by Chao Yu

[permalink] [raw]
Subject: Re: [PATCH 1/2] f2fs: Show casefolding support only when supported

On 2021/6/2 12:15, Daniel Rosenberg wrote:
> The casefolding feature is only supported when CONFIG_UNICODE is set.
> This modifies the feature list f2fs presents under sysfs accordingly.
>
> Fixes: 5aba54302a46 ("f2fs: include charset encoding information in the superblock")
> Signed-off-by: Daniel Rosenberg <[email protected]>

Reviewed-by: Chao Yu <[email protected]>

Thanks,

2021-06-02 14:59:30

by Chao Yu

[permalink] [raw]
Subject: Re: [PATCH 2/2] f2fs: Advertise encrypted casefolding in sysfs

On 2021/6/2 12:15, Daniel Rosenberg wrote:
> Older kernels don't support encryption with casefolding. This adds
> the sysfs entry encrypted_casefold to show support for those combined
> features. Support for this feature was originally added by
> commit 7ad08a58bf67 ("f2fs: Handle casefolding with Encryption")

Shouldn't this be backported to the kernel where we support casefolding
with encryption? So adding a fixes tag here?

Thanks,

>
> Signed-off-by: Daniel Rosenberg <[email protected]>
> ---
> fs/f2fs/sysfs.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c
> index 09e3f258eb52..3c1095a76710 100644
> --- a/fs/f2fs/sysfs.c
> +++ b/fs/f2fs/sysfs.c
> @@ -161,6 +161,9 @@ static ssize_t features_show(struct f2fs_attr *a,
> if (f2fs_sb_has_compression(sbi))
> len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s",
> len ? ", " : "", "compression");
> + if (f2fs_sb_has_casefold(sbi) && f2fs_sb_has_encrypt(sbi))
> + len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s",
> + len ? ", " : "", "encrypted_casefold");
> len += scnprintf(buf + len, PAGE_SIZE - len, "%s%s",
> len ? ", " : "", "pin_file");
> len += scnprintf(buf + len, PAGE_SIZE - len, "\n");
> @@ -579,6 +582,7 @@ enum feat_id {
> FEAT_CASEFOLD,
> FEAT_COMPRESSION,
> FEAT_TEST_DUMMY_ENCRYPTION_V2,
> + FEAT_ENCRYPTED_CASEFOLD,
> };
>
> static ssize_t f2fs_feature_show(struct f2fs_attr *a,
> @@ -600,6 +604,7 @@ static ssize_t f2fs_feature_show(struct f2fs_attr *a,
> case FEAT_CASEFOLD:
> case FEAT_COMPRESSION:
> case FEAT_TEST_DUMMY_ENCRYPTION_V2:
> + case FEAT_ENCRYPTED_CASEFOLD:
> return sprintf(buf, "supported\n");
> }
> return 0;
> @@ -704,6 +709,9 @@ F2FS_GENERAL_RO_ATTR(avg_vblocks);
> #ifdef CONFIG_FS_ENCRYPTION
> F2FS_FEATURE_RO_ATTR(encryption, FEAT_CRYPTO);
> F2FS_FEATURE_RO_ATTR(test_dummy_encryption_v2, FEAT_TEST_DUMMY_ENCRYPTION_V2);
> +#ifdef CONFIG_UNICODE
> +F2FS_FEATURE_RO_ATTR(encrypted_casefold, FEAT_ENCRYPTED_CASEFOLD);
> +#endif
> #endif
> #ifdef CONFIG_BLK_DEV_ZONED
> F2FS_FEATURE_RO_ATTR(block_zoned, FEAT_BLKZONED);
> @@ -815,6 +823,9 @@ static struct attribute *f2fs_feat_attrs[] = {
> #ifdef CONFIG_FS_ENCRYPTION
> ATTR_LIST(encryption),
> ATTR_LIST(test_dummy_encryption_v2),
> +#ifdef CONFIG_UNICODE
> + ATTR_LIST(encrypted_casefold),
> +#endif
> #endif
> #ifdef CONFIG_BLK_DEV_ZONED
> ATTR_LIST(block_zoned),
>

2021-06-02 19:53:41

by Eric Biggers

[permalink] [raw]
Subject: Re: [PATCH 1/2] f2fs: Show casefolding support only when supported

On Wed, Jun 02, 2021 at 04:15:38AM +0000, Daniel Rosenberg wrote:
> The casefolding feature is only supported when CONFIG_UNICODE is set.
> This modifies the feature list f2fs presents under sysfs accordingly.
>
> Fixes: 5aba54302a46 ("f2fs: include charset encoding information in the superblock")
> Signed-off-by: Daniel Rosenberg <[email protected]>

Can you add a Cc stable tag?

- Eric

2021-06-02 19:57:58

by Eric Biggers

[permalink] [raw]
Subject: Re: [PATCH 2/2] f2fs: Advertise encrypted casefolding in sysfs

On Wed, Jun 02, 2021 at 04:15:39AM +0000, Daniel Rosenberg wrote:
> +#ifdef CONFIG_UNICODE
> +F2FS_FEATURE_RO_ATTR(encrypted_casefold, FEAT_ENCRYPTED_CASEFOLD);
> +#endif

Shouldn't it be defined(CONFIG_UNICODE) && defined(CONFIG_FS_ENCRYPTION)?

> #endif
> #ifdef CONFIG_BLK_DEV_ZONED
> F2FS_FEATURE_RO_ATTR(block_zoned, FEAT_BLKZONED);
> @@ -815,6 +823,9 @@ static struct attribute *f2fs_feat_attrs[] = {
> #ifdef CONFIG_FS_ENCRYPTION
> ATTR_LIST(encryption),
> ATTR_LIST(test_dummy_encryption_v2),
> +#ifdef CONFIG_UNICODE
> + ATTR_LIST(encrypted_casefold),
> +#endif

Likewise here.

- Eric

2021-06-02 23:24:09

by Daniel Rosenberg

[permalink] [raw]
Subject: Re: [PATCH 2/2] f2fs: Advertise encrypted casefolding in sysfs

On Wed, Jun 2, 2021 at 12:54 PM Eric Biggers <[email protected]> wrote:
>
> On Wed, Jun 02, 2021 at 04:15:39AM +0000, Daniel Rosenberg wrote:
> > +#ifdef CONFIG_UNICODE
> > +F2FS_FEATURE_RO_ATTR(encrypted_casefold, FEAT_ENCRYPTED_CASEFOLD);
> > +#endif
>
> Shouldn't it be defined(CONFIG_UNICODE) && defined(CONFIG_FS_ENCRYPTION)?
>
> > #endif
> > #ifdef CONFIG_BLK_DEV_ZONED
> > F2FS_FEATURE_RO_ATTR(block_zoned, FEAT_BLKZONED);
> > @@ -815,6 +823,9 @@ static struct attribute *f2fs_feat_attrs[] = {
> > #ifdef CONFIG_FS_ENCRYPTION
> > ATTR_LIST(encryption),
> > ATTR_LIST(test_dummy_encryption_v2),
> > +#ifdef CONFIG_UNICODE
> > + ATTR_LIST(encrypted_casefold),
> > +#endif
>
> Likewise here.
>
> - Eric

Those are already within an #ifdef CONFIG_FS_ENCRYPTION, so it should
be covered already.
Should I send a v2 set with the

Fixes: 7ad08a58bf67 ("f2fs: Handle casefolding with Encryption")
Cc: [email protected] # v5.11+

appended?

-Daniel

2021-06-02 23:51:43

by Eric Biggers

[permalink] [raw]
Subject: Re: [PATCH 2/2] f2fs: Advertise encrypted casefolding in sysfs

On Wed, Jun 02, 2021 at 04:22:38PM -0700, Daniel Rosenberg wrote:
> On Wed, Jun 2, 2021 at 12:54 PM Eric Biggers <[email protected]> wrote:
> >
> > On Wed, Jun 02, 2021 at 04:15:39AM +0000, Daniel Rosenberg wrote:
> > > +#ifdef CONFIG_UNICODE
> > > +F2FS_FEATURE_RO_ATTR(encrypted_casefold, FEAT_ENCRYPTED_CASEFOLD);
> > > +#endif
> >
> > Shouldn't it be defined(CONFIG_UNICODE) && defined(CONFIG_FS_ENCRYPTION)?
> >
> > > #endif
> > > #ifdef CONFIG_BLK_DEV_ZONED
> > > F2FS_FEATURE_RO_ATTR(block_zoned, FEAT_BLKZONED);
> > > @@ -815,6 +823,9 @@ static struct attribute *f2fs_feat_attrs[] = {
> > > #ifdef CONFIG_FS_ENCRYPTION
> > > ATTR_LIST(encryption),
> > > ATTR_LIST(test_dummy_encryption_v2),
> > > +#ifdef CONFIG_UNICODE
> > > + ATTR_LIST(encrypted_casefold),
> > > +#endif
> >
> > Likewise here.
> >
> > - Eric
>
> Those are already within an #ifdef CONFIG_FS_ENCRYPTION, so it should
> be covered already.

Adding a comment to the #endif for CONFIG_FS_ENCRYPTION would make it easier to
read:

#endif /* CONFIG_FS_ENCRYPTION */

> Should I send a v2 set with the
>
> Fixes: 7ad08a58bf67 ("f2fs: Handle casefolding with Encryption")
> Cc: [email protected] # v5.11+
>
> appended?

Yes, please add those tags.

- Eric