autofs-5.1.9 - eliminate master map parameter where possible From: Ian Kent The master map parameter is redundant in a number of cases and could lead to confusion or possibly introduce unnecessary dependancies. There can only be one master map list so remove function paramaters where possible. Signed-off-by: Ian Kent --- CHANGELOG | 1 daemon/automount.c | 127 ++++++++++++++++++++++++------------------------ daemon/master.c | 103 +++++++++++++++++++++++---------------- daemon/master_parse.y | 11 ++-- include/automount.h | 1 include/master.h | 29 ++++++----- modules/mount_autofs.c | 5 -- 7 files changed, 146 insertions(+), 131 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 97416f80d..39b8a0d71 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -61,6 +61,7 @@ - add missing cache_unlock() in umount_subtree_mounts(). - move open close on exec functions to autofs library. - fix locking when setting master map reading. +- eliminate master map parameter where possible. 02/11/2023 autofs-5.1.9 - fix kernel mount status notification. diff --git a/daemon/automount.c b/daemon/automount.c index ee43c823d..c48ec9831 100644 --- a/daemon/automount.c +++ b/daemon/automount.c @@ -103,7 +103,7 @@ pthread_attr_t th_attr; pthread_attr_t th_attr_detached; struct master_readmap_cond mrc = { - PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, NULL, 0, 0, 0, 0}; + PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, 0, 0, 0, 0}; struct startup_cond suc = { PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, 0}; @@ -114,8 +114,6 @@ pthread_key_t key_thread_attempt_id = (pthread_key_t) 0L; int aquire_flag_file(void); void release_flag_file(void); -extern struct master *master_list; - /* simple string hash based on public domain sdbm library */ static unsigned long sdbm_hash(const char *str, unsigned long seed) { @@ -1141,7 +1139,7 @@ static void do_master_cleanup_unlock(void *arg) static void *do_notify_state(void *arg) { - struct master *master; + unsigned int logopt = master_get_logopt(); int sig; int status; @@ -1151,14 +1149,12 @@ static void *do_notify_state(void *arg) if (status) fatal(status); - master = mrc.master; - - debug(master->logopt, "signal %d", sig); + debug(logopt, "signal %d", sig); mrc.signaled = 1; status = pthread_cond_signal(&mrc.cond); if (status) { - error(master->logopt, + error(logopt, "failed to signal state notify condition"); status = pthread_mutex_unlock(&mrc.mutex); if (status) @@ -1170,13 +1166,14 @@ static void *do_notify_state(void *arg) if (status) fatal(status); - master_notify_state_change(master, sig); + master_notify_state_change(sig); return NULL; } -static pthread_t do_signals(struct master *master, int sig) +static pthread_t do_signals(int sig) { + unsigned int logopt = master_get_logopt(); pthread_t thid; int r_sig = sig; int status; @@ -1187,7 +1184,7 @@ static pthread_t do_signals(struct master *master, int sig) status = pthread_create(&thid, &th_attr_detached, do_notify_state, &r_sig); if (status) { - error(master->logopt, + error(logopt, "mount state notify thread create failed"); status = pthread_mutex_unlock(&mrc.mutex); if (status) @@ -1196,7 +1193,6 @@ static pthread_t do_signals(struct master *master, int sig) } mrc.thid = thid; - mrc.master = master; pthread_cleanup_push(do_master_cleanup_unlock, NULL); @@ -1214,7 +1210,7 @@ static pthread_t do_signals(struct master *master, int sig) static void *do_read_master(void *arg) { - struct master *master; + struct master *master = master_get_master(); unsigned int logopt; time_t age; int status; @@ -1223,7 +1219,6 @@ static void *do_read_master(void *arg) if (status) fatal(status); - master = mrc.master; age = mrc.age; logopt = master->logopt; @@ -1256,7 +1251,7 @@ static void *do_read_master(void *arg) master->readall = 1; - status = master_read_master(master, age); + status = master_read_master(age); master->readall = 0; @@ -1271,8 +1266,9 @@ static void *do_read_master(void *arg) return NULL; } -static int do_hup_signal(struct master *master) +static int do_hup_signal(void) { + struct master *master = master_get_master(); unsigned int logopt = master->logopt; time_t age = monotonic_time(NULL); pthread_t thid; @@ -1305,7 +1301,6 @@ static int do_hup_signal(struct master *master) } mrc.thid = thid; - mrc.master = master; mrc.age = age; pthread_cleanup_push(do_master_cleanup_unlock, NULL); @@ -1325,6 +1320,7 @@ static int do_hup_signal(struct master *master) /* Deal with all the signal-driven events in the state machine */ static void *signal_handler(void *arg) { + struct master *master = master_get_master(); sigset_t signalset; int sig; @@ -1340,13 +1336,13 @@ static void *signal_handler(void *arg) case SIGINT: case SIGUSR2: master_mutex_lock(); - if (list_empty(&master_list->completed)) { - if (__master_list_empty(master_list)) { + if (list_empty(&master->completed)) { + if (__master_list_empty()) { master_mutex_unlock(); return NULL; } } else { - if (master_done(master_list)) { + if (master_done()) { master_mutex_unlock(); return NULL; } @@ -1356,11 +1352,11 @@ static void *signal_handler(void *arg) master_mutex_unlock(); case SIGUSR1: - do_signals(master_list, sig); + do_signals(sig); break; case SIGHUP: - do_hup_signal(master_list); + do_hup_signal(); break; default: @@ -1498,7 +1494,7 @@ static void handle_cmd_pipe_fifo_message(int fd) return; } - ap = master_find_mapent_by_devid(master_list, devid); + ap = master_find_mapent_by_devid(devid); if (!ap) { error(LOGOPT_ANY, "can't locate autofs_point for device id %ld.", devid); return; @@ -1774,6 +1770,7 @@ void handle_mounts_startup_cond_destroy(void *arg) static void handle_mounts_cleanup(void *arg) { + struct master *master = master_get_master(); struct autofs_point *ap; char buf[MAX_ERR_BUF]; unsigned int clean = 0, submount, logopt; @@ -1803,7 +1800,7 @@ static void handle_mounts_cleanup(void *arg) } /* Don't signal the handler if we have already done so */ - if (!list_empty(&master_list->completed)) + if (!list_empty(&master->completed)) pending = 1; info(logopt, "shut down path %s", ap->path); @@ -2180,8 +2177,9 @@ static void remove_empty_args(char **argv, int *argc) *argc = j; } -static void do_master_list_reset(struct master *master) +static void do_master_list_reset(void) { + struct master *master = master_get_master(); struct list_head *head, *p, *n; master_mutex_lock(); @@ -2205,7 +2203,7 @@ static void do_master_list_reset(struct master *master) master_mutex_unlock(); } -static int do_master_read_master(struct master *master, time_t *age, int wait) +static int do_master_read_master(time_t *age, int wait) { sigset_t signalset, savesigset; /* Wait must be at least 1 second */ @@ -2223,10 +2221,10 @@ static int do_master_read_master(struct master *master, time_t *age, int wait) while (1) { struct timespec t = { retry_wait, 0 }; - do_master_list_reset(master); + do_master_list_reset(); *age = monotonic_time(NULL); - if (master_read_master(master, *age)) { + if (master_read_master(*age)) { ret = 1; break; } @@ -2251,6 +2249,7 @@ static int do_master_read_master(struct master *master, time_t *age, int wait) int main(int argc, char *argv[]) { + struct master *master = NULL; int res, opt, status; int logpri = -1; unsigned int flags; @@ -2505,7 +2504,7 @@ int main(int argc, char *argv[]) struct mapent_cache *nc; const char *type = NULL; const char *name = NULL; - const char *master = NULL; + const char *map = NULL; if (argc > 0) { if (argc >= 2) { @@ -2513,7 +2512,7 @@ int main(int argc, char *argv[]) name = argv[1]; } if (argc == 3) - master = argv[2]; + map = argv[2]; } status = pthread_key_create(&key_thread_stdenv_vars, @@ -2533,11 +2532,9 @@ int main(int argc, char *argv[]) exit(1); } - if (master) - master_list = master_new(NULL, timeout, flags); - else - master_list = master_new(master, timeout, flags); - if (!master_list) { + if (!master_new(map, timeout, flags)) + master = master_get_master(); + if (!master) { printf("%s: can't create master map", program); macro_free_global_table(); exit(1); @@ -2547,27 +2544,27 @@ int main(int argc, char *argv[]) master_init_scan(); - nc = cache_init_null_cache(master_list); + nc = cache_init_null_cache(master); if (!nc) { printf("%s: failed to init null map cache for %s", - program, master_list->name); + program, master->name); macro_free_global_table(); exit(1); } - master_list->nc = nc; + master->nc = nc; - lookup_nss_read_master(master_list, 0); + lookup_nss_read_master(master, 0); if (type) { const char *map = basename(name); if (!map) printf("%s: invalid map name %s\n", program, name); else - dump_map(master_list, type, map); + dump_map(type, map); } else - master_show_mounts(master_list); + master_show_mounts(); - head = &master_list->mounts; + head = &master->mounts; p = head->next; while (p != head) { entry = list_entry(p, struct master_mapent, list); @@ -2575,18 +2572,20 @@ int main(int argc, char *argv[]) master_free_mapent_sources(entry, 1); master_free_mapent(entry); } - master_kill(master_list); + master_kill(); macro_free_global_table(); exit(0); } - if (argc == 0) - master_list = master_new(NULL, timeout, flags); - else - master_list = master_new(argv[0], timeout, flags); - - if (!master_list) { + if (argc == 0) { + if (!master_new(NULL, timeout, flags)) + master = master_get_master(); + } else { + if (!master_new(argv[0], timeout, flags)) + master = master_get_master(); + } + if (!master) { printf("%s: can't create master map %s", program, argv[0]); macro_free_global_table(); exit(1); @@ -2632,7 +2631,7 @@ int main(int argc, char *argv[]) } info(logging, "Starting automounter version %s, master map %s", - version, master_list->name); + version, master->name); info(logging, "using kernel protocol version %d.%02d", get_kver_major(), get_kver_minor()); @@ -2641,7 +2640,7 @@ int main(int argc, char *argv[]) if (status) { logerr("%s: failed to create thread data key for std env vars!", program); - master_kill(master_list); + master_kill(); if (start_pipefd[1] != -1) { res = write(start_pipefd[1], pst_stat, sizeof(*pst_stat)); close(start_pipefd[1]); @@ -2655,7 +2654,7 @@ int main(int argc, char *argv[]) if (status) { logerr("%s: failed to create thread data key for attempt ID!", program); - master_kill(master_list); + master_kill(); if (start_pipefd[1] != -1) { res = write(start_pipefd[1], pst_stat, sizeof(*pst_stat)); close(start_pipefd[1]); @@ -2669,7 +2668,7 @@ int main(int argc, char *argv[]) if (!start_cmd_pipe_handler()) { logerr("%s: failed to create command pipe handler thread!", program); - master_kill(master_list); + master_kill(); if (start_pipefd[1] != -1) { res = write(start_pipefd[1], pst_stat, sizeof(*pst_stat)); close(start_pipefd[1]); @@ -2681,7 +2680,7 @@ int main(int argc, char *argv[]) if (!alarm_start_handler()) { logerr("%s: failed to create alarm handler thread!", program); - master_kill(master_list); + master_kill(); if (start_pipefd[1] != -1) { res = write(start_pipefd[1], pst_stat, sizeof(*pst_stat)); close(start_pipefd[1]); @@ -2693,7 +2692,7 @@ int main(int argc, char *argv[]) if (!st_start_handler()) { logerr("%s: failed to create FSM handler thread!", program); - master_kill(master_list); + master_kill(); if (start_pipefd[1] != -1) { res = write(start_pipefd[1], pst_stat, sizeof(*pst_stat)); close(start_pipefd[1]); @@ -2718,14 +2717,16 @@ int main(int argc, char *argv[]) dh_tirpc = dlopen("libtirpc.so.3", RTLD_NOW); #endif - master_read = master_read_master(master_list, age); + master_read = master_read_master(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, &age, master_wait)) { + if (!do_master_read_master(&age, master_wait)) { + struct master *master = master_get_master(); + logmsg("%s: warning: could not read at least one " "map source after waiting, continuing ...", program); @@ -2734,12 +2735,12 @@ int main(int argc, char *argv[]) * we have anyway. */ master_mutex_lock(); - master_list->readall = 1; - master_mount_mounts(master_list, age); - master_list->readall = 0; + master->readall = 1; + master_mount_mounts(age); + master->readall = 0; - if (list_empty(&master_list->mounts)) - warn(master_list->logopt, "no mounts in table"); + if (list_empty(&master->mounts)) + warn(master_get_logopt(), "no mounts in table"); master_mutex_unlock(); } } @@ -2766,7 +2767,7 @@ int main(int argc, char *argv[]) signal_handler(NULL); } - master_kill(master_list); + master_kill(); finish_cmd_pipe_handler(); diff --git a/daemon/master.c b/daemon/master.c index e1357c44b..d85dd8975 100644 --- a/daemon/master.c +++ b/daemon/master.c @@ -102,6 +102,11 @@ void map_module_lock_cleanup(void *arg) map_module_unlock(map); } +struct master *master_get_master(void) +{ + return master_list; +} + int master_add_autofs_point(struct master_mapent *entry, unsigned logopt, unsigned nobind, unsigned ghost, int submount) { @@ -688,8 +693,9 @@ void master_source_lock_cleanup(void *arg) return; } -struct master_mapent *master_find_mapent(struct master *master, const char *path) +struct master_mapent *master_find_mapent(const char *path) { + struct master *master = master_list; struct list_head *head, *p; head = &master->mounts; @@ -705,8 +711,9 @@ struct master_mapent *master_find_mapent(struct master *master, const char *path return NULL; } -struct autofs_point *master_find_mapent_by_devid(struct master *master, dev_t devid) +struct autofs_point *master_find_mapent_by_devid(dev_t devid) { + struct master *master = master_list; struct autofs_point *ap = NULL; struct list_head *head, *p; @@ -733,8 +740,9 @@ struct autofs_point *master_find_mapent_by_devid(struct master *master, dev_t de return ap; } -static unsigned int master_partial_match_amd_mapent(struct master *master, const char *path) +static unsigned int master_partial_match_amd_mapent(const char *path) { + struct master *master = master_list; struct list_head *head, *p; size_t path_len = strlen(path); int ret = 0; @@ -780,7 +788,7 @@ static unsigned int master_partial_match_amd_mapent(struct master *master, const return ret; } -struct master_mapent *master_new_mapent(struct master *master, const char *path, time_t age) +struct master_mapent *master_new_mapent(const char *path, time_t age) { struct master_mapent *entry; int status; @@ -801,7 +809,7 @@ struct master_mapent *master_new_mapent(struct master *master, const char *path, entry->len = strlen(tmp); entry->age = age; - entry->master = master; + entry->master = master_list; entry->maps = NULL; entry->ap = NULL; @@ -815,10 +823,9 @@ struct master_mapent *master_new_mapent(struct master *master, const char *path, return entry; } -void master_add_mapent(struct master *master, struct master_mapent *entry) +void master_add_mapent(struct master_mapent *entry) { - list_add_tail(&entry->list, &master->mounts); - return; + list_add_tail(&entry->list, &master_list->mounts); } void master_remove_mapent(struct master_mapent *entry) @@ -882,14 +889,14 @@ void master_free_mapent(struct master_mapent *entry) return; } -struct master *master_new(const char *name, unsigned int timeout, unsigned int flags) +int master_new(const char *name, unsigned int timeout, unsigned int flags) { struct master *master; char *tmp; master = malloc(sizeof(struct master)); if (!master) - return NULL; + return ENOMEM; if (!name) tmp = (char *) defaults_get_master_map(); @@ -898,7 +905,7 @@ struct master *master_new(const char *name, unsigned int timeout, unsigned int f if (!tmp) { free(master); - return NULL; + return ENOMEM; } master->name = tmp; @@ -917,13 +924,14 @@ struct master *master_new(const char *name, unsigned int timeout, unsigned int f INIT_LIST_HEAD(&master->mounts); INIT_LIST_HEAD(&master->completed); - return master; + master_list = master; + + return 0; } -static void master_update_amd_mount_section_mount(struct master *master, - const char *path, time_t age) +static void master_update_amd_mount_section_mount(const char *path, time_t age) { - unsigned int m_logopt = master->logopt; + unsigned int m_logopt = master_list->logopt; struct master_mapent *entry; struct map_source *source; unsigned int loglevel; @@ -933,7 +941,7 @@ static void master_update_amd_mount_section_mount(struct master *master, char *map; char *opts; - entry = master_find_mapent(master, path); + entry = master_find_mapent(path); if (!entry) return; @@ -997,9 +1005,9 @@ out: free(map); } -static void master_add_amd_mount_section_mounts(struct master *master, time_t age) +static void master_add_amd_mount_section_mounts(time_t age) { - unsigned int m_logopt = master->logopt; + unsigned int m_logopt = master_list->logopt; struct master_mapent *entry; struct map_source *source; unsigned int loglevel; @@ -1025,14 +1033,14 @@ static void master_add_amd_mount_section_mounts(struct master *master, time_t ag char *map = NULL; char *opts; - ret = master_partial_match_amd_mapent(master, path); + ret = master_partial_match_amd_mapent(path); if (ret) { /* If this amd entry is already present in the * master map it's not a duplicate, don't issue * an error message. */ if (ret == 1) { - master_update_amd_mount_section_mount(master, path, age); + master_update_amd_mount_section_mount(path, age); goto next; } info(m_logopt, @@ -1049,7 +1057,7 @@ static void master_add_amd_mount_section_mounts(struct master *master, time_t ag goto next; } - entry = master_new_mapent(master, path, age); + entry = master_new_mapent(path, age); if (!entry) { error(m_logopt, "failed to allocate new amd section mount %s", @@ -1114,7 +1122,7 @@ static void master_add_amd_mount_section_mounts(struct master *master, time_t ag entry->age = age; - master_add_mapent(master, entry); + master_add_mapent(entry); next: if (type) free(type); @@ -1129,8 +1137,9 @@ next: free(paths); } -static void wait_for_lookups_and_lock(struct master *master) +static void wait_for_lookups_and_lock(void) { + struct master *master = master_list; struct list_head *p, *head; int status; @@ -1162,8 +1171,9 @@ again: } } -int master_read_master(struct master *master, time_t age) +int master_read_master(time_t age) { + struct master *master = master_list; unsigned int logopt = master->logopt; struct mapent_cache *nc; int ret = 1; @@ -1172,7 +1182,7 @@ int master_read_master(struct master *master, time_t age) * We need to clear and re-populate the null map entry cache * before alowing anyone else to use it. */ - wait_for_lookups_and_lock(master); + wait_for_lookups_and_lock(); pthread_cleanup_push(master_mutex_lock_cleanup, NULL); if (master->nc) { cache_writelock(master->nc); @@ -1193,10 +1203,10 @@ int master_read_master(struct master *master, time_t age) master_init_scan(); lookup_nss_read_master(master, age); cache_unlock(nc); - master_add_amd_mount_section_mounts(master, age); + master_add_amd_mount_section_mounts(age); if (!master->read_fail) - master_mount_mounts(master, age); + master_mount_mounts(age); else { master->read_fail = 0; /* HUP signal sets master->readall == 1 only */ @@ -1204,10 +1214,10 @@ int master_read_master(struct master *master, time_t age) ret = 0; goto done; } else - master_mount_mounts(master, age); + master_mount_mounts(age); } - if (__master_list_empty(master)) + if (__master_list_empty()) warn(logopt, "no mounts in table"); done: pthread_cleanup_pop(1); @@ -1273,8 +1283,9 @@ done: return ret; } -void master_notify_state_change(struct master *master, int sig) +void master_notify_state_change(int sig) { + struct master *master = master_list; struct master_mapent *entry; struct autofs_point *ap; struct list_head *p; @@ -1451,8 +1462,9 @@ void check_update_map_sources(struct master_mapent *entry, int readall) return; } -int master_mount_mounts(struct master *master, time_t age) +int master_mount_mounts(time_t age) { + struct master *master = master_list; struct mapent_cache *nc = master->nc; struct list_head *p, *head; int cur_state; @@ -1693,11 +1705,12 @@ static int match_name(struct map_source *source, const char *name) return ret; } -int dump_map(struct master *master, const char *type, const char *name) +int dump_map(const char *type, const char *name) { + struct master *master = master_list; struct list_head *p, *head; - if (__master_list_empty(master)) { + if (__master_list_empty()) { printf("no master map entries found\n"); return 1; } @@ -1798,8 +1811,9 @@ int dump_map(struct master *master, const char *type, const char *name) return 0; } -int master_show_mounts(struct master *master) +int master_show_mounts(void) { + struct master *master = master_list; struct list_head *p, *head; printf("\nautofs dump map information\n" @@ -1815,7 +1829,7 @@ int master_show_mounts(struct master *master) printf("global options %s be appended to map entries\n", append); } - if (__master_list_empty(master)) { + if (__master_list_empty()) { printf("no master map entries found\n\n"); return 1; } @@ -1903,29 +1917,30 @@ int master_show_mounts(struct master *master) return 1; } -int __master_list_empty(struct master *master) +int __master_list_empty(void) { int res = 0; - if (list_empty(&master->mounts)) + if (list_empty(&master_list->mounts)) res = 1; return res; } -int master_list_empty(struct master *master) +int master_list_empty(void) { int res; master_mutex_lock(); - res = __master_list_empty(master); + res = __master_list_empty(); master_mutex_unlock(); return res; } -int master_done(struct master *master) +int master_done(void) { + struct master *master = master_list; struct list_head *head, *p; struct master_mapent *entry; int res = 0; @@ -1941,7 +1956,7 @@ int master_done(struct master *master) master_free_mapent(entry); } - if (__master_list_empty(master)) + if (__master_list_empty()) res = 1; return res; @@ -1952,12 +1967,14 @@ unsigned int master_get_logopt(void) return master_list ? master_list->logopt : LOGOPT_NONE; } -int master_kill(struct master *master) +int master_kill(void) { + struct master *master = master_list; + if (!master) return 1; - if (!master_list_empty(master)) + if (!master_list_empty()) return 0; if (master->name) diff --git a/daemon/master_parse.y b/daemon/master_parse.y index 087ff5b19..8ad5f5c9e 100644 --- a/daemon/master_parse.y +++ b/daemon/master_parse.y @@ -815,12 +815,11 @@ void master_init_scan(void) int master_parse_entry(const char *buffer, unsigned int default_timeout, unsigned int logging, time_t age) { - struct master *master = master_list; struct mapent_cache *nc; struct master_mapent *entry, *new; struct map_source *source; unsigned int logopt = logging; - unsigned int m_logopt = master->logopt; + unsigned int m_logopt = master_get_logopt(); size_t mp_len; int ret; @@ -840,7 +839,7 @@ int master_parse_entry(const char *buffer, unsigned int default_timeout, unsigne while (mp_len && path[--mp_len] == '/') path[mp_len] = 0; - nc = master->nc; + nc = master_get_master()->nc; /* Add null map entries to the null map cache */ if (type && !strcmp(type, "null")) { @@ -861,9 +860,9 @@ int master_parse_entry(const char *buffer, unsigned int default_timeout, unsigne } new = NULL; - entry = master_find_mapent(master, path); + entry = master_find_mapent(path); if (!entry) { - new = master_new_mapent(master, path, age); + new = master_new_mapent(path, age); if (!new) { local_free_vars(); return 0; @@ -981,7 +980,7 @@ int master_parse_entry(const char *buffer, unsigned int default_timeout, unsigne entry->age = age; if (new) - master_add_mapent(master, entry); + master_add_mapent(entry); local_free_vars(); diff --git a/include/automount.h b/include/automount.h index 7b7ee41b3..0be7003e4 100644 --- a/include/automount.h +++ b/include/automount.h @@ -410,7 +410,6 @@ struct master_readmap_cond { pthread_mutex_t mutex; pthread_cond_t cond; pthread_t thid; /* map reader thread id */ - struct master *master; time_t age; /* Last time read */ enum states state; /* Next state */ unsigned int signaled; /* Condition has been signaled */ diff --git a/include/master.h b/include/master.h index a5f876e2e..71610611f 100644 --- a/include/master.h +++ b/include/master.h @@ -81,6 +81,7 @@ int master_parse_entry(const char *, unsigned int, unsigned int, time_t); void master_mutex_lock(void); void master_mutex_unlock(void); void master_mutex_lock_cleanup(void *); +struct master *master_get_master(void); void master_set_default_timeout(void); void master_set_default_ghost_mode(void); int master_add_autofs_point(struct master_mapent *, unsigned, unsigned, unsigned, int); @@ -103,26 +104,26 @@ void master_source_writelock(struct master_mapent *); void master_source_readlock(struct master_mapent *); void master_source_unlock(struct master_mapent *); void master_source_lock_cleanup(void *); -struct master_mapent *master_find_mapent(struct master *, const char *); -struct autofs_point *master_find_mapent_by_devid(struct master *master, dev_t devid); -struct master_mapent *master_new_mapent(struct master *, const char *, time_t); -void master_add_mapent(struct master *, struct master_mapent *); +struct master_mapent *master_find_mapent(const char *); +struct autofs_point *master_find_mapent_by_devid(dev_t devid); +struct master_mapent *master_new_mapent(const char *, time_t); +void master_add_mapent(struct master_mapent *); 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 master_new(const char *, unsigned int, unsigned int); +int master_read_master(time_t); int master_notify_submount(struct autofs_point *, const char *path, enum states); -void master_notify_state_change(struct master *, int); +void master_notify_state_change(int); void check_update_map_sources(struct master_mapent *, int); -int master_mount_mounts(struct master *, time_t); -int dump_map(struct master *, const char *, const char *); -int master_show_mounts(struct master *); +int master_mount_mounts(time_t); +int dump_map(const char *, const char *); +int master_show_mounts(void); unsigned int master_get_logopt(void); -int __master_list_empty(struct master *); -int master_list_empty(struct master *); -int master_done(struct master *); -int master_kill(struct master *); +int __master_list_empty(void); +int master_list_empty(void); +int master_done(void); +int master_kill(void); void map_module_writelock(struct map_source *map); int map_module_try_writelock(struct map_source *map); void map_module_readlock(struct map_source *map); diff --git a/modules/mount_autofs.c b/modules/mount_autofs.c index b567fccde..b39d06cee 100644 --- a/modules/mount_autofs.c +++ b/modules/mount_autofs.c @@ -60,7 +60,6 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, time_t timeout = get_exp_timeout(ap, ap->entry->maps); unsigned logopt = ap->logopt; struct map_type_info *info; - struct master *master; struct master_mapent *entry; struct map_source *source; struct autofs_point *nap; @@ -161,9 +160,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name, MODPREFIX "mountpoint=%s what=%s options=%s", mountpoint, what, options); - master = ap->entry->master; - - entry = master_new_mapent(master, mountpoint, ap->entry->age); + entry = master_new_mapent(mountpoint, ap->entry->age); if (!entry) { error(ap->logopt, MODPREFIX "failed to malloc master_mapent struct");