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

Reply via email to