diff --git a/net-fs/autofs/Manifest b/net-fs/autofs/Manifest
index b42b207..503d31c 100644
--- a/net-fs/autofs/Manifest
+++ b/net-fs/autofs/Manifest
@@ -1 +1,3 @@
-DIST autofs-5.1.4.tar.xz 304864 BLAKE2B 7348aa1106554eb765919c765c0585b5d975d7a0ea036dec5b509711bf33cefd0f3e1e857a6865434adabbd1e323cfe8ffb09eb234495672e81101f79b8f4d0f SHA512 1ef48800a1e44d6bf7048923109f3b8299ef266ff0fbaf5f979c32f42c6c5e28620c1876f64b9d913fddb69244ff83226c01c666401ff6271dd6b53d31860589
+DIST autofs-5.1.6.tar.xz 315316 BLAKE2B 0c5e2351462505c6de0b12e510f0c08a625a0235e1ff8eeaff825946c4530c258449d26aaf6a3794aa82a97e8860711226168f434dd31bfb8a4e70287beb3ca4 SHA512 dc8b2bd86c140905dd1bc461bfc469f92363d9c2687fe422e1e751cc7ad64c0733b011c80bf4840e510e5909176cd1a066968b9a5ba835b62c4cf27537863cf2
+DIST autofs-5.1.8-patches-0.tar.xz 3476 BLAKE2B a7fb146542f9cb0a8e93240d9c3f68ff7b569f4dc0e829103ae67ced6d04e110331d320ff429f6e6af03b7265a068ee648738691cd637080cf976f441fe10444 SHA512 73023735bf269e3214e38a4841b6b3a1edff30e5d925a62d3ca9e841726835793c1e242804233e696e946e63720f522ceeb82f78449d3597d3d39b727f4b8d24
+DIST autofs-5.1.8.tar.xz 327396 BLAKE2B 22ef626cc867c1ed4f1f859aebe2547c497c35dea712967de70158e85db590f5ffc26165e1479cfc64eb8070a9c43fd06b1570a82bd8bbbac70f2930e1841718 SHA512 6ee6283c0977c82848a654dc24745ee687f6916de441c3688fa91f67ca7295e632ee3808cc2358984a4b9f19841e6e1a91ab48aad6341ac8e63827fe8c32d223
diff --git a/net-fs/autofs/autofs-5.1.4-r1.ebuild b/net-fs/autofs/autofs-5.1.4-r1.ebuild
deleted file mode 120000
index 865b8e5..0000000
--- a/net-fs/autofs/autofs-5.1.4-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-autofs-5.1.4.ebuild
\ No newline at end of file
diff --git a/net-fs/autofs/autofs-5.1.4.ebuild b/net-fs/autofs/autofs-5.1.4.ebuild
deleted file mode 100644
index 6a156e4..0000000
--- a/net-fs/autofs/autofs-5.1.4.ebuild
+++ /dev/null
@@ -1,114 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-inherit linux-info multilib systemd toolchain-funcs
-
-PATCH_VER=
-[[ -n ${PATCH_VER} ]] && \
-	PATCHSET_URI="https://dev.gentoo.org/~jlec/distfiles/${P}-patches-${PATCH_VER}.tar.lzma"
-
-DESCRIPTION="Kernel based automounter"
-HOMEPAGE="http://www.linux-consulting.com/Amd_AutoFS/autofs.html"
-SRC_URI="
-	mirror://kernel/linux/daemons/${PN}/v5/${P}.tar.xz
-	${PATCHSET_URI}"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="-dmalloc ldap +libtirpc mount-locking sasl"
-
-# USE="sasl" adds SASL support to the LDAP module which will not be build. If
-# SASL support should be available, please add "ldap" to the USE flags.
-REQUIRED_USE="sasl? ( ldap )"
-
-# currently, sasl code assumes the presence of kerberosV
-RDEPEND=">=sys-apps/util-linux-2.20
-	dmalloc? ( dev-libs/dmalloc[threads] )
-	ldap? ( >=net-nds/openldap-2.0
-		sasl? (
-			dev-libs/cyrus-sasl
-			dev-libs/libxml2
-			virtual/krb5
-		)
-	)
-	libtirpc? ( net-libs/libtirpc )
-	!libtirpc? ( elibc_glibc? ( sys-libs/glibc[rpc(-)] ) )
-"
-DEPEND="${RDEPEND}
-	sys-devel/flex
-	virtual/yacc
-	libtirpc? ( net-libs/rpcsvc-proto )
-"
-
-CONFIG_CHECK="~AUTOFS4_FS"
-
-src_prepare() {
-	# Upstream's patchset
-	if [[ -n ${PATCH_VER} ]]; then
-		EPATCH_SUFFIX="patch" \
-			epatch "${WORKDIR}"/patches
-	fi
-
-	sed -i -e "s:/usr/bin/kill:/bin/kill:" samples/autofs.service.in || die #bug #479492
-	default
-}
-
-src_configure() {
-	# bug #483716
-	tc-export AR
-	# --with-confdir is for bug #361481
-	# --with-mapdir is for bug #385113
-	local myeconfargs=(
-		--with-confdir=/etc/conf.d
-		--with-mapdir=/etc/autofs
-		$(use_with dmalloc)
-		$(use_with ldap openldap)
-		$(use_with libtirpc)
-		$(use_with sasl)
-		$(use_enable mount-locking)
-		--without-hesiod
-		--disable-ext-env
-		--enable-sloppy-mount # bug #453778
-		--enable-force-shutdown
-		--enable-ignore-busy
-		--with-systemd="$(systemd_get_systemunitdir)" #bug #479492
-		RANLIB="$(type -P $(tc-getRANLIB))" # bug #483716
-	)
-	econf "${myeconfargs[@]}"
-}
-
-src_compile() {
-	export DONTSTRIP=1
-	default
-}
-
-src_install() {
-	default
-
-	if kernel_is -lt 2 6 30; then
-		# kernel patches
-		docinto patches
-		dodoc patches/${PN}4-2.6.??{,.?{,?}}-v5-update-????????.patch
-	fi
-	newinitd "${FILESDIR}"/autofs5.initd autofs
-	insinto etc/autofs
-	newins "${FILESDIR}"/autofs5-auto.master auto.master
-}
-
-pkg_postinst() {
-	if kernel_is -lt 2 6 30; then
-		elog "This version of ${PN} requires a kernel with autofs4 supporting"
-		elog "protocol version 5.00. Patches for kernels older than 2.6.30 have"
-		elog "been installed into"
-		elog "${EROOT}usr/share/doc/${P}/patches."
-		elog "For further instructions how to patch the kernel, please refer to"
-		elog "${EROOT}usr/share/doc/${P}/INSTALL."
-		elog
-	fi
-	elog "If you plan on using autofs for automounting remote NFS mounts,"
-	elog "please check that both portmap (or rpcbind) and rpc.statd/lockd"
-	elog "are running."
-}
diff --git a/net-fs/autofs/autofs-5.1.8-r1.ebuild b/net-fs/autofs/autofs-5.1.8-r1.ebuild
new file mode 100644
index 0000000..5e3be6b
--- /dev/null
+++ b/net-fs/autofs/autofs-5.1.8-r1.ebuild
@@ -0,0 +1,131 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit linux-info systemd toolchain-funcs
+
+DESCRIPTION="Kernel based automounter"
+HOMEPAGE="https://web.archive.org/web/*/http://www.linux-consulting.com/Amd_AutoFS/autofs.html https://git.kernel.org/pub/scm/linux/storage/autofs/autofs.git"
+SRC_URI="https://www.kernel.org/pub/linux/daemons/${PN}/v5/${P}.tar.xz
+	https://dev.gentoo.org/~dlan/distfiles/${CATEGORY}/${PN}/${P}-patches-0.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="dmalloc ldap +libtirpc mount-locking sasl systemd"
+
+# currently, sasl code assumes the presence of kerberosV
+RDEPEND="
+	net-libs/libnsl:=
+	>=sys-apps/util-linux-2.20
+	dmalloc? ( dev-libs/dmalloc[threads] )
+	ldap? (
+		>=net-nds/openldap-2.0:=
+		sasl? (
+			dev-libs/cyrus-sasl
+			dev-libs/libxml2
+			virtual/krb5
+		)
+	)
+	systemd? ( sys-apps/systemd )
+	libtirpc? ( net-libs/libtirpc:= )
+	!libtirpc? ( elibc_glibc? ( sys-libs/glibc[rpc(-)] ) )
+"
+DEPEND="${RDEPEND}
+	libtirpc? ( net-libs/rpcsvc-proto )
+"
+BDEPEND="
+	sys-devel/flex
+	virtual/pkgconfig
+	app-alternatives/yacc
+"
+
+PATCHES=(
+	"${WORKDIR}"/${P}-patches/
+	"${FILESDIR}/${P}-dmalloc.patch"
+	"${FILESDIR}/${P}-nfsv4-mount.patch"
+	"${FILESDIR}/${P}-mount_conflict.patch"
+)
+
+pkg_setup() {
+	linux-info_pkg_setup
+
+	local CONFIG_CHECK
+
+	if kernel_is -ge 4 18; then
+		CONFIG_CHECK="~AUTOFS_FS"
+	else
+		CONFIG_CHECK="~AUTOFS4_FS"
+	fi
+
+	check_extra_config
+}
+
+src_prepare() {
+	sed -i	-e "s:/usr/bin/kill:/bin/kill:" samples/autofs.service.in || die # bug #479492
+	sed -i	-e "/^EnvironmentFile/d"        samples/autofs.service.in || die # bug #592334
+
+	# Install samples including autofs.service
+	sed -i -e "/^SUBDIRS/s/$/ samples/g" Makefile.rules || die
+
+	default
+}
+
+src_configure() {
+	# bug #483716
+	tc-export AR
+	# --with-confdir is for bug #361481
+	# --with-mapdir is for bug #385113
+	local myeconfargs=(
+		--with-confdir=/etc/conf.d
+		--with-mapdir=/etc/autofs
+		$(use_with dmalloc)
+		$(use_with ldap openldap)
+		$(use_with libtirpc)
+		$(use_with sasl)
+		$(use_enable mount-locking)
+		$(use_with systemd systemd $(systemd_get_systemunitdir)) # bug #479492
+		--without-hesiod
+		--disable-ext-env
+		--enable-sloppy-mount # bug #453778
+		--enable-force-shutdown
+		--enable-ignore-busy
+		RANLIB="$(type -P $(tc-getRANLIB))" # bug #483716
+	)
+
+	CONFIG_SHELL="${BROOT}/bin/bash" econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+	emake STRIP=: DONTSTRIP=1
+}
+
+src_install() {
+	default
+	rmdir "${D}"/run
+
+	if kernel_is -lt 2 6 30; then
+		# kernel patches
+		docinto patches
+		dodoc patches/${PN}4-2.6.??{,.?{,?}}-v5-update-????????.patch
+	fi
+	newinitd "${FILESDIR}"/autofs5.initd autofs
+	insinto etc/autofs
+	newins "${FILESDIR}"/autofs5-auto.master auto.master
+}
+
+pkg_postinst() {
+	if kernel_is -lt 2 6 30; then
+		elog "This version of ${PN} requires a kernel with autofs4 supporting"
+		elog "protocol version 5.00. Patches for kernels older than 2.6.30 have"
+		elog "been installed into"
+		elog "${EROOT}/usr/share/doc/${P}/patches."
+		elog "For further instructions how to patch the kernel, please refer to"
+		elog "${EROOT}/usr/share/doc/${P}/INSTALL."
+		elog
+	fi
+	elog "If you plan on using autofs for automounting remote NFS mounts,"
+	elog "please check that both portmap (or rpcbind) and rpc.statd/lockd"
+	elog "are running."
+}
diff --git a/net-fs/autofs/files/autofs-5.1.6-glibc.patch b/net-fs/autofs/files/autofs-5.1.6-glibc.patch
new file mode 100644
index 0000000..338d885
--- /dev/null
+++ b/net-fs/autofs/files/autofs-5.1.6-glibc.patch
@@ -0,0 +1,110 @@
+diff --git a/daemon/lookup.c b/daemon/lookup.c
+index 60a48f3..bbd65e0 100644
+--- a/daemon/lookup.c
++++ b/daemon/lookup.c
+@@ -382,7 +382,7 @@ static int read_file_source_instance(struct autofs_point *ap, struct map_source
+ 	if (!S_ISREG(st.st_mode))
+ 		return NSS_STATUS_NOTFOUND;
+ 
+-	if (st.st_mode & __S_IEXEC)
++	if (st.st_mode & S_IEXEC)
+ 		type = src_prog;
+ 	else
+ 		type = src_file;
+@@ -937,7 +937,7 @@ static int lookup_name_file_source_instance(struct autofs_point *ap, struct map_
+ 	if (!S_ISREG(st.st_mode))
+ 		return NSS_STATUS_NOTFOUND;
+ 
+-	if (st.st_mode & __S_IEXEC)
++	if (st.st_mode & S_IEXEC)
+ 		type = src_prog;
+ 	else
+ 		type = src_file;
+@@ -1113,7 +1113,7 @@ static struct map_source *lookup_get_map_source(struct master_mapent *entry)
+ 	if (!S_ISREG(st.st_mode))
+ 		return NULL;
+ 
+-	if (st.st_mode & __S_IEXEC)
++	if (st.st_mode & S_IEXEC)
+ 		type = "program";
+ 	else
+ 		type = "file";
+diff --git a/include/automount.h b/include/automount.h
+index 4fd0ba9..7b855a7 100644
+--- a/include/automount.h
++++ b/include/automount.h
+@@ -13,6 +13,7 @@
+ #include <limits.h>
+ #include <time.h>
+ #include <syslog.h>
++#include <sys/procfs.h>
+ #include <sys/types.h>
+ #include <pthread.h>
+ #include <sched.h>
+@@ -142,6 +143,16 @@ struct autofs_point;
+ #define UMOUNT_RETRIES		8
+ #define EXPIRE_RETRIES		3
+ 
++#ifndef __SWORD_TYPE
++#if __WORDSIZE == 32
++# define __SWORD_TYPE		int
++#elif __WORDSIZE == 64
++# define __SWORD_TYPE		long int
++#else
++#error
++#endif
++#endif
++
+ static u_int32_t inline hash(const char *key, unsigned int size)
+ {
+ 	u_int32_t hashval;
+diff --git a/include/nsswitch.h b/include/nsswitch.h
+index d3e4027..8376113 100644
+--- a/include/nsswitch.h
++++ b/include/nsswitch.h
+@@ -24,6 +24,10 @@
+ #include <netdb.h>
+ #include "list.h"
+ 
++#ifndef _PATH_NSSWITCH_CONF
++#define _PATH_NSSWITCH_CONF "/dev/null"
++#endif
++
+ #define NSSWITCH_FILE _PATH_NSSWITCH_CONF
+ 
+ enum nsswitch_status {
+diff --git a/include/rpc_subs.h b/include/rpc_subs.h
+index 6e35eed..7ba4b93 100644
+--- a/include/rpc_subs.h
++++ b/include/rpc_subs.h
+@@ -18,7 +18,7 @@
+ 
+ #include <rpc/rpc.h>
+ #include <rpc/pmap_prot.h>
+-#include <nfs/nfs.h>
++#include <linux/nfs.h>
+ #include <linux/nfs2.h>
+ #include <linux/nfs3.h>
+ 
+diff --git a/modules/lookup_multi.c b/modules/lookup_multi.c
+index fadd2ea..cf109de 100644
+--- a/modules/lookup_multi.c
++++ b/modules/lookup_multi.c
+@@ -247,7 +247,7 @@ static struct lookup_mod *nss_open_lookup(const char *format, int argc, const ch
+ 				continue;
+ 			}
+ 
+-			if (st.st_mode & __S_IEXEC)
++			if (st.st_mode & S_IEXEC)
+ 				type = src_prog;
+ 			else
+ 				type = src_file;
+@@ -452,7 +452,7 @@ int lookup_reinit(const char *my_mapfmt,
+ 					continue;
+ 				}
+ 
+-				if (st.st_mode & __S_IEXEC)
++				if (st.st_mode & S_IEXEC)
+ 					type = src_prog;
+ 				else
+ 					type = src_file;
diff --git a/net-fs/autofs/files/autofs-5.1.6-musl.patch b/net-fs/autofs/files/autofs-5.1.6-musl.patch
new file mode 100644
index 0000000..bdcc0db
--- /dev/null
+++ b/net-fs/autofs/files/autofs-5.1.6-musl.patch
@@ -0,0 +1,12 @@
+--- a/include/automount.h
++++ b/include/automount.h
+@@ -25,6 +25,9 @@
+ #include "list.h"
+ 
+ #include <linux/auto_fs4.h>
++#ifndef __GLIBC__
++#include <bits/reg.h>
++#endif
+ 
+ #include "defaults.h"
+ #include "state.h"
diff --git a/net-fs/autofs/files/autofs-5.1.6-pid.patch b/net-fs/autofs/files/autofs-5.1.6-pid.patch
new file mode 100644
index 0000000..1766c34
--- /dev/null
+++ b/net-fs/autofs/files/autofs-5.1.6-pid.patch
@@ -0,0 +1,14 @@
+diff --git a/include/log.h b/include/log.h
+index 69eed96..14051cc 100644
+--- a/include/log.h
++++ b/include/log.h
+@@ -46,6 +46,8 @@ extern void log_crit(unsigned, const char* msg, ...);
+ extern void log_debug(unsigned int, const char* msg, ...);
+ extern void logmsg(const char* msg, ...);
+ 
++#include <unistd.h> /* Required for pid_t */
++
+ extern pid_t log_pidinfo(struct autofs_point *ap, pid_t pid, char *label);
+ 
+ #define debug(opt, msg, args...)	\
+
diff --git a/net-fs/autofs/files/autofs-5.1.8-dmalloc.patch b/net-fs/autofs/files/autofs-5.1.8-dmalloc.patch
new file mode 100644
index 0000000..e2ed58f
--- /dev/null
+++ b/net-fs/autofs/files/autofs-5.1.8-dmalloc.patch
@@ -0,0 +1,53 @@
+diff --git a/include/mounts.h b/include/mounts.h
+index ddb7e4c..854e1fb 100644
+--- a/include/mounts.h
++++ b/include/mounts.h
+@@ -84,7 +84,7 @@ typedef void (*tree_free_t) (struct tree_node *n);
+ struct tree_ops {
+ 	tree_new_t new;
+ 	tree_cmp_t cmp;
+-	tree_free_t free;
++	tree_free_t set_free;
+ };
+ 
+ typedef int (*tree_work_fn_t) (struct tree_node *n, void *ptr);
+diff --git a/lib/mounts.c b/lib/mounts.c
+index 4c86688..1e54a33 100644
+--- a/lib/mounts.c
++++ b/lib/mounts.c
+@@ -75,7 +75,7 @@ static void tree_mnt_free(struct tree_node *n);
+ static struct tree_ops mnt_ops = {
+ 	.new = tree_mnt_new,
+ 	.cmp = tree_mnt_cmp,
+-	.free = tree_mnt_free,
++	.set_free = tree_mnt_free,
+ };
+ static struct tree_ops *tree_mnt_ops = &mnt_ops;
+ 
+@@ -86,7 +86,7 @@ static void tree_host_free(struct tree_node *n);
+ static struct tree_ops host_ops = {
+ 	.new = tree_host_new,
+ 	.cmp = tree_host_cmp,
+-	.free = tree_host_free,
++	.set_free = tree_host_free,
+ };
+ static struct tree_ops *tree_host_ops = &host_ops;
+ 
+@@ -97,7 +97,7 @@ static void tree_mapent_free(struct tree_node *n);
+ static struct tree_ops mapent_ops = {
+ 	.new = tree_mapent_new,
+ 	.cmp = tree_mapent_cmp,
+-	.free = tree_mapent_free,
++	.set_free = tree_mapent_free,
+ };
+ static struct tree_ops *tree_mapent_ops = &mapent_ops;
+ 
+@@ -1360,7 +1360,7 @@ void tree_free(struct tree_node *root)
+ 		tree_free(root->right);
+ 	if (root->left)
+ 		tree_free(root->left);
+-	ops->free(root);
++	ops->set_free(root);
+ }
+ 
+ int tree_traverse_inorder(struct tree_node *n, tree_work_fn_t work, void *ptr)
diff --git a/net-fs/autofs/files/autofs-5.1.8-mount_conflict.patch b/net-fs/autofs/files/autofs-5.1.8-mount_conflict.patch
new file mode 100644
index 0000000..e2a94bf
--- /dev/null
+++ b/net-fs/autofs/files/autofs-5.1.8-mount_conflict.patch
@@ -0,0 +1,30 @@
+Avoid conflicts between sys/mount.h and linux/mount.h
+
+linux/fs.h includes linux/mount.h and this include file is unused so
+do not include it and avoid conflict too with glibc 2.36+ see [1]
+
+[1] https://sourceware.org/glibc/wiki/Release/2.36#Usage_of_.3Clinux.2Fmount.h.3E_and_.3Csys.2Fmount.h.3E
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/modules/parse_amd.c
++++ b/modules/parse_amd.c
+@@ -27,7 +27,6 @@
+ #include <sys/utsname.h>
+ #include <netinet/in.h>
+ #include <sys/mount.h>
+-#include <linux/fs.h>
+ 
+ #define MODULE_PARSE
+ #include "automount.h"
+--- a/modules/parse_sun.c
++++ b/modules/parse_sun.c
+@@ -30,7 +30,6 @@
+ #include <sys/utsname.h>
+ #include <netinet/in.h>
+ #include <sys/mount.h>
+-#include <linux/fs.h>
+ 
+ #define MODULE_PARSE
+ #include "automount.h"
diff --git a/net-fs/autofs/files/autofs-5.1.8-nfsv4-mount.patch b/net-fs/autofs/files/autofs-5.1.8-nfsv4-mount.patch
new file mode 100644
index 0000000..eb1bc6c
--- /dev/null
+++ b/net-fs/autofs/files/autofs-5.1.8-nfsv4-mount.patch
@@ -0,0 +1,88 @@
+autofs-5.1.8 - fix nfsv4 only mounts should not use rpcbind
+
+From: Ian Kent <raven@xxxxxxxxxx>
+
+Commit 606795ecfaa1 ("autofs-5.1.7 - also require TCP_REQUESTED when
+setting NFS port" together with commit 26fb6b5408be) caused NFSv4 only
+mounts to also use rpcbind to probe availability which breaks the
+requirememt that this type of mount not use rpcbind at all.
+
+Fix this by treating fstype=nfs4 mounts as a special case which doesn't
+use rpcbind.
+---
+ CHANGELOG            |    1 +
+ include/replicated.h |    2 ++
+ modules/mount_nfs.c  |   13 +++++++------
+ modules/replicated.c |    4 ++--
+ 4 files changed, 12 insertions(+), 8 deletions(-)
+
+diff --git a/include/replicated.h b/include/replicated.h
+index 95ff1f0d..f889a56a 100644
+--- a/include/replicated.h
++++ b/include/replicated.h
+@@ -35,6 +35,8 @@
+ #define NFS3_REQUESTED		NFS3_SUPPORTED
+ #define NFS4_REQUESTED		NFS4_SUPPORTED
+ 
++#define NFS4_ONLY_REQUESTED	0x0800
++
+ #define TCP_SUPPORTED		0x0001
+ #define UDP_SUPPORTED		0x0002
+ #define TCP_REQUESTED		TCP_SUPPORTED
+diff --git a/modules/mount_nfs.c b/modules/mount_nfs.c
+index 0ab87dcf..feb5afcd 100644
+--- a/modules/mount_nfs.c
++++ b/modules/mount_nfs.c
+@@ -92,7 +92,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
+ 	mount_default_proto = defaults_get_mount_nfs_default_proto();
+ 	vers = NFS_VERS_DEFAULT | NFS_PROTO_DEFAULT;
+ 	if (strcmp(fstype, "nfs4") == 0)
+-		vers = NFS4_VERS_DEFAULT | TCP_SUPPORTED;
++		vers = NFS4_VERS_DEFAULT | TCP_SUPPORTED | NFS4_ONLY_REQUESTED;
+ 	else if (mount_default_proto == 4)
+ 		vers = vers | NFS4_VERS_DEFAULT;
+ 
+@@ -157,15 +157,16 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
+ 			} else {
+ 				/* Is any version of NFSv4 in the options */
+ 				if (_strncmp("vers=4", cp, 6) == 0 ||
+-				    _strncmp("nfsvers=4", cp, 9) == 0)
+-					vers = NFS4_VERS_MASK | TCP_SUPPORTED;
+-				else if (_strncmp("vers=3", cp, o_len) == 0 ||
++				    _strncmp("nfsvers=4", cp, 9) == 0) {
++					vers &= ~(NFS_VERS_MASK);
++					vers |= NFS4_VERS_MASK | TCP_SUPPORTED | NFS4_ONLY_REQUESTED;
++				} else if (_strncmp("vers=3", cp, o_len) == 0 ||
+ 					 _strncmp("nfsvers=3", cp, o_len) == 0) {
+-					vers &= ~(NFS4_VERS_MASK | NFS_VERS_MASK);
++					vers &= ~(NFS4_VERS_MASK | NFS_VERS_MASK | NFS4_ONLY_REQUESTED);
+ 					vers |= NFS3_REQUESTED;
+ 				} else if (_strncmp("vers=2", cp, o_len) == 0 ||
+ 					 _strncmp("nfsvers=2", cp, o_len) == 0) {
+-					vers &= ~(NFS4_VERS_MASK | NFS_VERS_MASK);
++					vers &= ~(NFS4_VERS_MASK | NFS_VERS_MASK | NFS4_ONLY_REQUESTED);
+ 					vers |= NFS2_REQUESTED;
+ 				} else if (strstr(cp, "port=") == cp &&
+ 					 o_len - 5 < 25) {
+diff --git a/modules/replicated.c b/modules/replicated.c
+index 09075dd0..cdb7c617 100644
+--- a/modules/replicated.c
++++ b/modules/replicated.c
+@@ -291,7 +291,7 @@ static unsigned int get_nfs_info(unsigned logopt, struct host *host,
+ 
+ 	rpc_info->proto = proto;
+ 	if (port < 0) {
+-		if ((version & NFS4_REQUESTED) && (version & TCP_REQUESTED))
++		if (version & NFS4_REQUESTED && (version & NFS4_ONLY_REQUESTED))
+ 			rpc_info->port = NFS_PORT;
+ 		else
+ 			port = 0;
+@@ -525,7 +525,7 @@ static int get_vers_and_cost(unsigned logopt, struct host *host,
+ {
+ 	struct conn_info pm_info, rpc_info;
+ 	time_t timeout = RPC_TIMEOUT;
+-	unsigned int supported, vers = (NFS_VERS_MASK | NFS4_VERS_MASK);
++	unsigned int supported, vers = (NFS_VERS_MASK | NFS4_VERS_MASK | NFS4_ONLY_REQUESTED);
+ 	int ret = 0;
+ 
+ 	if (!check_address_proto(logopt, host, version))
diff --git a/net-fs/autofs/files/autofs5.initd b/net-fs/autofs/files/autofs5.initd
index 119585c..1b9b0fa 100644
--- a/net-fs/autofs/files/autofs5.initd
+++ b/net-fs/autofs/files/autofs5.initd
@@ -1,5 +1,5 @@
 #!/sbin/openrc-run
-# Copyright 1999-2011 Gentoo Foundation
+# Copyright 1999-2019 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 DAEMON=/usr/sbin/automount
@@ -8,7 +8,7 @@
 
 depend() {
 	need localmount	
-	use ypbind nfs slapd portmap net
+	use ypbind nfsclient slapd net
 }
 
 extra_started_commands="reload"
diff --git a/net-fs/autofs/metadata.xml b/net-fs/autofs/metadata.xml
index 01c0462..fac959b 100644
--- a/net-fs/autofs/metadata.xml
+++ b/net-fs/autofs/metadata.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
 <pkgmetadata>
 	<maintainer type="person">
 		<email>dlan@gentoo.org</email>
