Hello!

On Jan 17, 2012, at 4:43 AM, Lai Siyao wrote:
> > Normally lustre client doesn't fetch any child lock for lookup(IT_OPEN), 
> > but a child dentry will be inserted into hash, however this dentry is 
> > marked INVALID, and it will be freed after file->release(), that means, no 
> > other processes will use the dentry (in this case other processes will 
> > create another dentry for this file and add to hash too). So Oleg means a 
> > dentry may be inserted into hash without LOOKUP lock, but this dentry won't 
> > be used by others, so it will not cause the race you mentioned.
> I see. mdc_intent_open_pack() only asks for child OPEN and parent UPDATE 
> lock. Thanks very much!
> No, generally only nfsd-exported lustre client requests child OPEN lock.

In fact we only did this for NFS case because that was the biggest abuser of 
repeat open-close at the same time.

And at the time there was a hard limit on number of locks a client can cache 
and this caused extra slowdowns in mdtest-like workloads
where opens were slowed down by need to also cancel locks before doing opens.

I think attempting to revive the "always grant open lock on opens" logic might 
be worthwhile.

Bye,
    Oleg
--
Oleg Drokin
Senior Software Engineer
Whamcloud, Inc.

_______________________________________________
Lustre-discuss mailing list
[email protected]
http://lists.lustre.org/mailman/listinfo/lustre-discuss

Reply via email to