qemu-file: check exit status when closing a pipe QEMUFile
This is what exec_close does. Move this to the underlying QEMUFile. Reviewed-by: Orit Wasserman <owasserm@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
ce39ee3184
commit
13c7b2da07
|
@ -9,6 +9,13 @@
|
||||||
#include <sys/signal.h>
|
#include <sys/signal.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#else
|
||||||
|
#define WIFEXITED(x) 1
|
||||||
|
#define WEXITSTATUS(x) (x)
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
|
|
||||||
#if defined(CONFIG_SOLARIS) && CONFIG_SOLARIS_VERSION < 10
|
#if defined(CONFIG_SOLARIS) && CONFIG_SOLARIS_VERSION < 10
|
||||||
|
|
|
@ -50,10 +50,6 @@ static int exec_close(MigrationState *s)
|
||||||
ret = qemu_fclose(s->opaque);
|
ret = qemu_fclose(s->opaque);
|
||||||
s->opaque = NULL;
|
s->opaque = NULL;
|
||||||
s->fd = -1;
|
s->fd = -1;
|
||||||
if (ret >= 0 && !(WIFEXITED(ret) && WEXITSTATUS(ret) == 0)) {
|
|
||||||
/* close succeeded, but non-zero exit code: */
|
|
||||||
ret = -EIO; /* fake errno value */
|
|
||||||
}
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
3
savevm.c
3
savevm.c
|
@ -247,6 +247,9 @@ static int stdio_pclose(void *opaque)
|
||||||
ret = pclose(s->stdio_file);
|
ret = pclose(s->stdio_file);
|
||||||
if (ret == -1) {
|
if (ret == -1) {
|
||||||
ret = -errno;
|
ret = -errno;
|
||||||
|
} else if (!WIFEXITED(ret) || WEXITSTATUS(ret) != 0) {
|
||||||
|
/* close succeeded, but non-zero exit code: */
|
||||||
|
ret = -EIO; /* fake errno value */
|
||||||
}
|
}
|
||||||
g_free(s);
|
g_free(s);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in a new issue