]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - debian/patches/02-fix-retry-option.patch
Imported Debian patch 1.1.3-1
[nfs-utils.git] / debian / patches / 02-fix-retry-option.patch
diff --git a/debian/patches/02-fix-retry-option.patch b/debian/patches/02-fix-retry-option.patch
deleted file mode 100644 (file)
index 935cb3d..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-text-based mount command: Fix retry= option
-
-Steinar Gunderson reports:
-
-"It seems retry= is now additive with the text-based mount interface. In
-particular, "mount -o retry=0" still gives a two-minute timeout."
-
-Make retry option parsing more robust, while we're at it.
-
-Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
----
-
- utils/mount/stropts.c |   55 ++++++++++++++++++++++++++++++++++++++-----------
- 1 files changed, 43 insertions(+), 12 deletions(-)
-
-diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
-index cadb1f4..4df9ad9 100644
---- a/utils/mount/stropts.c
-+++ b/utils/mount/stropts.c
-@@ -65,6 +65,14 @@
- #define NFS_MAXPATHNAME               (1024)
- #endif
-+#ifndef NFS_DEF_FG_TIMEOUT_MINUTES
-+#define NFS_DEF_FG_TIMEOUT_MINUTES    (2ul)
-+#endif
-+
-+#ifndef NFS_DEF_BG_TIMEOUT_MINUTES
-+#define NFS_DEF_BG_TIMEOUT_MINUTES    (10000ul)
-+#endif
-+
- extern int nfs_mount_data_version;
- extern char *progname;
- extern int verbose;
-@@ -141,6 +149,35 @@ static int fill_ipv4_sockaddr(const char *hostname, struct sockaddr_in *addr)
- }
- /*
-+ * Set up a timeout value based on the value of the "retry=" option.
-+ *
-+ * Returns 1 if the option was parsed successfully, otherwise zero.
-+ * Returns the parsed timeout, or the default, in *timeout.
-+ */
-+static int parse_retry_option(time_t *timeout, struct mount_options *options,
-+                            unsigned long timeout_minutes)
-+{
-+      char *retry_option, *endptr;
-+
-+      retry_option = po_get(options, "retry");
-+      if (retry_option) {
-+              long tmp;
-+
-+              errno = 0;
-+              tmp = strtol(retry_option, &endptr, 10);
-+              if (errno || endptr == retry_option || tmp < 0) {
-+                      nfs_error(_("%s: incorrect retry timeout specified"),
-+                                      progname);
-+                      return 0;
-+              }
-+              timeout_minutes = tmp;
-+      }
-+
-+      *timeout = time(NULL) + (time_t)(timeout_minutes * 60);
-+      return 1;
-+}
-+
-+/*
-  * Append the 'addr=' option to the options string to pass a resolved
-  * server address to the kernel.  After a successful mount, this address
-  * is also added to /etc/mtab for use when unmounting.
-@@ -535,13 +572,10 @@ static int nfsmount_fg(const char *spec, const char *node,
-                      char **extra_opts)
- {
-       unsigned int secs = 1;
--      time_t timeout = time(NULL);
--      char *retry;
-+      time_t timeout;
--      timeout += 60 * 2;              /* default: 2 minutes */
--      retry = po_get(options, "retry");
--      if (retry)
--              timeout += 60 * atoi(retry);
-+      if (!parse_retry_option(&timeout, options, NFS_DEF_FG_TIMEOUT_MINUTES))
-+              return EX_FAIL;
-       if (verbose)
-               printf(_("%s: timeout set for %s"),
-@@ -612,13 +646,10 @@ static int nfsmount_child(const char *spec, const char *node,
-                         int fake, char **extra_opts)
- {
-       unsigned int secs = 1;
--      time_t timeout = time(NULL);
--      char *retry;
-+      time_t timeout;
--      timeout += 60 * 10000;          /* default: 10,000 minutes */
--      retry = po_get(options, "retry");
--      if (retry)
--              timeout += 60 * atoi(retry);
-+      if (!parse_retry_option(&timeout, options, NFS_DEF_BG_TIMEOUT_MINUTES))
-+              return EX_FAIL;
-       for (;;) {
-               if (sleep(secs))