Commit 1684b2bb authored by Ian Kent's avatar Ian Kent Committed by Linus Torvalds

[PATCH] autofs4: bad lookup fix

For browsable autofs maps, a mount request that arrives at the same time an
expire is happening can fail to perform the needed mount.

This happens becuase the directory exists and so the revalidate succeeds when
we need it to fail so that lookup is called on the same dentry to do the
mount.  Instead lookup is called on the next path component which should be
whithin the mount, but the parent isn't mounted.

The solution is to allow the revalidate to continue and perform the mount as
no directory creation (at mount time) is needed for browsable mount entries.
Signed-off-by: default avatarIan Kent <raven@themaw.net>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent cc9acc88
...@@ -306,7 +306,14 @@ static int try_to_fill_dentry(struct dentry *dentry, ...@@ -306,7 +306,14 @@ static int try_to_fill_dentry(struct dentry *dentry,
DPRINTK("expire done status=%d", status); DPRINTK("expire done status=%d", status);
return 0; /*
* If the directory still exists the mount request must
* continue otherwise it can't be followed at the right
* time during the walk.
*/
status = d_invalidate(dentry);
if (status != -EBUSY)
return 0;
} }
DPRINTK("dentry=%p %.*s ino=%p", DPRINTK("dentry=%p %.*s ino=%p",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment