On Wed, Oct 27, 2021 at 11:27 PM Lukas Czerner <lczerner@xxxxxxxxxx> 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. You can check it out on github as well. > > https://github.com/lczerner/xfstests/tree/ext4_mount_test > > 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@xxxxxxxxxx> > Reviewed-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx> > --- Is this the Git branch to pull from...? https://github.com/lczerner/linux/tree/ext4_mount_api_rebase https://github.com/lczerner/linux/commits/ext4_mount_api_rebase Any other requirements or recommendations other than "ext4: ext4 mount sanity test" (xfstests)? Thanks. - Sedat - > v3 -> v4: Fix some typos, print exact quotafile type in log messages. > Remove explicit "Ext4:" from some log messages > 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 | 1848 +++++++++++++++++++++++-------------- > fs/fs_parser.c | 31 +- > include/linux/fs_parser.h | 2 +- > 3 files changed, 1189 insertions(+), 692 deletions(-) > > -- > 2.31.1 >