|
@@ -2768,8 +2768,9 @@ static void qemu_loadvm_state_switchover_ack_needed(MigrationIncomingState *mis)
|
|
trace_loadvm_state_switchover_ack_needed(mis->switchover_ack_pending_num);
|
|
trace_loadvm_state_switchover_ack_needed(mis->switchover_ack_pending_num);
|
|
}
|
|
}
|
|
|
|
|
|
-static int qemu_loadvm_state_setup(QEMUFile *f)
|
|
|
|
|
|
+static int qemu_loadvm_state_setup(QEMUFile *f, Error **errp)
|
|
{
|
|
{
|
|
|
|
+ ERRP_GUARD();
|
|
SaveStateEntry *se;
|
|
SaveStateEntry *se;
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
@@ -2784,10 +2785,11 @@ static int qemu_loadvm_state_setup(QEMUFile *f)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- ret = se->ops->load_setup(f, se->opaque);
|
|
|
|
|
|
+ ret = se->ops->load_setup(f, se->opaque, errp);
|
|
if (ret < 0) {
|
|
if (ret < 0) {
|
|
|
|
+ error_prepend(errp, "Load state of device %s failed: ",
|
|
|
|
+ se->idstr);
|
|
qemu_file_set_error(f, ret);
|
|
qemu_file_set_error(f, ret);
|
|
- error_report("Load state of device %s failed", se->idstr);
|
|
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -2968,7 +2970,8 @@ int qemu_loadvm_state(QEMUFile *f)
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
- if (qemu_loadvm_state_setup(f) != 0) {
|
|
|
|
|
|
+ if (qemu_loadvm_state_setup(f, &local_err) != 0) {
|
|
|
|
+ error_report_err(local_err);
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
|