Hello
I am trying to implement functionality in fully-virtualized xen wherein
the responses to the pending disk I/O requests during live VM migration
get trasnsferred to the new VMM form the old VMM. Specifically, I am
looking at IDE disk (tools/ioemu/hw/ide.c)
Basically, ide.c:pci_ide_save() saves the state of the IDE disk in a
QEMUFile and this file is sent over the network (can somebody point me
to the code where this happens ??)) so that the new VMM (where the VM
has migrated) invokes ide.c:pci_ide_load() to retrieve the IDE Disk
contents form the file. As of now, the pending disk I/O requests do not
get saved in this file so these pending disk I/O requests are not
available when executing pci_ide_load().
I am still trying to figure out where the pending Disk I/O requests get
stored in the VMM so that during live VM migration, these requests can
be put in the QEMUFile (As mentioned above) so that they can be reissued
by the new VMM. Much better would be to send the responses to these
pending disk I/O requests from the old to new VMM. Can somebody help me
out with this as I am newbie here....??
register_savevm() in ioemu/vl.c is simply used to register the save &
load handlers......... register_savevm() is called in
ioemu/hw/ide.c:pci_piix_ide_init() to register pci_ide_save() and
pci_ide_load() as the save & load handlers for IDE disks.......
qemu_savevm() in ioemu/vl.c walks the list of the registered save
handlers whereas qemu_loadvm() in vl.c expects a load handler to have
been registered for the corresponding save handlers for each chunk of
the save file.
Any help in locating the code would be greatly appreciated.
-Kaushik