From: Chuck Lever Date: Wed, 10 Oct 2007 19:06:39 +0000 (-0400) Subject: text-based mount.nfs: sort between permanent and temporary errors X-Git-Tag: nfs-utils-1-1-1~18 X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=4ce9ddfb03de06e90fb4cf0eb5767cb0e3a98905;p=nfs-utils.git text-based mount.nfs: sort between permanent and temporary errors 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 Signed-off-by: Neil Brown --- diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c index 13523f8..b6d3a12 100644 --- a/utils/mount/stropts.c +++ b/utils/mount/stropts.c @@ -237,6 +237,27 @@ static int set_mandatory_options(const char *type, 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