summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2007-08-03 13:23:39 -0400
committerNeil Brown <neilb@suse.de>2007-08-04 08:27:40 +1000
commit59a5507df986d27db7cd38fcd8be5d94eff0fa39 (patch)
treeeafafad7ab98de92d7c0f8ea60c52a815b611a75
parent2f1ade1adf8074efbd661d41758d8844ab5f522e (diff)
downloadnfs-utils-59a5507df986d27db7cd38fcd8be5d94eff0fa39.tar.gz
nfs-utils-59a5507df986d27db7cd38fcd8be5d94eff0fa39.tar.xz
nfs-utils-59a5507df986d27db7cd38fcd8be5d94eff0fa39.zip
mount.nfs: umount needs to pick up transport option from /etc/mtab
Now that umount's default transport protocol has become more flexible, it will need to detect both proto=udp and proto=tcp in /etc/mtab. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Neil Brown <neilb@suse.de>
-rw-r--r--utils/mount/nfsumount.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/utils/mount/nfsumount.c b/utils/mount/nfsumount.c
index e8814a3..a78ab26 100644
--- a/utils/mount/nfsumount.c
+++ b/utils/mount/nfsumount.c
@@ -119,6 +119,16 @@ static int del_mtab(const char *spec, const char *node)
return EX_FILEIO;
}
+/*
+ * Pick up certain mount options used during the original mount
+ * from /etc/mtab. The basics include the server's IP address and
+ * the server pathname of the share to unregister.
+ *
+ * These options might also describe the mount port, mount protocol
+ * version, and transport protocol used to punch through a firewall.
+ * We will need this information to get through the firewall again
+ * to do the umount.
+ */
static int do_nfs_umount(const char *spec, char *opts)
{
char *hostname;
@@ -184,6 +194,8 @@ static int do_nfs_umount(const char *spec, char *opts)
pmap->pm_vers = atoi(p+10);
if (opts && (hasmntopt(&mnt, "udp") || hasmntopt(&mnt, "proto=udp")))
pmap->pm_prot = IPPROTO_UDP;
+ if (opts && (hasmntopt(&mnt, "tcp") || hasmntopt(&mnt, "proto=tcp")))
+ pmap->pm_prot = IPPROTO_TCP;
if (!nfs_gethostbyname(hostname, &mnt_server.saddr)) {
nfs_error(_("%s: '%s' does not contain a recognized hostname"),