[Sheepdog] race window accessing current_vnode_info?
Liu Yuan
namei.unix at gmail.com
Sat May 5 10:22:16 CEST 2012
On 05/05/2012 03:47 PM, Yunkai Zhang wrote:
> Hi guys:
>
> I have tried two methods to fix this problem.
>
> =The first method=
> 1) Allow multiple version vnode_info exists
> 2) Before we call queue_work(), we make refcnt++ of the newest version
> of vnode_info,
> and pass a pointer which references this vnode_info to work.fn(),
> so that all other
> functions can access vnode_info by this pointer.
> 3) make refcnt-- in work.done().
>
> Because these operations: refcnt++, refcnt-- and updating/deleting are
> all in main thread,
> we can keep them lock-free.
>
> But we should change so many functions' prototype: add a pointer
> parameter to reference one of vnode_info.
>
> =The second method=
> Introduce userspace RCU library. I found it can make program simple
> and clarity. But It will increase the dependence on third-party
> libraries for sheep.
>
> I want to use the second method:)
>
> What is your opinions?
I am +1 for introducing RCU. I think we can't avoid it completely later
when we introduce more and more internal intertwined structuring objects.
Thanks,
Yuan
More information about the sheepdog
mailing list