[PATCH 1/8] mountd: Warn when a broken junction is encountered

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



A broken junction is a problem that administrators will want to
know about and correct.

Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx>
---

 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;
 }

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux