From: Dave Chinner <david@fromorbit.com>
To: Eric Biggers <ebiggers@kernel.org>
Cc: linux-fsdevel@vger.kernel.org, linux-fscrypt@vger.kernel.org,
linux-ext4@vger.kernel.org,
linux-f2fs-devel@lists.sourceforge.net,
Satya Tangirala <satyat@google.com>
Subject: Re: [f2fs-dev] [PATCH 1/4] fs: introduce SB_INLINECRYPT
Date: Wed, 24 Jun 2020 10:55:09 +1000 [thread overview]
Message-ID: <20200624005509.GA5369@dread.disaster.area> (raw)
In-Reply-To: <20200623015017.GA844@sol.localdomain>
On Mon, Jun 22, 2020 at 06:50:17PM -0700, Eric Biggers wrote:
> On Tue, Jun 23, 2020 at 10:46:36AM +1000, Dave Chinner wrote:
> > On Wed, Jun 17, 2020 at 08:19:35PM -0700, Eric Biggers wrote:
> > > Are you objecting to the use of a SB_* flag, or just to showing the flag in
> > > show_sb_opts() instead of in the individual filesystems? Note that the SB_*
> > > flag was requested by Christoph
> > > (https://lkml.kernel.org/r/20191031183217.GF23601@infradead.org/,
> > > https://lkml.kernel.org/r/20191031212103.GA6244@infradead.org/). We originally
> > > used a function fscrypt_operations::inline_crypt_enabled() instead.
> >
> > I'm objecting to the layering violations of having the filesystem
> > control the mount option parsing and superblock feature flags, but
> > then having no control over whether features that the filesystem has
> > indicated to the VFS it is using get emitted as a mount option or
> > not, and then having the VFS code unconditionally override the
> > functionality that the filesystem uses because it thinks it's a
> > mount option the filesystem supports....
> >
> > For example, the current mess that has just come to light:
> > filesystems like btrfs and XFS v5 which set SB_IVERSION
> > unconditionally (i.e. it's not a mount option!) end up having that
> > functionality turned off on remount because the VFS conflates
> > MS_IVERSION with SB_IVERSION and so unconditionally clears
> > SB_IVERSION because MS_IVERSION is not set on remount by userspace.
> > Which userspace will never set be because the filesystems don't put
> > "iversion" in their mount option strings because -its not a mount
> > option- for those filesystems.
> >
> > See the problem? MS_IVERSION should be passed to the filesystem to
> > deal with as a mount option, not treated as a flag to directly
> > change SB_IVERSION in the superblock.
> >
> > We really need to stop with the "global mount options for everyone
> > at the VFS" and instead pass everything down to the filesystems to
> > parse appropriately. Yes, provide generic helper functions to deal
> > with the common flags that everything supports, but the filesystems
> > should be masking off mount options they doesn't support changing
> > before changing their superblock feature support mask....
>
> I think the MS_* flags are best saved for mount options that are applicable to
> many/most filesystems and are mostly/entirely implementable at the VFS level.
That's the theory, but so far it's caused nothing but pain.
In reality, I think ithe only sane way forward if to stop mount
option parsing in userspace (i.e. no new MS_* flags) for any new
functionality as it only leads to future pain. i.e. all new mount
options should be parsed entirely in the kernel by the filesystem
parsing code....
> I don't think "inlinecrypt" qualifies, since while it will be shared by the
> block device-based filesystems that support fscrypt, that is only 2 filesystems
> currently; and while some of the code needed to implement it is shared in
> fs/crypto/, there are still substantial filesystem-specific hooks needed.
Right. I wasn't suggesting this patchset should use an MS_ flag -
it was pointing out the problem with the VFS code using SB_ flags to
indicate enabled filesystem functionality unconditionally as a mount
option that can be changed by userspace.
> Hence this patchset intentionally does *not* allocate an MS_INLINECRYPT flag.
>
> I believe that already addresses half of your concern, as it means
> SB_INLINECRYPT can only be set/cleared by the filesystem itself, not by the VFS.
> (But the commit message could use an explanation of this.)
>
> The other half would be addressed by the following change, right?
Yes, it does. Thanks, Eric!
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
WARNING: multiple messages have this Message-ID (diff)
From: Dave Chinner <david@fromorbit.com>
To: Eric Biggers <ebiggers@kernel.org>
Cc: linux-fsdevel@vger.kernel.org,
Satya Tangirala <satyat@google.com>,
linux-fscrypt@vger.kernel.org, linux-ext4@vger.kernel.org,
linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [f2fs-dev] [PATCH 1/4] fs: introduce SB_INLINECRYPT
Date: Wed, 24 Jun 2020 10:55:09 +1000 [thread overview]
Message-ID: <20200624005509.GA5369@dread.disaster.area> (raw)
In-Reply-To: <20200623015017.GA844@sol.localdomain>
On Mon, Jun 22, 2020 at 06:50:17PM -0700, Eric Biggers wrote:
> On Tue, Jun 23, 2020 at 10:46:36AM +1000, Dave Chinner wrote:
> > On Wed, Jun 17, 2020 at 08:19:35PM -0700, Eric Biggers wrote:
> > > Are you objecting to the use of a SB_* flag, or just to showing the flag in
> > > show_sb_opts() instead of in the individual filesystems? Note that the SB_*
> > > flag was requested by Christoph
> > > (https://lkml.kernel.org/r/20191031183217.GF23601@infradead.org/,
> > > https://lkml.kernel.org/r/20191031212103.GA6244@infradead.org/). We originally
> > > used a function fscrypt_operations::inline_crypt_enabled() instead.
> >
> > I'm objecting to the layering violations of having the filesystem
> > control the mount option parsing and superblock feature flags, but
> > then having no control over whether features that the filesystem has
> > indicated to the VFS it is using get emitted as a mount option or
> > not, and then having the VFS code unconditionally override the
> > functionality that the filesystem uses because it thinks it's a
> > mount option the filesystem supports....
> >
> > For example, the current mess that has just come to light:
> > filesystems like btrfs and XFS v5 which set SB_IVERSION
> > unconditionally (i.e. it's not a mount option!) end up having that
> > functionality turned off on remount because the VFS conflates
> > MS_IVERSION with SB_IVERSION and so unconditionally clears
> > SB_IVERSION because MS_IVERSION is not set on remount by userspace.
> > Which userspace will never set be because the filesystems don't put
> > "iversion" in their mount option strings because -its not a mount
> > option- for those filesystems.
> >
> > See the problem? MS_IVERSION should be passed to the filesystem to
> > deal with as a mount option, not treated as a flag to directly
> > change SB_IVERSION in the superblock.
> >
> > We really need to stop with the "global mount options for everyone
> > at the VFS" and instead pass everything down to the filesystems to
> > parse appropriately. Yes, provide generic helper functions to deal
> > with the common flags that everything supports, but the filesystems
> > should be masking off mount options they doesn't support changing
> > before changing their superblock feature support mask....
>
> I think the MS_* flags are best saved for mount options that are applicable to
> many/most filesystems and are mostly/entirely implementable at the VFS level.
That's the theory, but so far it's caused nothing but pain.
In reality, I think ithe only sane way forward if to stop mount
option parsing in userspace (i.e. no new MS_* flags) for any new
functionality as it only leads to future pain. i.e. all new mount
options should be parsed entirely in the kernel by the filesystem
parsing code....
> I don't think "inlinecrypt" qualifies, since while it will be shared by the
> block device-based filesystems that support fscrypt, that is only 2 filesystems
> currently; and while some of the code needed to implement it is shared in
> fs/crypto/, there are still substantial filesystem-specific hooks needed.
Right. I wasn't suggesting this patchset should use an MS_ flag -
it was pointing out the problem with the VFS code using SB_ flags to
indicate enabled filesystem functionality unconditionally as a mount
option that can be changed by userspace.
> Hence this patchset intentionally does *not* allocate an MS_INLINECRYPT flag.
>
> I believe that already addresses half of your concern, as it means
> SB_INLINECRYPT can only be set/cleared by the filesystem itself, not by the VFS.
> (But the commit message could use an explanation of this.)
>
> The other half would be addressed by the following change, right?
Yes, it does. Thanks, Eric!
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
next prev parent reply other threads:[~2020-06-24 0:55 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-17 7:57 [PATCH 0/4] Inline Encryption Support for fscrypt Satya Tangirala
2020-06-17 7:57 ` [f2fs-dev] " Satya Tangirala via Linux-f2fs-devel
2020-06-17 7:57 ` [PATCH 1/4] fs: introduce SB_INLINECRYPT Satya Tangirala
2020-06-17 7:57 ` [f2fs-dev] " Satya Tangirala via Linux-f2fs-devel
2020-06-17 17:46 ` Jaegeuk Kim
2020-06-17 17:46 ` [f2fs-dev] " Jaegeuk Kim
2020-06-18 1:19 ` Dave Chinner
2020-06-18 1:19 ` [f2fs-dev] " Dave Chinner
2020-06-18 3:19 ` Eric Biggers
2020-06-18 3:19 ` [f2fs-dev] " Eric Biggers
2020-06-23 0:46 ` Dave Chinner
2020-06-23 0:46 ` [f2fs-dev] " Dave Chinner
2020-06-23 1:50 ` Eric Biggers
2020-06-23 1:50 ` Eric Biggers
2020-06-24 0:55 ` Dave Chinner [this message]
2020-06-24 0:55 ` Dave Chinner
2020-06-17 7:57 ` [PATCH 2/4] fscrypt: add inline encryption support Satya Tangirala
2020-06-17 7:57 ` [f2fs-dev] " Satya Tangirala via Linux-f2fs-devel
2020-06-17 17:59 ` Jaegeuk Kim
2020-06-17 17:59 ` [f2fs-dev] " Jaegeuk Kim
2020-06-18 17:48 ` Eric Biggers
2020-06-18 17:48 ` [f2fs-dev] " Eric Biggers
2020-06-17 7:57 ` [PATCH 3/4] f2fs: " Satya Tangirala
2020-06-17 7:57 ` [f2fs-dev] " Satya Tangirala via Linux-f2fs-devel
2020-06-17 17:56 ` Jaegeuk Kim
2020-06-17 17:56 ` [f2fs-dev] " Jaegeuk Kim
2020-06-18 10:06 ` Chao Yu
2020-06-18 10:06 ` [f2fs-dev] " Chao Yu
2020-06-18 18:13 ` Eric Biggers
2020-06-18 18:13 ` [f2fs-dev] " Eric Biggers
2020-06-18 19:28 ` Jaegeuk Kim
2020-06-18 19:28 ` [f2fs-dev] " Jaegeuk Kim
2020-06-18 19:35 ` Eric Biggers
2020-06-18 19:35 ` [f2fs-dev] " Eric Biggers
2020-06-19 2:43 ` Chao Yu
2020-06-19 2:43 ` [f2fs-dev] " Chao Yu
2020-06-19 2:39 ` Chao Yu
2020-06-19 2:39 ` [f2fs-dev] " Chao Yu
2020-06-19 4:20 ` Eric Biggers
2020-06-19 4:20 ` [f2fs-dev] " Eric Biggers
2020-06-19 6:37 ` Chao Yu
2020-06-19 6:37 ` [f2fs-dev] " Chao Yu
2020-06-18 22:50 ` Eric Biggers
2020-06-18 22:50 ` [f2fs-dev] " Eric Biggers
2020-06-17 7:57 ` [PATCH 4/4] ext4: " Satya Tangirala
2020-06-17 7:57 ` [f2fs-dev] " Satya Tangirala via Linux-f2fs-devel
2020-06-18 17:27 ` [PATCH 0/4] Inline Encryption Support for fscrypt Eric Biggers
2020-06-18 17:27 ` [f2fs-dev] " Eric Biggers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200624005509.GA5369@dread.disaster.area \
--to=david@fromorbit.com \
--cc=ebiggers@kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-fscrypt@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=satyat@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.