= Features/Virt Device Failover =
https://fedoraproject.org/wiki/Features/Virt_Device_Failover
Feature owner(s): Michael S. Tsirkin <mst(a)redhat.com>, Gal Hammer
<hammer(a)redhat.com>, Cole Robinson <crobinso(a)redhat.com>, Laine Stump
<laine(a)redhat.com>
Support for transparent failover between an assigned and an emulated device,
allows enabling the migration and overcommit dynamically, while still gaining
the performance benefits of device assignment and without disrupting the guest
operation.
== Detailed description ==
For virtual machines, device assignment is the best
option for performance. However, when a device is assigned to a VM, both
migration and memory overcommit are currently disabled.
This feature aims at removing the performance/features tradeoff,
by switching to an emulated device in a way that is almost
transparent to users, for configurations where both host
and guest are Fedora.
Fedora should detect that the emulated device serves as a failover
for the assigned device. When requested by the hypervisor,
it will stop and eject the assigned device, switching to failover.
After this point, migration and memory overcommit are possible,
while device configuration is preserved. Once e.g. migration
completes, the reverse switch can take place.
Thus the device is controlled by:
* before migration: device specific driver loaded in guest
* during migration: driver loaded in host, virtio or emulated device driver
loaded in guest
* after migration: device specific driver loaded in guest
At the kernel level, for networking, this can be done by and creating
a bond in a failover configuration, and for storage, using multipath,
on top of both the assigned and the emulated device.