|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v9 01/17] libxl: change ao_device_remove to ao_device
Roger Pau Monne writes ("[PATCH v9 01/17] libxl: change ao_device_remove to
ao_device"):
> Introduce a new structure to track state of device backends, that will
> be used in following patches on this series.
>
> This structure if used for both device creation and device
> destruction and removes libxl__ao_device_remove.
>
> Changes since v8:
>
> * Don't wait for QDISK, VKBD or VFB to disconnect, since Qemu doesn't
> honour the disconnection protocol.
Following discussion in front of a whiteboard (thanks also to Ian C
and Stefano), we have concluded that this needs to be done
differently. Here is the comment I promised Roger I would write
Ian.
Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
/*
* Algorithm for handling device removal (including domain
* destruction). This is somewhat subtle because we may already have
* killed the domain and caused the death of qemu.
*
* In current versions of qemu there is no mechanism for ensuring that
* the resources used by its devices (both emulated and any PV devices
* provided by qemu) are freed (eg, fds closed) before it shuts down,
* and no confirmation from a terminating qemu back to the toolstack.
*
* This will need to be fixed in Xen 4.3. In the meantime (Xen 4.2)
* we implement a bodge.
*
* WE WANT TO UNPLUG WE WANT TO SHUT DOWN OR DESTROY
* | |
* | LIBXL SENDS SIGHUP TO QEMU
* | .....................|........................
* | : XEN 4.3+ PLANNED | :
* | : QEMU TEARS DOWN ALL DEVICES :
* | : FREES RESOURCES (closing fds) :
* | : SETS PV BACKENDS TO STATE 5, :
* | : waits for PV frontends to shut down :
* | : SETS PV BACKENDS TO STATE 6 :
* | : | :
* | : QEMU NOTIFIES TOOLSTACK (via :
* | : xenstore) that it is exiting :
* | : QEMU EXITS (parent may be init) :
* | : | :
* | : TOOLSTACK WAITS FOR QEMU :
* | : notices qemu has finished :
* | :....................|.......................:
* | .--------------------'
* V V
* for each device
* we want to unplug/remove
* ..................|...........................................
* : V XEN 4.2 RACY BODGE :
* : device is provided by qemu :
* : | `-----------. :
* : something| V :
* : else, eg| domain (that is domain for which :
* : blkback| this PV device is the backend, :
* : | which might be the stub dm) :
* : | is still alive? :
* : | | | :
* : | |alive |dead :
* : |<-----------------' | :
* : | hopefully qemu is | :
* : | still running | :
* :............|................. | :
* ,----->| : we may be racing :
* | backend state? : with qemu's death :
* ^ | | : | :
* xenstore| |other |6 : WAIT 2.0s :
* conflict| | | : TIMEOUT :
* | WRITE B.E. | : | :
* | STATE:=5 | : hopefully qemu has :
* `---' | | : gone by now and :
* |ok | : freed its resources :
* | | : | :
* WAIT FOR | : SET B.E. :
* STATE==6 | : STATE:=6 :
* / | | :..........|...................:
* timeout/ ok| | |
* / | | |
* | RUN HOTPLUG <-'<----------------'
* | SCRIPT
* | |
* `---> NUKE
* BACKEND
* |
* DONE.
*/
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |