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 6801569..6560f1c 100644 (file)
@@ -287,26 +287,6 @@ static int nfs_validate_options(struct nfsmount_info *mi)
 }
 
 /*
- * 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
  *
  * Returns 1 and fills in @nfs_saddr, @nfs_salen, @mnt_saddr, and @mnt_salen
@@ -634,6 +614,31 @@ static int nfs_try_mount(struct nfsmount_info *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.
  *
  * Retry the mount request for as long as the 'retry=' option says.