Message ID | 20211027141857.33657-1-lczerner@redhat.com |
---|---|
Headers | show |
Series | ext4: new mount API conversion | expand |
On Wed, Oct 27, 2021 at 11:27 PM Lukas Czerner <lczerner@redhat.com> 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@redhat.com> > Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com> > --- 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 >
On Wed, Oct 27, 2021 at 11:39:42PM +0200, Sedat Dilek wrote: > On Wed, Oct 27, 2021 at 11:27 PM Lukas Czerner <lczerner@redhat.com> 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@redhat.com> > > Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com> > > --- > > 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 Hi, yes that's the branch. I just updated it with the v4 changes. > > Any other requirements or recommendations other than "ext4: ext4 mount > sanity test" (xfstests)? No special requirements I don't think. The xfstest patch is on the fstests list with subject "ext4: add test for all ext4/ext3/ext2 mount options", or you can checkout my github branch above. My testing involved said test, regular xfstests run as well as different ext4 kernel configuration (diabled quota, enabled debug and so on). In order to test the "dax" options then dax capable device is needed of course and the test shoud run that automatically with it. Thanks a lot testing! -Lukas > > 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 > > >
Hi Lukas, I'm starting to process ext4 patches for the next merge window, and I want to pull in the merge mount API conversions as one of the first patches into the dev tree. Should I use the v4 patch set or do you have a newer set of changes that you'd like me to use? There was a minor patch conflict in patch #2, but that was pretty simple to fix up. Thanks! - Ted
On Thu, Dec 09, 2021 at 02:17:11PM -0500, Theodore Y. Ts'o wrote: > Hi Lukas, > > I'm starting to process ext4 patches for the next merge window, and I > want to pull in the merge mount API conversions as one of the first > patches into the dev tree. Hi Ted, that's great, thanks. > > Should I use the v4 patch set or do you have a newer set of changes > that you'd like me to use? There was a minor patch conflict in patch > #2, but that was pretty simple to fix up. I don't have anything newer than this. I could rebase it if you'd like me to, but it sounds like you've already done that pretty easily? Thanks! -Lukas > > Thanks! > > - Ted >
On Thu, Dec 09, 2021 at 08:55:20PM +0100, Lukas Czerner wrote: > > > > Should I use the v4 patch set or do you have a newer set of changes > > that you'd like me to use? There was a minor patch conflict in patch > > #2, but that was pretty simple to fix up. > > I don't have anything newer than this. I could rebase it if you'd like > me to, but it sounds like you've already done that pretty easily? Yep, I've done that and have run tests against it (including ext4/053 to test ext2/3/4 mount options). I just haven't pushed it out pending your confirmation that the v4 patchset was the one I should use. Thanks! - Ted
On Wed, 27 Oct 2021 16:18:44 +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. You can check it out on github as well. > > [...] Applied, thanks! [01/13] fs_parse: allow parameter value to be empty commit: 6abfaaf124a81b7d2ab132cc2c9885baa14171e5 [02/13] ext4: Add fs parameter specifications for mount options commit: e5a185c26c11cbd1d386be8ee4c5e57b4f62273a [03/13] ext4: move option validation to a separate function commit: 4c94bff967d90e91ace38a9886c1c7777a9c6f91 [04/13] ext4: Change handle_mount_opt() to use fs_parameter commit: 461c3af045d3ab949360fedbfb3ea1dcd9d8b22b [05/13] ext4: Allow sb to be NULL in ext4_msg() commit: da812f611934bef16fe02d667a76df77ae9cf99a [06/13] ext4: move quota configuration out of handle_mount_opt() commit: e6e268cb682290da29e3c8408493a4474307b8cc [07/13] ext4: check ext2/3 compatibility outside handle_mount_opt() commit: b6bd243500b6024d92eaaacf592ed8588c2c75ea [08/13] ext4: get rid of super block and sbi from handle_mount_ops() commit: 6e47a3cc68fc525428297a00524833361ebbb0e9 [09/13] ext4: Completely separate options parsing and sb setup commit: 7edfd85b1ffd36593011dec96ab395912a340418 [10/13] ext4: clean up return values in handle_mount_opt() commit: 02f960f8db1cd0aa9c182f8804b2b41ffd2c37b2 [11/13] ext4: change token2str() to use ext4_param_specs commit: 97d8a670b4531437d5b842cf68dafa6d1a932ddf [12/13] ext4: switch to the new mount api commit: cebe85d570cf84804e848332d6721bc9e5300e07 [13/13] ext4: Remove unused match_table_t tokens commit: ba2e524d918ab72c0e5edc02354bd6cb43d005f8 Best regards,