@samitouri / QOSamiQemu / commits / 9b223e809d

migration: factor out vmstate_post_load() from vmstate_load_state()

Simplify vmstate_load_state() which is rather big, and simplify further refactoring. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Peter Xu <peterx@redhat.com> Link: https://lore.kernel.org/qemu-devel/20260304212303.667141-11-vsementsov@yandex-team.ru Signed-off-by: Fabiano Rosas <farosas@suse.de>

Vladimir Sementsov-Ogievskiy committed Mar 5, 2026 at 00:22 UTC 9b223e809d2ab21feffed65282876af30c0e71d8
1 file changed +30 -19
migration/vmstate.c
+30 -19
@@ -182,6 +182,33 @@ static bool vmstate_load_field(QEMUFile *f, void *pv, size_t size,
182 return true;
183 }
184
185 +static bool vmstate_post_load(const VMStateDescription *vmsd,
186 + void *opaque, int version_id, Error **errp)
187 +{
188 + ERRP_GUARD();
189 +
190 + if (vmsd->post_load_errp) {
191 + if (!vmsd->post_load_errp(opaque, version_id, errp)) {
192 + error_prepend(errp, "post load hook failed for: %s, version_id: "
193 + "%d, minimum_version: %d: ", vmsd->name,
194 + vmsd->version_id, vmsd->minimum_version_id);
195 + return false;
196 + }
197 + } else if (vmsd->post_load) {
198 + int ret = vmsd->post_load(opaque, version_id);
199 + if (ret < 0) {
200 + error_setg(errp,
201 + "post load hook failed for: %s, version_id: %d, "
202 + "minimum_version: %d, ret: %d",
203 + vmsd->name, vmsd->version_id, vmsd->minimum_version_id,
204 + ret);
205 + return false;
206 + }
207 + }
208 +
209 + return true;
210 +}
211 +
212 int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd,
213 void *opaque, int version_id, Error **errp)
214 {
@@ -284,25 +311,9 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd,
311 return ret;
312 }
313
287 - if (vmsd->post_load_errp) {
288 - if (!vmsd->post_load_errp(opaque, version_id, errp)) {
289 - error_prepend(errp, "post load hook failed for: %s, version_id: "
290 - "%d, minimum_version: %d: ", vmsd->name,
291 - vmsd->version_id, vmsd->minimum_version_id);
292 - trace_vmstate_load_state_fail(vmsd->name, "post-load");
293 - return -EINVAL;
294 - }
295 - } else if (vmsd->post_load) {
296 - ret = vmsd->post_load(opaque, version_id);
297 - if (ret < 0) {
298 - error_setg(errp,
299 - "post load hook failed for: %s, version_id: %d, "
300 - "minimum_version: %d, ret: %d",
301 - vmsd->name, vmsd->version_id, vmsd->minimum_version_id,
302 - ret);
303 - trace_vmstate_load_state_fail(vmsd->name, "post-load");
304 - return ret;
305 - }
314 + if (!vmstate_post_load(vmsd, opaque, version_id, errp)) {
315 + trace_vmstate_load_state_fail(vmsd->name, "post-load");
316 + return -EINVAL;
317 }
318
319 trace_vmstate_load_state_success(vmsd->name);