On Wed, Apr 5, 2017 at 1:55 AM, Michael Roth <mdr...@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 <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. 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>.*