ce3ce09113
to be disabled so only NFSv4 can be used. bnc#598671 - nfs-v2-disable.patch: mountd support for above - nfs.init: unmount bind mounts with '-l' to ensure they really unmount. bnc#598681 OBS-URL: https://build.opensuse.org/package/show/Base:System/nfs-utils?expand=0&rev=18
67 lines
2.0 KiB
Diff
67 lines
2.0 KiB
Diff
Subject: Allow mountd to not listen for RPC calls when v2/v3 disabled
|
|
References: 598671
|
|
|
|
Mountd listens on 2 different versions for NFSv2 (MOUNTv1 and MOUNTv2)
|
|
and one for NFSv3 (MOUNTv3)
|
|
|
|
When --no-nfs-version requests an NFS version to be disabled, the
|
|
code actually disabled the MOUNT version. This works is several cases,
|
|
but requires --no-nfs-version 1 to completely disable NFSv2, which
|
|
is wrong.
|
|
|
|
So if we do disable 1, 2, and 3. mountd complain and won't run, it
|
|
is not possible to run just v4 - i.e. not listening for MOUNT requests
|
|
at all (as v4 doesn't need them).
|
|
|
|
So change the handling of "--no-nfs-version 2" it disable MOUNTv1 as well as
|
|
MOUNTv2, and allow mountd to continue running as long as one of
|
|
NFSv2 NFSv3 NFSv4 is enabled.
|
|
|
|
Signed-off-by: NeilBrown <neilb@suse.de>
|
|
|
|
diff --git a/utils/mountd/mountd.c b/utils/mountd/mountd.c
|
|
index a0a1f2d..5373d81 100644
|
|
--- a/utils/mountd/mountd.c
|
|
+++ b/utils/mountd/mountd.c
|
|
@@ -80,10 +80,10 @@ static int nfs_version = -1;
|
|
static void
|
|
unregister_services (void)
|
|
{
|
|
- if (nfs_version & 0x1)
|
|
+ if (nfs_version & (0x1 << 1)) {
|
|
pmap_unset (MOUNTPROG, MOUNTVERS);
|
|
- if (nfs_version & (0x1 << 1))
|
|
pmap_unset (MOUNTPROG, MOUNTVERS_POSIX);
|
|
+ }
|
|
if (nfs_version & (0x1 << 2))
|
|
pmap_unset (MOUNTPROG, MOUNTVERS_NFSV3);
|
|
}
|
|
@@ -712,8 +712,10 @@ main(int argc, char **argv)
|
|
usage(argv [0], 1);
|
|
}
|
|
|
|
- /* No more arguments allowed. */
|
|
- if (optind != argc || !(nfs_version & 0x7))
|
|
+ /* No more arguments allowed.
|
|
+ * Require at least one valid version (2, 3, or 4)
|
|
+ */
|
|
+ if (optind != argc || !(nfs_version & 0xE))
|
|
usage(argv [0], 1);
|
|
|
|
if (chdir(state_dir)) {
|
|
@@ -761,12 +763,12 @@ main(int argc, char **argv)
|
|
if (new_cache)
|
|
cache_open();
|
|
|
|
- if (nfs_version & 0x1)
|
|
+ if (nfs_version & (0x1 << 1)) {
|
|
rpc_init("mountd", MOUNTPROG, MOUNTVERS,
|
|
mount_dispatch, port);
|
|
- if (nfs_version & (0x1 << 1))
|
|
rpc_init("mountd", MOUNTPROG, MOUNTVERS_POSIX,
|
|
mount_dispatch, port);
|
|
+ }
|
|
if (nfs_version & (0x1 << 2))
|
|
rpc_init("mountd", MOUNTPROG, MOUNTVERS_NFSV3,
|
|
mount_dispatch, port);
|