Re: [Qemu-devel] [PATCH qemu-ga] qemu-ga: Don't display errors to the user on thaw command

2017-04-05 Thread Sameeh Jubran
On Wed, Apr 5, 2017 at 1:55 AM, Michael Roth 
wrote:

> 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 
> > ---
> >  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.

This patch was introduced to hide the error "{"error": {"class":
"GenericError", "desc": "couldn't hold writes: fsfreeze is limited up to 10
seconds: "}" which shows up whenever we
execute thaw after 10 seconds have passed from freeze event and in order to
align the behaviour Windows with Linux. However I agree with you about
informing the user about possible
corruption during the backup operation.

>


> > +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
> >
>
>


-- 
Respectfully,
*Sameeh Jubran*
*Linkedin *
*Software Engineer @ Daynix .*


Re: [Qemu-devel] [PATCH qemu-ga] qemu-ga: Don't display errors to the user on thaw command

2017-04-04 Thread Michael Roth
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 
> ---
>  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
> 




Re: [Qemu-devel] [PATCH qemu-ga] qemu-ga: Don't display errors to the user on thaw command

2017-04-02 Thread Sameeh Jubran
Ping.

On Tue, Mar 21, 2017 at 5:14 PM, Sameeh Jubran  wrote:

> Errors that are related to ur inner implementation for the thaw command
> shouldn't be displayed to the user.
>
> Signed-off-by: Sameeh Jubran 
> ---
>  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");
> +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
>
>


-- 
Respectfully,
*Sameeh Jubran*
*Linkedin *
*Software Engineer @ Daynix .*


[Qemu-devel] [PATCH qemu-ga] qemu-ga: Don't display errors to the user on thaw command

2017-03-21 Thread Sameeh Jubran
Errors that are related to ur inner implementation for the thaw command
shouldn't be displayed to the user.

Signed-off-by: Sameeh Jubran 
---
 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");
+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