You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
2.2 KiB

autofs-5.0.7 - dont probe rdma mounts
From: Ian Kent <raven@themaw.net>
Since the change to pass text nfs mount options drectly to the kernel all autofs
mount requests now probe server availability. This was because of long delays
mounting from servers that aren't responding.
This caused mounts requesting the rdma protocol to fail if udp or tcp was also
not available from the server.
Since, AFAICT the rmda protocol can't be used with RPC fromn userspace, the only
way to work around it is to not probe servers when rdma is requested.
---
CHANGELOG | 1 +
modules/mount_nfs.c | 13 ++++++++++++-
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG b/CHANGELOG
index 50e83d7..f9bc987 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -44,6 +44,7 @@
- document allowed map sources in auto.master.
- add enable sloppy mount option to configure.
- fix interface address null check.
+- dont probe rdma mounts.
25/07/2012 autofs-5.0.7
=======================
diff --git a/modules/mount_nfs.c b/modules/mount_nfs.c
index e61320b..5424d74 100644
--- a/modules/mount_nfs.c
+++ b/modules/mount_nfs.c
@@ -71,6 +71,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
int nosymlink = 0;
int port = -1;
int ro = 0; /* Set if mount bind should be read-only */
+ int rdma = 0;
if (ap->flags & MOUNT_FLAG_REMOUNT)
return 0;
@@ -124,6 +125,11 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
end--;
o_len = end - cp + 1;
+
+ if (strncmp("proto=rdma", cp, o_len) == 0 ||
+ strncmp("rdma", cp, o_len) == 0)
+ rdma = 1;
+
if (strncmp("nosymlink", cp, o_len) == 0) {
warn(ap->logopt, MODPREFIX
"the \"nosymlink\" option is depricated "
@@ -170,7 +176,12 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, int
info(ap->logopt, MODPREFIX "no hosts available");
return 1;
}
- prune_host_list(ap->logopt, &hosts, vers, port);
+ /*
+ * We can't probe protocol rdma so leave it to mount.nfs(8)
+ * and and suffer the delay if a server isn't available.
+ */
+ if (!rdma)
+ prune_host_list(ap->logopt, &hosts, vers, port);
if (!hosts) {
info(ap->logopt, MODPREFIX "no hosts available");