mbox series

[v3,00/13] ext4: new mount API conversion

Message ID 20211021114508.21407-1-lczerner@redhat.com (mailing list archive)
Headers show
Series ext4: new mount API conversion | expand

Message

Lukas Czerner Oct. 21, 2021, 11:44 a.m. UTC
After some time I am once again resurrecting the patchset to convert the
ext4 to use the new mount API
(Documentation/filesystems/mount_api.txt).

The series can be applied on top of the current mainline tree and the work
is based on the patches from David Howells (thank you David). It was built
and tested with xfstests and a new ext4 mount options regression test that
was sent to the fstests list.

https://www.spinics.net/lists/fstests/msg17756.html

Here is a high level description of the patchset

1. Prepare the ext4 mount parameters required by the new mount API and use
   it for parsing, while still using the old API to get the options
   string.

  fs_parse: allow parameter value to be empty
  ext4: Add fs parameter specifications for mount options
  ext4: move option validation to a separate function
  ext4: Change handle_mount_opt() to use fs_parameter

2. Remove the use of ext4 super block from all the parsing code, because
   with the new mount API the parsing is going to be done before we even
   get the super block.

  ext4: Allow sb to be NULL in ext4_msg()
  ext4: move quota configuration out of handle_mount_opt()
  ext4: check ext2/3 compatibility outside handle_mount_opt()
  ext4: get rid of super block and sbi from handle_mount_ops()

3. Actually finish the separation of the parsing and super block setup
   into distinct steps. This is where the new ext4_fill_super() and
   ext4_remount() functions are created temporarily before the actual
   transition to the new API.

  ext4: Completely separate options parsing and sb setup

4. Make some last preparations and actually switch the ext4 to use the
   new mount API.

  ext4: clean up return values in handle_mount_opt()
  ext4: change token2str() to use ext4_param_specs
  ext4: switch to the new mount api

5. Cleanup the old unused structures and rearrange the parsing function.

  ext4: Remove unused match_table_t tokens

There is still a potential to do some cleanups and perhaps refactoring
such as using the fsparam_flag_no to remove the separate negative
options for example. However that can be done later after the conversion
to the new mount API which is the main purpose of the patchset.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
---
V2 -> V3: Rebase to the newer kernel, including new mount options.
V1 -> V2: Rebase to the newer kernel

Lukas Czerner (13):
  fs_parse: allow parameter value to be empty
  ext4: Add fs parameter specifications for mount options
  ext4: move option validation to a separate function
  ext4: Change handle_mount_opt() to use fs_parameter
  ext4: Allow sb to be NULL in ext4_msg()
  ext4: move quota configuration out of handle_mount_opt()
  ext4: check ext2/3 compatibility outside handle_mount_opt()
  ext4: get rid of super block and sbi from handle_mount_ops()
  ext4: Completely separate options parsing and sb setup
  ext4: clean up return values in handle_mount_opt()
  ext4: change token2str() to use ext4_param_specs
  ext4: switch to the new mount api
  ext4: Remove unused match_table_t tokens

 fs/ext4/super.c           | 1846 +++++++++++++++++++++++--------------
 fs/fs_parser.c            |   31 +-
 include/linux/fs_parser.h |    2 +-
 3 files changed, 1187 insertions(+), 692 deletions(-)


base-commit: d9abdee5fd5abffd0e763e52fbfa3116de167822

Comments

Carlos Maiolino Oct. 26, 2021, 11:39 a.m. UTC | #1
On Thu, Oct 21, 2021 at 01:44:55PM +0200, Lukas Czerner wrote:
> After some time I am once again resurrecting the patchset to convert the
> ext4 to use the new mount API
> (Documentation/filesystems/mount_api.txt).
> 
> The series can be applied on top of the current mainline tree and the work
> is based on the patches from David Howells (thank you David). It was built
> and tested with xfstests and a new ext4 mount options regression test that
> was sent to the fstests list.
> 
> Lukas Czerner (13):
>   fs_parse: allow parameter value to be empty
>   ext4: Add fs parameter specifications for mount options
>   ext4: move option validation to a separate function
>   ext4: Change handle_mount_opt() to use fs_parameter
>   ext4: Allow sb to be NULL in ext4_msg()
>   ext4: move quota configuration out of handle_mount_opt()
>   ext4: check ext2/3 compatibility outside handle_mount_opt()
>   ext4: get rid of super block and sbi from handle_mount_ops()
>   ext4: Completely separate options parsing and sb setup
>   ext4: clean up return values in handle_mount_opt()
>   ext4: change token2str() to use ext4_param_specs
>   ext4: switch to the new mount api
>   ext4: Remove unused match_table_t tokens
> 

The patches seem ok. I can't review ext4 specific details as naming and code
style, but the logic applied to the patches are fine. There are a few typos in
some patches that I pointed, but the patches themselves are fine, so, feel free
to add:

Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>