Ian Kent 4a8919
autofs-5.0.5 - fix prune cache valid check
Ian Kent 4a8919
Ian Kent 4a8919
From: Ian Kent <raven@themaw.net>
Ian Kent 4a8919
Ian Kent 4a8919
During a map reload, when pruning the cache we look for a valid map entry
Ian Kent 4a8919
in another map. In lookup_prune_one_cache() There is a missing check for
Ian Kent 4a8919
the entry being in the current map which causes the directory cleanup code
Ian Kent 4a8919
from doing its job.
Ian Kent 4a8919
---
Ian Kent 4a8919
Ian Kent 4a8919
 CHANGELOG       |    1 +
Ian Kent 4a8919
 daemon/lookup.c |    8 ++++++++
Ian Kent 4a8919
 2 files changed, 9 insertions(+)
Ian Kent 4a8919
Ian Kent 4a8919
Ian Kent 4a8919
--- autofs-5.0.5.orig/CHANGELOG
Ian Kent 4a8919
+++ autofs-5.0.5/CHANGELOG
Ian Kent 4a8919
@@ -57,6 +57,7 @@
Ian Kent 4a8919
 - use weight only for server selection.
Ian Kent 4a8919
 - fix isspace() wild card substition.
Ian Kent 4a8919
 - auto adjust ldap page size.
Ian Kent 4a8919
+- fix prune cache valid check.
Ian Kent 4a8919
 
Ian Kent 4a8919
 03/09/2009 autofs-5.0.5
Ian Kent 4a8919
 -----------------------
Ian Kent 4a8919
--- autofs-5.0.5.orig/daemon/lookup.c
Ian Kent 4a8919
+++ autofs-5.0.5/daemon/lookup.c
Ian Kent 4a8919
@@ -1060,6 +1060,14 @@ void lookup_prune_one_cache(struct autof
Ian Kent 4a8919
 		 * cache entry.
Ian Kent 4a8919
 		 */
Ian Kent 4a8919
 		valid = lookup_source_valid_mapent(ap, key, LKP_DISTINCT);
Ian Kent 4a8919
+		if (valid && valid->mc == mc) {
Ian Kent 4a8919
+			 /*
Ian Kent 4a8919
+			  * We've found a map entry that has been removed from
Ian Kent 4a8919
+			  * the current cache so it isn't really valid.
Ian Kent 4a8919
+			  */
Ian Kent 4a8919
+			cache_unlock(valid->mc);
Ian Kent 4a8919
+			valid = NULL;
Ian Kent 4a8919
+		}
Ian Kent 4a8919
 		if (!valid &&
Ian Kent 4a8919
 		    is_mounted(_PATH_MOUNTED, path, MNTS_REAL)) {
Ian Kent 4a8919
 			debug(ap->logopt,