Re: [PATCH] autofs: make autofs4 and autofs mutually exclusive

From: Ian Kent
Date: Thu May 31 2018 - 21:36:04 EST


On Thu, 2018-05-31 at 17:13 -0700, Andrew Morton wrote:
> On Wed, 30 May 2018 17:18:55 +0800 Ian Kent <raven@xxxxxxxxxx> wrote:
>
> > > I actually had an alternative approach that I tried out successfully
> > > but discarded as being too different from the original code. Just for
> > > reference, this one would work as well, and allow both to be
> > > compiled together. The version you posted is probably better.
> >
> > It's an attractive option but the problem is both implement the
> > autofs file system.
> >
> > I've always thought you can't register the same file system at the
> > same time from two distinct sources.
> >
> > If you're careful and compile each only as a module you could do it.
> >
> > But many configurations have autofs compiled built-in because of the
> > auto-loading problems that arose back when there was an autofs fs
> > module as well as an autofs fs module present in the autofs4 directory.
> >
> > Maybe it would actually work with one winning over the other but
> > I'd prefer not to go that way.
> >
> > It will be gone in two subsequent releases if it gets merged and no
> > changes to the retained code will be needed with this approach.
>
> I'm losing the plot here. Can you please confirm that this is the
> patch we want?

Understandable.

This wasn't quite what I did and at the risk of confusing matters
further I'll try and explain what I did and why.

I folded the change into the patch which created fs/autofs/Kconfig
(autofs-create-autofs-kconfig-and-makefile.patch).

However doing what you're doing here should have the same effect as
long as Kbuild is smart enough to work out that
"depends on AUTOFS_FS = n" doesn't apply when fs/autofs/Kconfig hasn't
yet been created (by autofs-create-autofs-kconfig-and-makefile.patch).

The problem is that AUTOFS_FS=y might be still be present in .config
(surviving after many years) causing the bisection problem.

That's why I thought it best to add the depends in fs/autofs4/Kconfig
at the time fs/autofs/Kconfig is created rather than before that in
autofs-update-fs-autofs4-makefile.patch, as is done here.

Let me check if Kbuild will do the right thing and get back to you.

>
>
> From: Ian Kent <raven@xxxxxxxxxx>
> Subject: autofs: update fs/autofs4/Kconfig
>
> Update Kconfig and add a depricated warning.
>
> [raven@xxxxxxxxxx: make autofs4 Kconfig depend on AUTOFS_FS]
> Link: http://lkml.kernel.org/r/152687649097.8263.7046086367407522029.stgit@p
> luto.themaw.net
> Link: http://lkml.kernel.org/r/152626706133.28589.11994171621899212952.stgit@p
> luto.themaw.net
> Signed-off-by: Ian Kent <raven@xxxxxxxxxx>
> Tested-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
> Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
> Cc: Arnd Bergmann <arnd@xxxxxxxx>
> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> ---
>
> fs/autofs4/Kconfig | 42 +++++++++++++++++++++++++++++++-----------
> 1 file changed, 31 insertions(+), 11 deletions(-)
>
> diff -puN fs/autofs4/Kconfig~autofs-update-fs-autofs4-kconfig
> fs/autofs4/Kconfig
> --- a/fs/autofs4/Kconfig~autofs-update-fs-autofs4-kconfig
> +++ a/fs/autofs4/Kconfig
> @@ -1,5 +1,7 @@
> config AUTOFS4_FS
> - tristate "Kernel automounter version 4 support (also supports v3)"
> + tristate "Kernel automounter version 4 support (also supports v3 and
> v5)"
> + default n
> + depends on AUTOFS_FS = n
> help
> The automounter is a tool to automatically mount remote file
> systems
> on demand. This implementation is partially kernel-based to reduce
> @@ -7,14 +9,32 @@ config AUTOFS4_FS
> automounter (amd), which is a pure user space daemon.
>
> To use the automounter you need the user-space tools from
> - <https://www.kernel.org/pub/linux/daemons/autofs/v4/>; you also
> - want to answer Y to "NFS file system support", below.
> + <https://www.kernel.org/pub/linux/daemons/autofs/>; you also want
> + to answer Y to "NFS file system support", below.
>
> - To compile this support as a module, choose M here: the module will
> be
> - called autofs4. You will need to add "alias autofs autofs4" to
> your
> - modules configuration file.
> -
> - If you are not a part of a fairly large, distributed network or
> - don't have a laptop which needs to dynamically reconfigure to the
> - local network, you probably do not need an automounter, and can say
> - N here.
> + This module is in the process of being renamed from autofs4 to
> + autofs. Since autofs is now the only module that provides the
> + autofs file system the module is not version 4 specific.
> +
> + The autofs4 module is now built from the source located in
> + fs/autofs. The autofs4 directory and its configuration entry
> + will be removed two kernel versions from the inclusion of this
> + change.
> +
> + Changes that will need to be made should be limited to:
> + - source include statments should be changed from autofs_fs4.h to
> + autofs_fs.h since these two header files have been merged.
> + - user space scripts that manually load autofs4.ko should be
> + changed to load autofs.ko. But since the module directory name
> + and the module name are the same as the file system name there
> + is no need to manually load module.
> + - any "alias autofs autofs4" will need to be removed.
> +
> + Please configure AUTOFS_FS instead of AUTOFS4_FS from now on.
> +
> + NOTE: Since the modules autofs and autofs4 use the same file system
> + type name of "autofs" only one can be built. The "depends"
> + above will result in AUTOFS4_FS not appearing in .config for
> + any setting of AUTOFS_FS other than n and AUTOFS4_FS will
> + appear under the AUTOFS_FS entry otherwise which is intended
> + to draw attention to the module rename change.
> _
>