On Tue, 2 Jun 2026 at 05:28, Eric Biggers <[email protected]> wrote: > On Wed, May 13, 2026 at 10:52:46AM +0200, Daniel Vacek wrote: > > From: Omar Sandoval <[email protected]> > > > > As encrypted files will be incompatible with older filesystem versions, > > new filesystems should be created with an incompat flag for fscrypt, > > which will gate access to the encryption ioctls. > > > > Signed-off-by: Omar Sandoval <[email protected]> > > Signed-off-by: Sweet Tea Dorminy <[email protected]> > > Signed-off-by: Josef Bacik <[email protected]> > > Signed-off-by: Daniel Vacek <[email protected]> > > --- > > > > v5: > > https://lore.kernel.org/linux-btrfs/ccbea52046c1dadbbef926bfc878cc23af952729.1706116485.git.jo...@toxicpanda.com/ > > * No changes since. > > --- > > fs/btrfs/fs.h | 3 ++- > > fs/btrfs/super.c | 5 +++++ > > fs/btrfs/sysfs.c | 6 ++++++ > > include/uapi/linux/btrfs.h | 1 + > > 4 files changed, 14 insertions(+), 1 deletion(-) > > > > diff --git a/fs/btrfs/fs.h b/fs/btrfs/fs.h > > index a4758d94b32e..dbdb73722c14 100644 > > --- a/fs/btrfs/fs.h > > +++ b/fs/btrfs/fs.h > > @@ -322,7 +322,8 @@ enum { > > (BTRFS_FEATURE_INCOMPAT_SUPP_STABLE | \ > > BTRFS_FEATURE_INCOMPAT_RAID_STRIPE_TREE | \ > > BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 | \ > > - BTRFS_FEATURE_INCOMPAT_REMAP_TREE) > > + BTRFS_FEATURE_INCOMPAT_REMAP_TREE | \ > > + BTRFS_FEATURE_INCOMPAT_ENCRYPT) > > > > #else > > > > diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c > > index efaa0788c1fc..84df97363611 100644 > > --- a/fs/btrfs/super.c > > +++ b/fs/btrfs/super.c > > @@ -2563,6 +2563,11 @@ static int __init btrfs_print_mod_info(void) > > ", fsverity=yes" > > #else > > ", fsverity=no" > > +#endif > > +#ifdef CONFIG_FS_ENCRYPTION > > + ", fscrypt=yes" > > +#else > > + ", fscrypt=no" > > #endif > > ; > > > > diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c > > index 0d14570c8bc2..3fe57843f902 100644 > > --- a/fs/btrfs/sysfs.c > > +++ b/fs/btrfs/sysfs.c > > @@ -305,6 +305,9 @@ BTRFS_FEAT_ATTR_INCOMPAT(remap_tree, REMAP_TREE); > > #ifdef CONFIG_FS_VERITY > > BTRFS_FEAT_ATTR_COMPAT_RO(verity, VERITY); > > #endif > > +#ifdef CONFIG_FS_ENCRYPTION > > +BTRFS_FEAT_ATTR_INCOMPAT(encryption, ENCRYPT); > > +#endif /* CONFIG_FS_ENCRYPTION */ > > > > /* > > * Features which depend on feature bits and may differ between each fs. > > @@ -338,6 +341,9 @@ static struct attribute > > *btrfs_supported_feature_attrs[] = { > > #ifdef CONFIG_FS_VERITY > > BTRFS_FEAT_ATTR_PTR(verity), > > #endif > > +#ifdef CONFIG_FS_ENCRYPTION > > + BTRFS_FEAT_ATTR_PTR(encryption), > > +#endif /* CONFIG_FS_ENCRYPTION */ > > NULL > > }; > > > > diff --git a/include/uapi/linux/btrfs.h b/include/uapi/linux/btrfs.h > > index 9165154a274d..2f6a46e5f4ce 100644 > > --- a/include/uapi/linux/btrfs.h > > +++ b/include/uapi/linux/btrfs.h > > @@ -335,6 +335,7 @@ struct btrfs_ioctl_fs_info_args { > > #define BTRFS_FEATURE_INCOMPAT_ZONED (1ULL << 12) > > #define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13) > > #define BTRFS_FEATURE_INCOMPAT_RAID_STRIPE_TREE (1ULL << 14) > > +#define BTRFS_FEATURE_INCOMPAT_ENCRYPT (1ULL << 15) > > #define BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA (1ULL << 16) > > #define BTRFS_FEATURE_INCOMPAT_REMAP_TREE (1ULL << 17) > > There seems to be an inconsistency where btrfs's fscrypt support depends > on CONFIG_BTRFS_EXPERIMENTAL, but the support is advertised in sysfs > regardless.
That is true. These should also depend on BTRFS_EXPERIMENTAL. Will amend. Thank you. --nX > - Eric

