autofs-5.1.2 - fix included master map not found return From: Ian Kent When retrying the master map read at startup a not found return is needed when there is no map rather than an unknown or unavailable for the retry logic to work. Signed-off-by: Ian Kent --- CHANGELOG | 1 + daemon/lookup.c | 6 ++++-- modules/lookup_file.c | 18 ++++++++++++------ 3 files changed, 17 insertions(+), 8 deletions(-) --- autofs-5.0.7.orig/CHANGELOG +++ autofs-5.0.7/CHANGELOG @@ -208,6 +208,7 @@ - add config option to supress not found log message. - wait for master map available at start. - add master read wait option. +- fix included master map not found return. 25/07/2012 autofs-5.0.7 ======================= --- autofs-5.0.7.orig/daemon/lookup.c +++ autofs-5.0.7/daemon/lookup.c @@ -241,7 +241,7 @@ int lookup_nss_read_master(struct master } /* First one gets it */ - result = NSS_STATUS_UNKNOWN; + result = NSS_STATUS_SUCCESS; head = &nsslist; list_for_each(p, head) { struct nss_source *this; @@ -282,8 +282,10 @@ int lookup_nss_read_master(struct master } } - if (result == NSS_STATUS_UNKNOWN) { + if (result == NSS_STATUS_UNKNOWN || + result == NSS_STATUS_NOTFOUND) { debug(logopt, "no map - continuing to next source"); + result = NSS_STATUS_SUCCESS; continue; } --- autofs-5.0.7.orig/modules/lookup_file.c +++ autofs-5.0.7/modules/lookup_file.c @@ -463,6 +463,8 @@ int lookup_read_master(struct master *ma f = open_fopen_r(ctxt->mapname); if (!f) { + if (errno == ENOENT) + return NSS_STATUS_NOTFOUND; error(logopt, MODPREFIX "could not open master map file %s", ctxt->mapname); @@ -506,12 +508,14 @@ int lookup_read_master(struct master *ma MODPREFIX "failed to read included master map %s", master->name); - /* - * If we're starting up wee need the whole - * master map initially, so tell the upper - * layer to retry. - */ - master->read_fail = 1; + if (status != NSS_STATUS_NOTFOUND) { + /* + * If we're starting up wee need the whole + * master map initially, so tell the upper + * layer to retry. + */ + master->read_fail = 1; + } } master->depth--; master->recurse = 0; @@ -712,6 +716,8 @@ int lookup_read_map(struct autofs_point f = open_fopen_r(ctxt->mapname); if (!f) { + if (errno == ENOENT) + return NSS_STATUS_NOTFOUND; error(ap->logopt, MODPREFIX "could not open map file %s", ctxt->mapname); return NSS_STATUS_UNAVAIL;