qga-win: don't hang if vss hold writes timeout
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 <mdroth@linux.vnet.ibm.com> Cc: Tomoki Sekiyama <tomoki.sekiyama@gmail.com> Signed-off-by: Chen Hanxiao <chenhanxiao@gmail.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
This commit is contained in:
parent
ae49fbbcd8
commit
4d80d20fe1
@ -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();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user