From 9107af81e074ef3cc963ff92dd52cc1e071b0a2d Mon Sep 17 00:00:00 2001 From: Packit Service Date: Apr 16 2021 22:13:55 +0000 Subject: Apply patch autofs-5.1.6-move-readall-into-struct-master.patch patch_name: autofs-5.1.6-move-readall-into-struct-master.patch present_in_specfile: true --- diff --git a/CHANGELOG b/CHANGELOG index 4d83df2..4a6c042 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -103,6 +103,7 @@ xx/xx/2018 autofs-5.1.5 - refactor sss getautomntent(). - improve sss getautomntent() error handling. - sss introduce calculate_retry_count() function. +- move readall into struct master. 19/12/2017 autofs-5.1.4 - fix spec file url. diff --git a/daemon/automount.c b/daemon/automount.c index 019bd81..ec11d5a 100644 --- a/daemon/automount.c +++ b/daemon/automount.c @@ -1465,7 +1465,6 @@ static void *do_read_master(void *arg) struct master *master; unsigned int logopt; time_t age; - int readall = 1; int status; status = pthread_mutex_lock(&mrc.mutex); @@ -1496,8 +1495,11 @@ static void *do_read_master(void *arg) info(logopt, "re-reading master map %s", master->name); - status = master_read_master(master, age, readall); + master->readall = 1; + status = master_read_master(master, age); + + master->readall = 0; master->reading = 0; return NULL; @@ -2196,7 +2198,7 @@ static void do_master_list_reset(struct master *master) master_mutex_unlock(); } -static int do_master_read_master(struct master *master, int wait) +static int do_master_read_master(struct master *master, time_t *age, int wait) { sigset_t signalset; /* Wait must be at least 1 second */ @@ -2204,7 +2206,6 @@ static int do_master_read_master(struct master *master, int wait) unsigned int elapsed = 0; int max_wait = wait; int ret = 0; - time_t age; sigemptyset(&signalset); sigaddset(&signalset, SIGTERM); @@ -2217,8 +2218,8 @@ static int do_master_read_master(struct master *master, int wait) do_master_list_reset(master); - age = monotonic_time(NULL); - if (master_read_master(master, age, 0)) { + *age = monotonic_time(NULL); + if (master_read_master(master, *age)) { ret = 1; break; } @@ -2692,14 +2693,14 @@ int main(int argc, char *argv[]) dh_tirpc = dlopen("libtirpc.so.3", RTLD_NOW); #endif - master_read = master_read_master(master_list, age, 0); + master_read = master_read_master(master_list, age); if (!master_read) { /* * Read master map, waiting until it is available, unless * a signal is received, in which case exit returning an * error. */ - if (!do_master_read_master(master_list, master_wait)) { + if (!do_master_read_master(master_list, &age, master_wait)) { logmsg("%s: warning: could not read at least one " "map source after waiting, continuing ...", program); @@ -2707,9 +2708,14 @@ int main(int argc, char *argv[]) * Failed to read master map, continue with what * we have anyway. */ - do_master_list_reset(master_list); - age = monotonic_time(NULL); - master_read_master(master_list, age, 1); + master_mutex_lock(); + master_list->readall = 1; + master_mount_mounts(master_list, age); + master_list->readall = 0; + + if (list_empty(&master_list->mounts)) + warn(master_list->logopt, "no mounts in table"); + master_mutex_unlock(); } } diff --git a/include/master.h b/include/master.h index e1d272f..f689297 100644 --- a/include/master.h +++ b/include/master.h @@ -63,6 +63,7 @@ struct master { unsigned int depth; unsigned int reading; unsigned int read_fail; + unsigned int readall; unsigned int default_ghost; unsigned int default_logging; unsigned int default_timeout; @@ -118,11 +119,11 @@ void master_remove_mapent(struct master_mapent *); void master_free_mapent_sources(struct master_mapent *, unsigned int); void master_free_mapent(struct master_mapent *); struct master *master_new(const char *, unsigned int, unsigned int); -int master_read_master(struct master *, time_t, int); +int master_read_master(struct master *, time_t); int master_submount_list_empty(struct autofs_point *ap); int master_notify_submount(struct autofs_point *, const char *path, enum states); void master_notify_state_change(struct master *, int); -int master_mount_mounts(struct master *, time_t, int); +int master_mount_mounts(struct master *, time_t); int dump_map(struct master *, const char *, const char *); int master_show_mounts(struct master *); unsigned int master_get_logopt(void); diff --git a/lib/master.c b/lib/master.c index fedf807..d87d7e2 100644 --- a/lib/master.c +++ b/lib/master.c @@ -951,6 +951,7 @@ struct master *master_new(const char *name, unsigned int timeout, unsigned int f master->depth = 0; master->reading = 0; master->read_fail = 0; + master->readall = 0; master->default_ghost = flags & DAEMON_FLAGS_GHOST; master->default_timeout = timeout; master->default_logging = defaults_get_logging(); @@ -1126,7 +1127,7 @@ again: } } -int master_read_master(struct master *master, time_t age, int readall) +int master_read_master(struct master *master, time_t age) { unsigned int logopt = master->logopt; struct mapent_cache *nc; @@ -1157,15 +1158,15 @@ int master_read_master(struct master *master, time_t age, int readall) master_add_amd_mount_section_mounts(master, age); if (!master->read_fail) - master_mount_mounts(master, age, readall); + master_mount_mounts(master, age); else { master->read_fail = 0; - /* HUP signal sets readall == 1 only */ - if (!readall) { + /* HUP signal sets master->readall == 1 only */ + if (!master->readall) { master_mutex_unlock(); return 0; } else - master_mount_mounts(master, age, readall); + master_mount_mounts(master, age); } if (list_empty(&master->mounts)) @@ -1452,7 +1453,7 @@ static void check_update_map_sources(struct master_mapent *entry, int readall) return; } -int master_mount_mounts(struct master *master, time_t age, int readall) +int master_mount_mounts(struct master *master, time_t age) { struct mapent_cache *nc = master->nc; struct list_head *p, *head; @@ -1536,7 +1537,7 @@ cont: st_mutex_unlock(); if (!ret) - check_update_map_sources(this, readall); + check_update_map_sources(this, master->readall); else if (ret == -1 && save_errno == EBADF) { if (!master_do_mount(this)) { list_del_init(&this->list);