Quoting Sameeh Jubran (2017-03-21 09:14:35)
> Errors that are related to ur inner implementation for the thaw command
> shouldn't be displayed to the user.
> 
> Signed-off-by: Sameeh Jubran <sam...@daynix.com>
> ---
>  qga/vss-win32/requester.cpp | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/qga/vss-win32/requester.cpp b/qga/vss-win32/requester.cpp
> index 0cd2f0e..272e71b 100644
> --- a/qga/vss-win32/requester.cpp
> +++ b/qga/vss-win32/requester.cpp
> @@ -463,7 +463,7 @@ void requester_thaw(int *num_vols, ErrorSet *errset)
>              hr = WaitForAsync(pAsync);
>          }
>          if (FAILED(hr)) {
> -            err_set(errset, hr, "failed to complete backup");

We cannot do this. If the freeze operation didn't successfully maintain
the frozen state for entire duration we *must* report an error to the
user, otherwise users have no way to know that their snapshot might be
completely corrupted. Well, I suppose they can look at
guest-fsfreeze-thaw's return value and check that it matches the number
of volumes that were originally frozen, but that aspect is intended as a
sanity check to identify situations outside of qemu-ga's control, like
another user/application unfreezing the filesystems before qemu-ga. This
situation *is* within qemu-ga's control, and should be reported as an
error. Same for the other failures below.

> +            fprintf(stderr, "failed to complete backup");
>          }
>          break;
> 
> @@ -480,18 +480,18 @@ void requester_thaw(int *num_vols, ErrorSet *errset)
> 
>      case VSS_E_UNEXPECTED_PROVIDER_ERROR:
>          if (WaitForSingleObject(vss_ctx.hEventTimeout, 0) != WAIT_OBJECT_0) {
> -            err_set(errset, hr, "unexpected error in VSS provider");
> +            fprintf(stderr, "unexpected error in VSS provider");
>              break;
>          }
>          /* fall through if hEventTimeout is signaled */
> 
>      case (HRESULT)VSS_E_HOLD_WRITES_TIMEOUT:
> -        err_set(errset, hr, "couldn't hold writes: "
> +        fprintf(stderr, "couldn't hold writes: "
>                  "fsfreeze is limited up to 10 seconds");
>          break;
> 
>      default:
> -        err_set(errset, hr, "failed to do snapshot set");
> +        fprintf(stderr, "failed to do snapshot set");
>      }
> 
>      if (err_is_set(errset)) {
> -- 
> 2.9.3
> 


Reply via email to