[PATCH v2 0/4] Fix stat() family ping/pong on expiring autofs mounts
From: Ian Kent
Date: Mon Mar 30 2020 - 20:54:20 EST
This patch series is meant to fix a case were a stat() family system
call is being done at the same time a mount point dentry is being
expired.
When this happens it results in a ping/pong of returning the stat() of
the mounted file system and stat() of the autofs file system.
What needs to be done here is ensure a consistent stat() return based
on the state of the mount at the time.
There are actually a number of cases and, unavoidably, there remains
inconsistency because stat family system calls are not meant to trigger
mounts to avoid mount storms. So they will still return the stat of the
autofs file system if not mounted and the stat of the mounted file
system if they are, including if they are being expired at the time of
the stat() call.
Some of these patches are based on other work that I'm doing as a
result of our recent discussions on the autofs kernel module. For
example the removal do_expire_wait() from autofs_d_manage() and
simplifying the called functions. And the last patch which adds
comments about cases of the autofs_mountpoint_changed() function.
In fact, as you though, there's not much left in autofs_d_manage()
in the endi.
But I'm not finished with the series yet and I need to get this bug
fixed.
Changes since v1.
- fix several grammatical mistakes.
---
Ian Kent (4):
autofs: dont call do_expire_wait() in autofs_d_manage()
autofs: remove rcu_walk parameter from autofs_expire_wait()
vfs: check for autofs expiring dentry in follow_automount()
autofs: add comment about autofs_mountpoint_changed()
fs/autofs/autofs_i.h | 2 +-
fs/autofs/dev-ioctl.c | 2 +-
fs/autofs/expire.c | 5 +---
fs/autofs/root.c | 58 ++++++++++++++++++++++++++++++++-----------------
fs/namei.c | 13 +++++++++--
5 files changed, 52 insertions(+), 28 deletions(-)
--
Ian