2007-04-12 18:31:42 +02:00
|
|
|
Index: util-linux-ng-2.12r+2.13pre7/mount/nfs.5
|
|
|
|
===================================================================
|
|
|
|
--- util-linux-ng-2.12r+2.13pre7.orig/mount/nfs.5
|
|
|
|
+++ util-linux-ng-2.12r+2.13pre7/mount/nfs.5
|
|
|
|
@@ -199,11 +199,11 @@ writing to common filesystem on the serv
|
2006-12-19 00:18:10 +01:00
|
|
|
.TP 1.5i
|
|
|
|
.I tcp
|
|
|
|
Mount the NFS filesystem using the TCP protocol instead of the
|
|
|
|
-default UDP protocol. Many NFS servers only support UDP.
|
|
|
|
+UDP protocol. This is the default, but in case it fails (many NFS servers only
|
|
|
|
+support UDP) it will fallback and try UDP.
|
|
|
|
.TP 1.5i
|
|
|
|
.I udp
|
|
|
|
-Mount the NFS filesystem using the UDP protocol. This
|
|
|
|
-is the default.
|
|
|
|
+Mount the NFS filesystem using the UDP protocol.
|
|
|
|
.TP 1.5i
|
|
|
|
.I noacl
|
|
|
|
Assume no extended access control mechanisms like POSIX ACLs are used
|
2007-04-12 18:31:42 +02:00
|
|
|
@@ -227,8 +227,5 @@ interrupted.
|
2006-12-19 00:18:10 +01:00
|
|
|
The posix, and nocto options are parsed by mount
|
|
|
|
but currently are silently ignored.
|
|
|
|
.P
|
|
|
|
-The tcp and namlen options are implemented but are not currently
|
|
|
|
-supported by the Linux kernel.
|
|
|
|
-.P
|
|
|
|
The umount command should notify the server
|
|
|
|
when an NFS filesystem is unmounted.
|
2007-04-12 18:31:42 +02:00
|
|
|
Index: util-linux-ng-2.12r+2.13pre7/mount/nfsmount.c
|
|
|
|
===================================================================
|
|
|
|
--- util-linux-ng-2.12r+2.13pre7.orig/mount/nfsmount.c
|
|
|
|
+++ util-linux-ng-2.12r+2.13pre7/mount/nfsmount.c
|
|
|
|
@@ -317,7 +317,7 @@ int nfsmount(const char *spec, const cha
|
2006-12-19 00:18:10 +01:00
|
|
|
noacl = 0;
|
|
|
|
noac = 0;
|
|
|
|
retry = 10000; /* 10000 minutes ~ 1 week */
|
|
|
|
- tcp = 0;
|
|
|
|
+ tcp = 2;
|
|
|
|
|
|
|
|
mountprog = MOUNTPROG;
|
|
|
|
mountvers = 0;
|
2007-04-12 18:31:42 +02:00
|
|
|
@@ -437,6 +437,8 @@ int nfsmount(const char *spec, const cha
|
2006-12-19 00:18:10 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
+
|
|
|
|
+retry_udp:
|
|
|
|
proto = (tcp) ? IPPROTO_TCP : IPPROTO_UDP;
|
|
|
|
|
|
|
|
data.flags = (soft ? NFS_MOUNT_SOFT : 0)
|
2007-04-12 18:31:42 +02:00
|
|
|
@@ -740,7 +742,13 @@ int nfsmount(const char *spec, const cha
|
2006-12-19 00:18:10 +01:00
|
|
|
* '0' for port (service unavailable), we then exit,
|
|
|
|
* notifying the user, rather than hanging up mount.
|
|
|
|
*/
|
|
|
|
- if (port == 0 && tcp == 1) {
|
|
|
|
+ if (port == 0 && tcp) {
|
|
|
|
+ if (tcp == 2) {
|
|
|
|
+ fprintf(stderr, "nfs server reported tcp not available, falling back to udp\n");
|
|
|
|
+ close(fsock);
|
|
|
|
+ tcp = 0;
|
|
|
|
+ goto retry_udp;
|
|
|
|
+ }
|
|
|
|
perror(_("nfs server reported service unavailable"));
|
|
|
|
goto fail;
|
|
|
|
}
|