The text-based mount.nfs program must distinguish between different types
of errors returned from the kernel. Permanent errors, like bad mount
options, should cause an immediate failure. Temporary errors, such as a
connection timeout, should result in a retry of some type.
Add a function that sorts between the two types of errors. The list of
permanent errors can be adjusted later if needed.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Neil Brown <neilb@suse.de>
return 1;
}
+/*
+ * 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 is_permanent_error(int error)
+{
+ switch (error) {
+ case EACCES:
+ case ESTALE:
+ case ETIMEDOUT:
+ case ECONNREFUSED:
+ return 0; /* temporary */
+ default:
+ return 1; /* permanent */
+ }
+}
+
/*
* Reconstruct the mount option string based on a portmapper probe
* of the server. Returns one if the server's portmapper returned