Ram Pai wrote:
On Fri, 2005-11-18 at 09:12, William H. Taber wrote:
I think the problem is with cached_lookup(). It is the only place which
calls ->revalidate() holding the parent's inode-semaphore AFAICT.
note: cached_lookup() is only called from __lookup_hash() and
__lookup_hash() is always called holding the semaphore.
VFS experts agree?
RP
Ram,
Lookup_one_len calls lookup_hash and it is the callers of lookup_one_len
that are problematical. Just as an example, lookup_one_len is called
from nfs_sillyrename which is called, among other places in the
nfs_rename code. In that path the parent i_sem is obtained in do_rename
in the vfs code (namei.c). I would think that it would be extremely
difficult to to change that usage. The alternative is to move the
obtaining of the parent i_sem from real_lookup to do_lookup. We would
also have to put the locking around the d_revalidate call at
return_reval in __link_path_walk.
Again, what do the VFS experts think?
Will Taber
_______________________________________________
autofs mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/autofs