public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Yixun Lan" <dlan@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: net-fs/autofs/, net-fs/autofs/files/
Date: Wed, 22 Dec 2021 13:18:13 +0000 (UTC)	[thread overview]
Message-ID: <1640179072.f7586f437afc004fee03a1fdf586d6dd9b7db480.dlan@gentoo> (raw)

commit:     f7586f437afc004fee03a1fdf586d6dd9b7db480
Author:     Yixun Lan <dlan <AT> gentoo <DOT> org>
AuthorDate: Wed Dec 22 13:15:58 2021 +0000
Commit:     Yixun Lan <dlan <AT> gentoo <DOT> 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 <dlan <AT> 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 <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))


             reply	other threads:[~2021-12-22 13:18 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-22 13:18 Yixun Lan [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-07-10 14:56 [gentoo-commits] repo/gentoo:master commit in: net-fs/autofs/, net-fs/autofs/files/ Yixun Lan
2022-01-12  1:46 Yixun Lan
2022-01-10 22:33 Yixun Lan
2021-10-17  5:24 Sam James
2021-05-21  1:07 Yixun Lan
2019-08-25  4:15 Matt Turner
2016-07-05 23:21 Yixun Lan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1640179072.f7586f437afc004fee03a1fdf586d6dd9b7db480.dlan@gentoo \
    --to=dlan@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox