
On 06/29/2014 06:06 PM, Roman Bogorodskiy wrote:
Try to reconnect to the running domains after libvirtd restart. To achieve that, do:
* Save domain state - Modify virBhyveProcessStart() to save domain state to the state dir - Modify virBhyveProcessStop() to cleanup the pidfile and the state
* Detect if the state information loaded from the driver's state dir matches the actual state. Consider domain active if: - PID it points to exist - Process title of this PID matches the expected one with the domain name
Otherwise, mark the domain as shut off.
Note: earlier development bhyve versions before FreeBSD 10.0-RELEASE didn't set proctitle we expect, so the current code will not detect it. I don't plan adding support for this unless somebody requests this. --- src/bhyve/bhyve_driver.c | 18 ++++++++++ src/bhyve/bhyve_process.c | 91 +++++++++++++++++++++++++++++++++++++++++++++++ src/bhyve/bhyve_process.h | 2 ++ 3 files changed, 111 insertions(+)
diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index eb5fc95..4c7596e 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -1151,6 +1151,8 @@ bhyveStateInitialize(bool priveleged ATTRIBUTE_UNUSED, virStateInhibitCallback callback ATTRIBUTE_UNUSED, void *opaque ATTRIBUTE_UNUSED) { + virConnectPtr conn = NULL; + if (!priveleged) { VIR_INFO("Not running priveleged, disabling driver"); return 0; @@ -1199,6 +1201,15 @@ bhyveStateInitialize(bool priveleged ATTRIBUTE_UNUSED, }
if (virDomainObjListLoadAllConfigs(bhyve_driver->domains, + BHYVE_STATE_DIR, + NULL, 1, + bhyve_driver->caps, + bhyve_driver->xmlopt, + 1 << VIR_DOMAIN_VIRT_BHYVE, + NULL, NULL) < 0) + goto cleanup; + + if (virDomainObjListLoadAllConfigs(bhyve_driver->domains, BHYVE_CONFIG_DIR, BHYVE_AUTOSTART_DIR, 0, bhyve_driver->caps, @@ -1207,9 +1218,16 @@ bhyveStateInitialize(bool priveleged ATTRIBUTE_UNUSED, NULL, NULL) < 0) goto cleanup;
+ conn = virConnectOpen("bhyve:///system");
The connection does not seem to be used anywhere. QEMU driver uses it for: qemuTranslateDiskSourcePool qemuProcessFiltersInstantiate qemuProcessRecoverJob Neither of which is done in the bhyve driver. ACK with the conn removed. Jan