[libvirt] [PATCH libvirt-tck] bhyve: reconnect to domains after libvirtd restart

Ján Tomko jtomko at redhat.com
Wed Jul 16 11:24:09 UTC 2014


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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140716/8b84a860/attachment-0001.sig>


More information about the libvir-list mailing list