Commit bb9cd58
CP-26145: fail vgpu-migration from pre-Jura to Jura and later hosts
The vgpu-migration protocol had to be changed to prevent a race condition,
causing vgpu-migration from pre-Jura to Jura hosts to block forever. The
only way to recover is to restart xenopsd.
This patch interrupts the vgpu-migration if it detects the vgpu-migration
operation between these invalid hosts, preventing the block from occurring.
The vgpu-migration is interrupted before the VM state is saved -- therefore,
the VM in the sending host continues to run unaffected.
It works for vgpu-migration during both RPU and cross-pool migration.
The interruption occurs by xenopsd raising an Internal_error exception at
the receive_vgpu thread and sending a Handshake.error back to the main
migration thread of the sending host, which will clean up the main migration
threads in both the sender and receiver hosts.
The distinction between pre-Jura and Jura/later hosts is done by sending a
new cookie 'vgpu_migration' between the sender and receiver. This patch sends
this cookie with an empty value, but in the future this value could contain
either a version number of features that the receiver could parse to verify
if it agrees to receive the migrating VM.
Signed-off-by: Marcus Granado <[email protected]>1 parent 1849b89 commit bb9cd58
1 file changed
+14
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| 43 | + | |
43 | 44 | | |
44 | 45 | | |
45 | 46 | | |
| |||
1657 | 1658 | | |
1658 | 1659 | | |
1659 | 1660 | | |
1660 | | - | |
| 1661 | + | |
1661 | 1662 | | |
1662 | 1663 | | |
1663 | 1664 | | |
| |||
2363 | 2364 | | |
2364 | 2365 | | |
2365 | 2366 | | |
| 2367 | + | |
| 2368 | + | |
| 2369 | + | |
| 2370 | + | |
| 2371 | + | |
| 2372 | + | |
| 2373 | + | |
| 2374 | + | |
| 2375 | + | |
| 2376 | + | |
| 2377 | + | |
| 2378 | + | |
2366 | 2379 | | |
2367 | 2380 | | |
2368 | 2381 | | |
| |||
0 commit comments