summaryrefslogtreecommitdiffstats
path: root/utils/mount/error.c
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2007-09-24 11:29:10 -0400
committerNeil Brown <neilb@suse.de>2007-09-25 11:50:16 +1000
commit6e54f6179cb9e9d5706901a06744b8f4667c24e7 (patch)
treec767c19e83deaec302997ec7eb336013c4ec41d9 /utils/mount/error.c
parent4398901d336340f5bef59991d4cea77b2970f2fe (diff)
downloadnfs-utils-6e54f6179cb9e9d5706901a06744b8f4667c24e7.tar.gz
nfs-utils-6e54f6179cb9e9d5706901a06744b8f4667c24e7.tar.xz
nfs-utils-6e54f6179cb9e9d5706901a06744b8f4667c24e7.zip
text-based mount.nfs: Add text-based error reporting function
The mount_errors() function prints an error based on what just happened in the user-space RPC library. This is meaningless for text-based mounts, since they don't use the RPC library for most things. Add a new error printing function that the text-based logic can use to report an error. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Neil Brown <neilb@suse.de>
Diffstat (limited to 'utils/mount/error.c')
-rw-r--r--utils/mount/error.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/utils/mount/error.c b/utils/mount/error.c
index 3f7458c..480c944 100644
--- a/utils/mount/error.c
+++ b/utils/mount/error.c
@@ -130,6 +130,61 @@ void rpc_mount_errors(char *server, int will_retry, int bg)
fprintf(stderr, "%s\n", errbuf);
}
+/**
+ * sys_mount_errors - log an error that occurred during a mount system call
+ * @server: C string containing name of server we are attempting to mount
+ * @error: errno value to report
+ * @will_retry: one indicates mount will retry at some later point
+ * @bg: one indicates this is a background mount
+ *
+ * Passed an errno value generated by a mount system call, and reports it
+ * on stderr (fg mount) or in the system log (bg mount).
+ */
+void sys_mount_errors(char *server, int error, int will_retry, int bg)
+{
+ int pos = 0;
+ char *tmp;
+ static int onlyonce = 0;
+
+ tmp = &errbuf[pos];
+ if (bg)
+ pos = snprintf(tmp, (erreob - tmp),
+ _("mount to NFS server '%s' failed: "),
+ server);
+ else
+ pos = snprintf(tmp, (erreob - tmp),
+ _("%s: mount to NFS server '%s' failed: "),
+ progname, server);
+
+ tmp = &errbuf[pos];
+ if (error == ETIMEDOUT) {
+ if (will_retry)
+ pos = snprintf(tmp, (erreob - tmp),
+ _("timed out, retrying"));
+ else
+ pos = snprintf(tmp, (erreob - tmp),
+ _("timed out, giving up"));
+ } else {
+ if (bg) {
+ if (will_retry)
+ pos = snprintf(tmp, (erreob - tmp),
+ _("%s, retrying"),
+ strerror(error));
+ else
+ pos = snprintf(tmp, (erreob - tmp),
+ _("%s, giving up"),
+ strerror(error));
+ }
+ }
+
+ if (bg) {
+ if (onlyonce++ < 1)
+ openlog("mount", LOG_CONS|LOG_PID, LOG_AUTH);
+ syslog(LOG_ERR, "%s", errbuf);
+ } else
+ fprintf(stderr, "%s\n", errbuf);
+}
+
/*
* mount_error - report a foreground mount error
* @spec: C string containing the device name being mounted