Blob Blame History Raw
commit 5f7cc524008a7dc548a71f4c7b0d39759371a37a
Author: Jeff Layton <jlaton@redhat.com>
Date:   Wed May 7 10:27:53 2008 -0400

    Currently nfs4mount() sets the retry value to 10000 on both fg and bg
    mounts. It should be 2 for fg and 10000 for bg. nfsmount() sets it
    properly, but there is a potential corner case. If someone explicitly
    sets retry=10000 on a fg mount, then it will be reset to 2.
    
    Fix this by having retry default to -1 for both flavors, and then reset if
    needed after the mount options have been parsed.
    
    Signed-off-by: Jeff Layton <jlayton@redhat.com>
    Signed-off-by: Steve Dickson <steved@redhat.com>

diff --git a/utils/mount/nfs4mount.c b/utils/mount/nfs4mount.c
index 311e5a0..af70551 100644
--- a/utils/mount/nfs4mount.c
+++ b/utils/mount/nfs4mount.c
@@ -238,7 +238,7 @@ int nfs4mount(const char *spec, const char *node, int flags,
 	nocto = 0;
 	noac = 0;
 	unshared = 0;
-	retry = 10000;		/* 10000 minutes ~ 1 week */
+	retry = -1;
 
 	/*
 	 * NFSv4 specifies that the default port should be 2049
@@ -332,6 +332,14 @@ int nfs4mount(const char *spec, const char *node, int flags,
 		}
 	}
 
+	/* if retry is still -1, then it wasn't set via an option */
+	if (retry == -1) {
+		if (bg)
+			retry = 10000;	/* 10000 mins == ~1 week */
+		else
+			retry = 2;	/* 2 min default on fg mounts */
+	}
+
 	data.flags = (soft ? NFS4_MOUNT_SOFT : 0)
 		| (intr ? NFS4_MOUNT_INTR : 0)
 		| (nocto ? NFS4_MOUNT_NOCTO : 0)
diff --git a/utils/mount/nfsmount.c b/utils/mount/nfsmount.c
index 6c0c365..a9dd917 100644
--- a/utils/mount/nfsmount.c
+++ b/utils/mount/nfsmount.c
@@ -571,7 +571,7 @@ nfsmount(const char *spec, const char *node, int flags,
 #endif
 
 	bg = 0;
-	retry = 10000;		/* 10000 minutes ~ 1 week */
+	retry = -1;
 
 	memset(mnt_pmap, 0, sizeof(*mnt_pmap));
 	mnt_pmap->pm_prog = MOUNTPROG;
@@ -585,9 +585,13 @@ nfsmount(const char *spec, const char *node, int flags,
 		goto fail;
 	if (!nfsmnt_check_compat(nfs_pmap, mnt_pmap))
 		goto fail;
-	
-	if (retry == 10000 && !bg)
-		retry = 2; /* reset for fg mounts */
+
+	if (retry == -1) {
+		if (bg)
+			retry = 10000;	/* 10000 mins == ~1 week*/
+		else
+			retry = 2;	/* 2 min default on fg mounts */
+	}
 
 #ifdef NFS_MOUNT_DEBUG
 	printf(_("rsize = %d, wsize = %d, timeo = %d, retrans = %d\n"),