Message ID | 20230905145002.46391-2-kwolf@redhat.com |
---|---|
State | New |
Headers | show |
Series | virtio: Drop out of coroutine context in virtio_load() | expand |
On Tue, Sep 05, 2023 at 04:50:01PM +0200, Kevin Wolf wrote: > Migration code can run both in coroutine context (the usual case) and > non-coroutine context (at least savevm/loadvm for snapshots). This also > affects the VMState callbacks, and devices must consider this. Change > the callback definition in VMStateInfo to be explicit about it. > > Signed-off-by: Kevin Wolf <kwolf@redhat.com> Acked-by: Peter Xu <peterx@redhat.com>
diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index d1b8abe08d..e4db910339 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -41,9 +41,11 @@ typedef struct VMStateField VMStateField; */ struct VMStateInfo { const char *name; - int (*get)(QEMUFile *f, void *pv, size_t size, const VMStateField *field); - int (*put)(QEMUFile *f, void *pv, size_t size, const VMStateField *field, - JSONWriter *vmdesc); + int coroutine_mixed_fn (*get)(QEMUFile *f, void *pv, size_t size, + const VMStateField *field); + int coroutine_mixed_fn (*put)(QEMUFile *f, void *pv, size_t size, + const VMStateField *field, + JSONWriter *vmdesc); }; enum VMStateFlags {
Migration code can run both in coroutine context (the usual case) and non-coroutine context (at least savevm/loadvm for snapshots). This also affects the VMState callbacks, and devices must consider this. Change the callback definition in VMStateInfo to be explicit about it. Signed-off-by: Kevin Wolf <kwolf@redhat.com> --- include/migration/vmstate.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)