[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Migrating NVME device
From: |
Amir Gonnen |
Subject: |
Migrating NVME device |
Date: |
Thu, 11 Aug 2022 15:22:07 +0000 |
Hi,
I'm looking into making NVME device "migratable".
Following previous discussion on
https://lists.gnu.org/archive/html/qemu-devel/2017-08/msg05091.html, I would
like to implement the VMStateDescription to save and restore the entire
controller state, including all the queues.
"NvmeCtrl" defines the queues like this:
...
NvmeSQueue **sq;
NvmeCQueue **cq;
NvmeSQueue admin_sq;
NvmeCQueue admin_cq;
...
typedef struct NvmeCQueue {
struct NvmeCtrl *ctrl;
uint8_t phase;
...
My understanding is that I should use VMSTATE_STRUCT to save "admin_sq" and
"admin_cq", but how do I save/restore the "ctrl" field of "NvmeCQueue"?
And is there a VMSTATE_ macro I could use for handling "sq" and "cq" fields of
"NvmeCtrl"? These are dynamic allocated arrays of pointers to struct, whose
size is a device parameter. VMSTATE_STRUCT_VARRAY_ALLOC is close but not
exactly what I need here.
Is there a simple way to achieve this? Or do I need to use pre_save/post_load
to convert these into a more "serializable" form? Or create a new VMStateInfo
customized for this purpose?
I'd appreciate any hint or advice!
Thanks,
Amir
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Migrating NVME device,
Amir Gonnen <=