qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Resend][PATCH] qga-win: don't hang if vss hold writes


From: Michael Roth
Subject: Re: [Qemu-devel] [Resend][PATCH] qga-win: don't hang if vss hold writes timeout
Date: Wed, 25 Oct 2017 17:33:52 -0500
User-agent: alot/0.6

Quoting Chen Hanxiao (2017-10-17 01:41:42)
> From: Chen Hanxiao <address@hidden>
> 
> When VM is in a heavy IO, if the command "guest-fsfreeze-freeze"
> is executed, VSS may timeout when trying to hold writes.
> 
> Inside guest, Event ID 12298(VSS_ERROR_HOLD_WRITES_TIMEOUT)
> is logged in the Event Viewer.
> 
> At that time, if we call AbortBackup, qga may hang forever.
> 
> This patch will solve this issue.
> 
> Cc: Michael Roth <address@hidden>
> Cc: Tomoki Sekiyama <address@hidden>
> 
> Reviewed-by: Tomoki Sekiyama <address@hidden>
> Signed-off-by: Chen Hanxiao <address@hidden>

Thanks, applied to QGA tree:

  https://github.com/mdroth/qemu/commits/qga

Unless I missed another thread though, I don't think Tomoki gave it
an actual Reviewed-by, just a "looks good", so I've removed it from
the patch. (A "looks good" is certainly helpful, particularly in this
case, but actual Signed-off-by/Tested-by/Reviewed-by tags should
only be added if they were explicitly provided by the person in
question since they imply some level of accountability if something
goes wrong. Less formal tags like Suggested-by/Reported-by/etc are
generally okay though).

> ---
>  qga/vss-win32/requester.cpp | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/qga/vss-win32/requester.cpp b/qga/vss-win32/requester.cpp
> index 301762d8b1..3d9c9716c0 100644
> --- a/qga/vss-win32/requester.cpp
> +++ b/qga/vss-win32/requester.cpp
> @@ -419,6 +419,16 @@ void requester_freeze(int *num_vols, ErrorSet *errset)
>              break;
>          }
>      }
> +
> +    if (wait_status == WAIT_TIMEOUT) {
> +        err_set(errset, E_FAIL,
> +                "timeout when try to receive Frozen event from VSS 
> provider");
> +        /* If we are here, VSS had timeout.
> +         * Don't call AbortBackup, just return directly.
> +         */
> +        goto out1;
> +    }
> +
>      if (wait_status != WAIT_OBJECT_0) {
>          err_set(errset, E_FAIL,
>                  "couldn't receive Frozen event from VSS provider");
> @@ -432,6 +442,8 @@ out:
>      if (vss_ctx.pVssbc) {
>          vss_ctx.pVssbc->AbortBackup();
>      }
> +
> +out1:
>      requester_cleanup();
>      CoUninitialize();
>  }
> -- 
> 2.13.5
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]