On Oct 9, 2020, at 4:43 AM, Daniel P. Berrangé
<berrange(a)redhat.com> wrote:
On Fri, Oct 09, 2020 at 04:31:54AM -0400, Matt Coleman wrote:
> Signed-off-by: Matt Coleman <matt(a)datto.com>
> ---
> src/hyperv/hyperv_driver.c | 15 +++++++++++----
> src/hyperv/hyperv_wmi_classes.h | 1 +
> 2 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c
> index 0b28c1e94b..89840f7ac4 100644
> --- a/src/hyperv/hyperv_driver.c
> +++ b/src/hyperv/hyperv_driver.c
> @@ -867,6 +867,10 @@ hypervDomainSuspend(virDomainPtr domain)
> int result = -1;
> hypervPrivate *priv = domain->conn->privateData;
> Msvm_ComputerSystem *computerSystem = NULL;
> + int requestedState = MSVM_COMPUTERSYSTEM_REQUESTEDSTATE_PAUSED;
> +
> + if (priv->wmiVersion == HYPERV_WMI_VERSION_V2)
> + requestedState = MSVM_COMPUTERSYSTEM_REQUESTEDSTATE_QUIESCE;
Is quiesce really what we want here ?
The libvirt Suspend/Resume APIs are specifically about pausing
execution of the guest CPUs.
IIUC, quiesce usually just refers to suspending I/O processing,
in order to allow snapshots to be taken, but CPUs stay running.
I agree that it’s an odd name, but that’s how Microsoft chose to
describe this RequestedState. It’s documented at the following link as...
"Quiesce (9)
Corresponds to CIM_EnabledLogicalElement.EnabledState = Quiesce,
Enabled but paused."
https://docs.microsoft.com/en-us/windows/win32/hyperv_v2/requeststatechan...
I didn’t believe the documentation when I first read it, so I paused a
VM in Hyper-V Manager and confirmed that its state was indeed Quiesce.
--
Matt