On Wed, May 09, 2012 at 09:49:29PM +0800, Liu Yuan wrote: > I am more fond of binary tuple of get/put, instead of triple tuple API. > With RCU, we could get this finer API back and it's also a very simple > solution. You need the sample API with RCU if you want to do the simples thing in the places grabbing the additional references - the places that potentially grab the first reference need to check that it's not dead and only in the RCU grace period at that point, while others don't. Compare to iget/igrab and dget/dref in the Linux kernel. > >> > 3) need to pass vnode_info everywhere and change internal > >> > API a lot. > > It's not all that much of a change. In fact I'd like to do bigger > > changes eventually to pass proper objects down the cluster OP path > > instead of the current high number of individually passed arguments. > > > > > Okay, it's better for us to see the whole picture. Actually, I am most > concerned of extra argument to pass vnode_info everywhere, If we can get > a more reasonable argument structure, I'll calm down about it. Better calling conventions are just something spinning in my head right now, I'd rather get this old race fixed and other concurrency issues like the pending list sorted out before doing cleanup passes like that. |