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
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
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
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,
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),
>
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
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
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
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