Message ID | 20170321141435.23701-1-sameeh@daynix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Ping. On Tue, Mar 21, 2017 at 5:14 PM, Sameeh Jubran <sameeh@daynix.com> 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 <sameeh@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"); > + 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 > >
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 <sameeh@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 >
On Wed, Apr 5, 2017 at 1:55 AM, Michael Roth <mdroth@linux.vnet.ibm.com> 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 <sameeh@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. 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 > > > >
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)) {
Errors that are related to ur inner implementation for the thaw command shouldn't be displayed to the user. Signed-off-by: Sameeh Jubran <sameeh@daynix.com> --- qga/vss-win32/requester.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)