Re: [PATCH 2/2] KVM: Convert read-only users of vm_list to RCU

Avi Kivity
2011-02-10T14:26:50Z

On 02/10/2011 03:47 PM, Jan Kiszka wrote:
> >>
> >> Accept for mmu_shrink, which is write but not delete, thus works without
> >> that slow synchronize_rcu.
> >
> > I don't really see how you can implement list_move_rcu(), it has to be
> > atomic or other users will see a partial vm_list.
>
> Right, even if we synchronized that step cleanly, rcu-protected users
> could miss the moving vm during concurrent list walks.
>
> What about using a separate mutex for protecting vm_list instead?
> Unless I missed some detail, mmu_shrink should allow blocking.

What else does kvm_lock protect?

I think we could simply reduce the amount of time we hold kvm_lock.
Pick a vm, ref it, list_move_tail(), unlock, then do the actual
shrinking. Of course taking a ref must be done carefully, we might
already be in kvm_destroy_vm() at that time.

--
error compiling committee.c: too many arguments to function