autofs-5.0.7 - dont probe rdma mounts From: Ian Kent 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");