[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC] domctl: improve locking during domain destruction
>>> On 01.09.17 at 18:28, <andrew.cooper3@xxxxxxxxxx> wrote: > On 01/09/17 17:18, Jan Beulich wrote: >> There is no need to hold the global domctl lock while across >> domain_kill() - the domain lock is fully sufficient here. >> >> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> >> --- >> Sadly so far we haven't had any feedback on this change from the people >> who observed an issue apparently resulting from heavy contention here. >> Hence the RFC. >> >> Obviously other domctl-s could benefit from similar adjustments, so >> this is meant to be just a start. > > What is the expected ordering of the global domctl lock and perdomain > domctl locks? I'd expect the domain locks to nest inside the global domctl one, but I wouldn't want to spell this out anywhere until we actually have a case where both need to be acquired (and I would hope such a case to never arise). Or (I didn't check this) maybe we already have cases where the per-domain lock is being acquired with the global domctl one being held, even without this suggested adjustment. > The current uses appear a little ad-hoc. Is there anything we can do to > more strongly enforce the expected behaviour? Expected behavior of what? >> --- a/xen/common/domain.c >> +++ b/xen/common/domain.c >> @@ -619,13 +619,16 @@ int domain_kill(struct domain *d) >> if ( d == current->domain ) >> return -EINVAL; >> >> - /* Protected by domctl_lock. */ >> + /* Protected by d->domain_lock. */ >> switch ( d->is_dying ) >> { >> case DOMDYING_alive: >> + domain_unlock(d); >> domain_pause(d); >> + domain_lock(d); >> + if ( d->is_dying != DOMDYING_alive ) >> + return domain_kill(d); > > Comment about recursion safety? I can certainly add one, albeit in the case here I'm not really convinced it is necessary. Would you be happy with /* * With the domain lock dropped, d->is_dying may have changed. Call * ourselves recursively if so, which is safe as then we won't come * back here. */ ? Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |