OpenCloudOS-Kernel/fs/autofs4
Ian Kent 26e81b3142 autofs4: fix pending checks
There are two cases for which a dentry that has a pending mount request
does not wait for completion.  One is via autofs4_revalidate() and the
other via autofs4_follow_link().

In revalidate, after the mount point directory is created, but before the
mount is done, the check in try_to_fill_dentry() can can fail to send the
dentry to the wait queue since the dentry is positive and the lookup flags
may contain only LOOKUP_FOLLOW.  Although we don't trigger a mount for the
LOOKUP_FOLLOW flag, if ther's one pending we might as well wait and use
the mounted dentry for the lookup.

In autofs4_follow_link() the dentry is not checked to see if it is pending
so it may fail to call try_to_fill_dentry() and not wait for mount
completion.

A dentry that is pending must always be sent to the wait queue.

Signed-off-by: Ian Kent <raven@themaw.net>
Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-07-24 10:47:32 -07:00
..
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
autofs_i.h autofs4: fix waitq memory leak 2008-07-24 10:47:32 -07:00
expire.c autofs: path_{get,put}() cleanups 2008-05-01 08:04:01 -07:00
init.c [PATCH] AUTOFS: Make sure all dentries refs are released before calling kill_anon_super() 2006-10-11 11:14:25 -07:00
inode.c autofs4: fix waitq locking 2008-07-24 10:47:32 -07:00
root.c autofs4: fix pending checks 2008-07-24 10:47:32 -07:00
symlink.c [PATCH] mark struct inode_operations const 1 2007-02-12 09:48:46 -08:00
waitq.c autofs4: indirect dentry must almost always be positive 2008-07-24 10:47:32 -07:00