diff options
author | Jeff Layton <jlaton@redhat.com> | 2008-05-07 10:27:53 -0400 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2008-05-07 10:27:53 -0400 |
commit | 5f7cc524008a7dc548a71f4c7b0d39759371a37a (patch) | |
tree | dee79a7ddffb4e03662a7c40e1f318b3795e0c7a | |
parent | ad1fc3feae447685a8ec8c7db0ad913fe3c4de5c (diff) | |
download | nfs-utils-5f7cc524008a7dc548a71f4c7b0d39759371a37a.tar.gz nfs-utils-5f7cc524008a7dc548a71f4c7b0d39759371a37a.tar.xz nfs-utils-5f7cc524008a7dc548a71f4c7b0d39759371a37a.zip |
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>
-rw-r--r-- | utils/mount/nfs4mount.c | 10 | ||||
-rw-r--r-- | utils/mount/nfsmount.c | 12 |
2 files changed, 17 insertions, 5 deletions
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"), |