mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
[PATCH] autofs4: need to invalidate children on tree mount expire
I've found a case where invalid dentrys in a mount tree, waiting to be cleaned up by d_invalidate, prevent the expected expire. In this case dentrys created during a lookup for which a mount fails or has no entry in the mount map contribute to the d_count of the parent dentry. These dentrys may not be invalidated prior to comparing the interanl usage count of valid autofs dentrys against the dentry d_count which makes a mount tree appear busy so it doesn't expire. Signed-off-by: Ian Kent <raven@themaw.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
a2f20c7c27
commit
f9022f6633
@ -174,6 +174,12 @@ static int autofs4_tree_busy(struct vfsmount *mnt,
|
||||
struct autofs_info *ino = autofs4_dentry_ino(p);
|
||||
unsigned int ino_count = atomic_read(&ino->count);
|
||||
|
||||
/*
|
||||
* Clean stale dentries below that have not been
|
||||
* invalidated after a mount fail during lookup
|
||||
*/
|
||||
d_invalidate(p);
|
||||
|
||||
/* allow for dget above and top is already dgot */
|
||||
if (p == top)
|
||||
ino_count += 2;
|
||||
|
Loading…
Reference in New Issue
Block a user