diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2012-10-19 10:24:07 -0400 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2012-10-22 09:44:02 -0400 |
commit | d69795533b0c8906e42aa2eb1cf4628cda42a766 (patch) | |
tree | 71fc590980f480c51957cfcdb6326e7318375143 | |
parent | 8213acaf93f748d7d0efe085aded3ab9b6871e9b (diff) | |
download | nfs-utils-d69795533b0c8906e42aa2eb1cf4628cda42a766.tar.gz |
mountd: Warn when a broken junction is encountered
A broken junction is a problem that administrators will want to
know about and correct.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r-- | utils/mountd/cache.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c index 7d80432..942fdbd 100644 --- a/utils/mountd/cache.c +++ b/utils/mountd/cache.c @@ -975,8 +975,8 @@ static struct exportent *locations_to_export(struct jp_ops *ops, static struct exportent *invoke_junction_ops(void *handle, const char *junction) { + struct exportent *exp = NULL; nfs_fsloc_set_t locations; - struct exportent *exp; enum jp_status status; struct jp_ops *ops; char *error; @@ -1002,15 +1002,24 @@ static struct exportent *invoke_junction_ops(void *handle, } status = ops->jp_get_locations(junction, &locations); - if (status != JP_OK) { - xlog(D_GENERAL, "%s: failed to resolve %s: %s", - __func__, junction, ops->jp_error(status)); - return NULL; + switch (status) { + case JP_OK: + break; + case JP_NOTJUNCTION: + xlog(D_GENERAL, "%s: %s is not a junction", + __func__, junction); + goto out; + default: + xlog(L_WARNING, "Dangling junction %s: %s", + junction, ops->jp_error(status)); + goto out; } exp = locations_to_export(ops, locations, junction); ops->jp_put_locations(locations); + +out: ops->jp_done(); return exp; } |