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
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 > > -- Respectfully, *Sameeh Jubran* *Linkedin <https://il.linkedin.com/pub/sameeh-jubran/87/747/a8a>* *Software Engineer @ Daynix <http://www.daynix.com>.*
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 > > > > -- Respectfully, *Sameeh Jubran* *Linkedin <https://il.linkedin.com/pub/sameeh-jubran/87/747/a8a>* *Software Engineer @ Daynix <http://www.daynix.com>.*
© 2016 - 2024 Red Hat, Inc.