From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id F18ED158086 for ; Wed, 22 Dec 2021 13:18:21 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id D19C42BC01D; Wed, 22 Dec 2021 13:18:20 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 5F50E2BC01D for ; Wed, 22 Dec 2021 13:18:18 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 1C10E342EF6 for ; Wed, 22 Dec 2021 13:18:15 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 89F22D0 for ; Wed, 22 Dec 2021 13:18:13 +0000 (UTC) From: "Yixun Lan" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Yixun Lan" Message-ID: <1640179072.f7586f437afc004fee03a1fdf586d6dd9b7db480.dlan@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: net-fs/autofs/, net-fs/autofs/files/ X-VCS-Repository: repo/gentoo X-VCS-Files: net-fs/autofs/autofs-5.1.8-r1.ebuild net-fs/autofs/autofs-5.1.8.ebuild net-fs/autofs/files/autofs-5.1.8-nfsv4-mount.patch X-VCS-Directories: net-fs/autofs/ net-fs/autofs/files/ X-VCS-Committer: dlan X-VCS-Committer-Name: Yixun Lan X-VCS-Revision: f7586f437afc004fee03a1fdf586d6dd9b7db480 X-VCS-Branch: master Date: Wed, 22 Dec 2021 13:18:13 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 9c776557-7292-4c45-a09b-42a6200b9657 X-Archives-Hash: ba4ffd1091fa5b719e8fbf66f8b62be9 commit: f7586f437afc004fee03a1fdf586d6dd9b7db480 Author: Yixun Lan gentoo org> AuthorDate: Wed Dec 22 13:15:58 2021 +0000 Commit: Yixun Lan gentoo org> CommitDate: Wed Dec 22 13:17:52 2021 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f7586f43 net-fs/autofs: fix nfsv4 mount issue Closes: https://bugs.gentoo.org/827239 Package-Manager: Portage-3.0.28, Repoman-3.0.3 Signed-off-by: Yixun Lan gentoo.org> ...{autofs-5.1.8.ebuild => autofs-5.1.8-r1.ebuild} | 1 + net-fs/autofs/files/autofs-5.1.8-nfsv4-mount.patch | 88 ++++++++++++++++++++++ 2 files changed, 89 insertions(+) diff --git a/net-fs/autofs/autofs-5.1.8.ebuild b/net-fs/autofs/autofs-5.1.8-r1.ebuild similarity index 98% rename from net-fs/autofs/autofs-5.1.8.ebuild rename to net-fs/autofs/autofs-5.1.8-r1.ebuild index 3c519f852c70..d8aa892b214a 100644 --- a/net-fs/autofs/autofs-5.1.8.ebuild +++ b/net-fs/autofs/autofs-5.1.8-r1.ebuild @@ -45,6 +45,7 @@ PATCHES=( "${FILESDIR}/${PN}-5.1.6-pid.patch" "${FILESDIR}/${PN}-5.1.6-pid.patch" "${FILESDIR}/${P}-dmalloc.patch" + "${FILESDIR}/${P}-nfsv4-mount.patch" ) pkg_setup() { 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 000000000000..eb1bc6cb4241 --- /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 + +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))