|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 05/15] libxl: change libxl__ao_device_remove to libxl__ao_device
Roger Pau Monne writes ("Re: [PATCH v2 05/15] libxl: change
libxl__ao_device_remove to libxl__ao_device"):
> Ian Jackson wrote:
> > Roger Pau Monne writes ("[PATCH v2 05/15] libxl: change
> > libxl__ao_device_remove to libxl__ao_device"):
> >> diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
> >> index ae5527b..b62110a 100644
> >> --- a/tools/libxl/libxl_internal.h
> >> +++ b/tools/libxl/libxl_internal.h
> >> @@ -1802,6 +1795,44 @@ _hidden void
> >> libxl__bootloader_init(libxl__bootloader_state *bl);
> > ...
> >> +{
> >> + aorm->ao = ao;
> >> + aorm->active = 1;
> >> + aorm->rc = 0;
> >> + aorm->base = base;
> >> +}
> >
> > I think a function "init" should set "active" to 0, surely ?
> > Since the operation has not in fact been started. So perhaps this
> > should just be a memset.
>
> Forget to answer this, we cannot use active = 0 at init because in the
> hypothetical case that a device add/remove finished before queuing all
> the others (so the others would be active == 0) it would mark the ao as
> complete, since it would see all other operations as finished.
Hmmm. I see. Yes.
I think you need to rename _init to _prepare or something then. And
it will then need a comment explaining the semantics. Are you allowed
to call the operation start function without calling _prepare, for
example? Do you have to take any destruction steps after calling just
prepare but changing your mind ? (answer seems to be "no") etc.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |