Ian Kent d34b9e
autofs-5.0.5 - fix negative cache included map lookup
Ian Kent d34b9e
Ian Kent d34b9e
From: Ian Kent <raven@themaw.net>
Ian Kent d34b9e
Ian Kent d34b9e
If we are looking up a mount from multiple included map sources we
Ian Kent d34b9e
can't update the negative cache until we have looked at all sources.
Ian Kent d34b9e
If we don't postpone the negative cache update we will get a false
Ian Kent d34b9e
negative on a subsequent lookups.
Ian Kent d34b9e
Ian Kent d34b9e
Also clean up "not found" message.
Ian Kent d34b9e
---
Ian Kent d34b9e
Ian Kent d34b9e
 CHANGELOG       |    1 +
Ian Kent d34b9e
 daemon/lookup.c |    6 +++++-
Ian Kent d34b9e
 2 files changed, 6 insertions(+), 1 deletion(-)
Ian Kent d34b9e
Ian Kent d34b9e
Ian Kent d34b9e
--- autofs-5.0.5.orig/CHANGELOG
Ian Kent d34b9e
+++ autofs-5.0.5/CHANGELOG
Ian Kent d34b9e
@@ -42,6 +42,7 @@
Ian Kent d34b9e
 - fix cache_init() on source re-read.
Ian Kent d34b9e
 - fix mapent becomes negative during lookup.
Ian Kent d34b9e
 - check each dc server individually.
Ian Kent d34b9e
+- fix negative cache included map lookup.
Ian Kent d34b9e
 
Ian Kent d34b9e
 03/09/2009 autofs-5.0.5
Ian Kent d34b9e
 -----------------------
Ian Kent d34b9e
--- autofs-5.0.5.orig/daemon/lookup.c
Ian Kent d34b9e
+++ autofs-5.0.5/daemon/lookup.c
Ian Kent d34b9e
@@ -813,6 +813,10 @@ static void update_negative_cache(struct
Ian Kent d34b9e
 	struct map_source *map;
Ian Kent d34b9e
 	struct mapent *me;
Ian Kent d34b9e
 
Ian Kent d34b9e
+	/* Don't update negative cache for included maps */
Ian Kent d34b9e
+	if (source && source->depth)
Ian Kent d34b9e
+		return;
Ian Kent d34b9e
+
Ian Kent d34b9e
 	/* Have we recorded the lookup fail for negative caching? */
Ian Kent d34b9e
 	me = lookup_source_mapent(ap, name, LKP_DISTINCT);
Ian Kent d34b9e
 	if (me)
Ian Kent d34b9e
@@ -823,7 +827,7 @@ static void update_negative_cache(struct
Ian Kent d34b9e
 		cache_unlock(me->mc);
Ian Kent d34b9e
 	else {
Ian Kent d34b9e
 		/* Notify only once after fail */
Ian Kent d34b9e
-		error(ap->logopt, "key \"%s\" not found in map.", name);
Ian Kent d34b9e
+		logmsg("key \"%s\" not found in map source(s).", name);
Ian Kent d34b9e
 
Ian Kent d34b9e
 		/* Doesn't exist in any source, just add it somewhere */
Ian Kent d34b9e
 		if (source)