2008-05-22 16:12:33

by Chuck Lever III

[permalink] [raw]
Subject: [PATCH 4/4] text-based mount command: use correct server name in rewrite_mount_options

Fix error reporting when probe_bothports() fails while rewriting mount
options.

Signed-off-by: Chuck Lever <[email protected]>
---

utils/mount/error.c | 3 +++
utils/mount/stropts.c | 9 +++++----
2 files changed, 8 insertions(+), 4 deletions(-)


diff --git a/utils/mount/error.c b/utils/mount/error.c
index 23a91ff..147e919 100644
--- a/utils/mount/error.c
+++ b/utils/mount/error.c
@@ -227,6 +227,9 @@ void mount_error(const char *spec, const char *mount_point, int error)
nfs_error(_("%s: mount point %s does not exist"),
progname, mount_point);
break;
+ case ESPIPE:
+ rpc_mount_errors((char *)spec, 0, 0);
+ break;
case EIO:
case EFAULT:
nfs_error(_("%s: internal error"), progname);
diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
index 3564f15..967fd69 100644
--- a/utils/mount/stropts.c
+++ b/utils/mount/stropts.c
@@ -356,6 +356,8 @@ static struct mount_options *rewrite_mount_options(char *str)
clnt_addr_t nfs_server = { };
int p;

+ errno = EIO;
+
options = po_split(str);
if (!options)
return NULL;
@@ -426,7 +428,7 @@ static struct mount_options *rewrite_mount_options(char *str)
po_remove_all(options, "udp");

if (!probe_bothports(&mnt_server, &nfs_server)) {
- rpc_mount_errors("rpcbind", 0, 0);
+ errno = ESPIPE;
goto err;
}

@@ -452,6 +454,7 @@ static struct mount_options *rewrite_mount_options(char *str)

}

+ errno = 0;
return options;

err:
@@ -498,10 +501,8 @@ static int nfs_retry_nfs23mount(struct nfsmount_info *mi)
char **extra_opts = mi->extra_opts;

retry_options = rewrite_mount_options(*extra_opts);
- if (!retry_options) {
- errno = EIO;
+ if (!retry_options)
return 0;
- }

if (po_join(retry_options, &retry_str) == PO_FAILED) {
po_destroy(retry_options);