mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-11 16:00:50 -07:00
migration: Add error_desc for file channel errors
Currently, there is no information about error if outgoing migration was failed
because of file channel errors.
Example (QMP session):
-> { "execute": "migrate", "arguments": { "uri": "exec:head -c 1" }}
<- { "return": {} }
...
-> { "execute": "query-migrate" }
<- { "return": { "status": "failed" }} // There is not error's description
And even in the QEMU's output there is nothing.
This patch
1) Adds errp for the most of QEMUFileOps
2) Adds qemu_file_get_error_obj/qemu_file_set_error_obj
3) And finally using of qemu_file_get_error_obj in migration.c
And now, the status for the mentioned fail will be:
-> { "execute": "query-migrate" }
<- { "return": { "status": "failed",
"error-desc": "Unable to write to command: Broken pipe" }}
Signed-off-by: Yury Kotov <yury-kotov@yandex-team.ru>
Message-Id: <20190422103420.15686-1-yury-kotov@yandex-team.ru>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
parent
f28ed74fd1
commit
3d661c8ab1
5 changed files with 88 additions and 36 deletions
|
|
@ -2963,6 +2963,7 @@ static MigThrError migration_detect_error(MigrationState *s)
|
|||
{
|
||||
int ret;
|
||||
int state = s->state;
|
||||
Error *local_error = NULL;
|
||||
|
||||
if (state == MIGRATION_STATUS_CANCELLING ||
|
||||
state == MIGRATION_STATUS_CANCELLED) {
|
||||
|
|
@ -2971,13 +2972,18 @@ static MigThrError migration_detect_error(MigrationState *s)
|
|||
}
|
||||
|
||||
/* Try to detect any file errors */
|
||||
ret = qemu_file_get_error(s->to_dst_file);
|
||||
|
||||
ret = qemu_file_get_error_obj(s->to_dst_file, &local_error);
|
||||
if (!ret) {
|
||||
/* Everything is fine */
|
||||
assert(!local_error);
|
||||
return MIG_THR_ERR_NONE;
|
||||
}
|
||||
|
||||
if (local_error) {
|
||||
migrate_set_error(s, local_error);
|
||||
error_free(local_error);
|
||||
}
|
||||
|
||||
if (state == MIGRATION_STATUS_POSTCOPY_ACTIVE && ret == -EIO) {
|
||||
/*
|
||||
* For postcopy, we allow the network to be down for a
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue