autofs-5.1.9 - fix dont delay expire From: Ian Kent Commit 59c4617c4 ("autofs-5.1.8 - dont delay expire") introduced a regression in submount expire. It tuns out that not also waiting for submounts in state ST_SHUTDOWN to go away or return to ST_READY causes a synchronization problem. Signed-off-by: Ian Kent Fixes: commit 59c4617c4 ("autofs-5.1.8 - dont delay expire") --- CHANGELOG | 1 + daemon/master.c | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 7859ca28c..9a8e893c6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -39,6 +39,7 @@ - fix possible memory leak in mnts_get_expire_list(). - fix uninitialised list in struct master_mapent. - fix tsv memory leak in set_tsd_user_vars(). +- fix dont delay expire. 02/11/2023 autofs-5.1.9 - fix kernel mount status notification. diff --git a/daemon/master.c b/daemon/master.c index 98eaba051..817ca6e35 100644 --- a/daemon/master.c +++ b/daemon/master.c @@ -1243,9 +1243,9 @@ int master_notify_submount(struct autofs_point *ap, const char *path, enum state st_wait_task(found, state, 0); /* - * If our submount gets to state ST_SHUTDOWN_PENDING or - * ST_SHUTDOWN_FORCE we need to wait until it goes away - * or changes to state ST_SHUTDOWN or ST_READY. + * If our submount gets to state ST_SHUTDOWN, ST_SHUTDOWN_PENDING or + * ST_SHUTDOWN_FORCE we need to wait until it goes away or changes + * to ST_READY. */ while ((sbmnt = mnts_find_submount(path))) { struct timespec t = { 0, 300000000 }; @@ -1253,7 +1253,8 @@ int master_notify_submount(struct autofs_point *ap, const char *path, enum state st_mutex_lock(); if (!sbmnt->ap || - (sbmnt->ap->state != ST_SHUTDOWN_PENDING && + (sbmnt->ap->state != ST_SHUTDOWN && + sbmnt->ap->state != ST_SHUTDOWN_PENDING && sbmnt->ap->state != ST_SHUTDOWN_FORCE)) { ret = 0; st_mutex_unlock();