In all the above cases the following use cases were checked:
Use-case name
Boot
Recover after xl destroy
Recover after the 'systemctl restart domu(a)'
Recover after the 'reboot' command inside DomU(A)
Please, consider, that to have NFS boot in a working state, the following workaround was applied to Xen. The code here was modified to:
if (!paused)
{
fprintf(stderr, "~~~GVV: Before domain unpause\n");
sleep(5);
libxl_domain_unpause(ctx, domid, NULL);
fprintf(stderr, "~~~GVV: After domain unpause\n");
}
The following fact causes the need for that workaround: Xen does not keep DomU(A) paused until QEMU has set up the backends. The domain is unpaused right away, and in case of a slow NFS boot, the guest domain checks the availability of the virtio devices before the QEMU is able to set them up.
I'm in contact with the xen-troops team ( OTyshchenko ) regarding this workaround. We will try to prepare a more intelligent patch, that does not impact non-virtio use cases. Probably, it'll happen this week.
Also, I've checked the non-virtio build:
Item name
Status
DomU non-virtio non-NFS
works
DomU non-virtio NFS
works
DomA non-virtio non-NFS
works
DomA non-virtio NFS ( only NFS for Dom0 and DomU )
The change was checked in the following way:
In all the above cases the following use cases were checked:
Please, consider, that to have NFS boot in a working state, the following workaround was applied to Xen. The code here was modified to:
The following fact causes the need for that workaround: Xen does not keep DomU(A) paused until QEMU has set up the backends. The domain is unpaused right away, and in case of a slow NFS boot, the guest domain checks the availability of the virtio devices before the QEMU is able to set them up.
I'm in contact with the xen-troops team ( OTyshchenko ) regarding this workaround. We will try to prepare a more intelligent patch, that does not impact non-virtio use cases. Probably, it'll happen this week.
Also, I've checked the non-virtio build: