]> git.decadent.org.uk Git - nfs-utils.git/commitdiff
mount.nfs: Clean up nfs_is_permanent_error()
authorChuck Lever <chuck.lever@oracle.com>
Tue, 14 Jul 2009 20:37:02 +0000 (16:37 -0400)
committerSteve Dickson <steved@redhat.com>
Tue, 14 Jul 2009 20:37:02 +0000 (16:37 -0400)
Clean up: Move nfs_is_permanent_error() closer to the functions that
call it, and update a documenting comment to reflect recent
restructuring in this area.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
utils/mount/stropts.c

index 680156981f8cd131e01a7cb4a674883af10374b4..6560f1ce37f9d713ce923261bcef5ed83b7a24f8 100644 (file)
@@ -286,26 +286,6 @@ static int nfs_validate_options(struct nfsmount_info *mi)
        return nfs_append_addr_option(sap, salen, mi->options);
 }
 
-/*
- * Distinguish between permanent and temporary errors.
- *
- * Returns 0 if the passed-in error is temporary, thus the
- * mount system call should be retried; returns one if the
- * passed-in error is permanent, thus the mount system call
- * should not be retried.
- */
-static int nfs_is_permanent_error(int error)
-{
-       switch (error) {
-       case ESTALE:
-       case ETIMEDOUT:
-       case ECONNREFUSED:
-               return 0;       /* temporary */
-       default:
-               return 1;       /* permanent */
-       }
-}
-
 /*
  * Get NFS/mnt server addresses from mount options
  *
@@ -633,6 +613,31 @@ static int nfs_try_mount(struct nfsmount_info *mi)
                return nfs_try_nfs23mount(mi);
 }
 
+/*
+ * Distinguish between permanent and temporary errors.
+ *
+ * Basically, we retry if communication with the server has
+ * failed so far, but fail immediately if there is a local
+ * error (like a bad mount option).
+ *
+ * ESTALE is also a temporary error because some servers
+ * return ESTALE when a share is temporarily offline.
+ *
+ * Returns 1 if we should fail immediately, or 0 if we
+ * should retry.
+ */
+static int nfs_is_permanent_error(int error)
+{
+       switch (error) {
+       case ESTALE:
+       case ETIMEDOUT:
+       case ECONNREFUSED:
+               return 0;       /* temporary */
+       default:
+               return 1;       /* permanent */
+       }
+}
+
 /*
  * Handle "foreground" NFS mounts.
  *