all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH-SERIES qemu 0/6] async snapshot improvements
@ 2025-03-31 14:55 Fiona Ebner
  2025-03-31 14:55 ` [pve-devel] [PATCH qemu 1/6] savevm-async: improve setting state of snapshot operation in savevm-end handler Fiona Ebner
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Fiona Ebner @ 2025-03-31 14:55 UTC (permalink / raw)
  To: pve-devel

Most importantly, start using a dedicated IO thread for the state
file when doing a live snapshot.

Having the state file be in the iohandler context means that a
blk_drain_all() call in the main thread or vCPU thread that happens
while the snapshot is running will result in a deadlock.

This change should also help in general to reduce load on the main
thread and for it to get stuck on IO, i.e. same benefits as using a
dedicated IO thread for regular drives. This is particularly
interesting when the VM state storage is a network storage like NFS.

With some luck, it could also help with bug #6262 [0]. The failure
there happens while issuing/right after the savevm-start QMP command,
so the most likely coroutine is the process_savevm_co() that was
previously scheduled to the iohandler context. Likely someone polls
the iohandler context and wants to enter the already scheduled
coroutine leading to the abort():
> qemu_aio_coroutine_enter: Co-routine was already scheduled in 'aio_co_schedule'
With a dedicated iothread, there hopefully is no such race.


Additionally, fix up some edge cases in error handling and setting the
state of the snapshot operation.


[0]: https://bugzilla.proxmox.com/show_bug.cgi?id=6262

Fiona Ebner (6):
  savevm-async: improve setting state of snapshot operation in
    savevm-end handler
  savevm-async: rename saved_vm_running to vm_needs_start
  savevm-async: improve runstate preservation
  savevm-async: cleanup error handling in savevm_start
  savevm-async: use dedicated iothread for state file
  savevm-async: treat failure to set iothread context as a hard failure

 migration/savevm-async.c | 119 +++++++++++++++++++++++----------------
 1 file changed, 69 insertions(+), 50 deletions(-)

-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2025-04-02 15:35 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-03-31 14:55 [pve-devel] [PATCH-SERIES qemu 0/6] async snapshot improvements Fiona Ebner
2025-03-31 14:55 ` [pve-devel] [PATCH qemu 1/6] savevm-async: improve setting state of snapshot operation in savevm-end handler Fiona Ebner
2025-03-31 14:55 ` [pve-devel] [PATCH qemu 2/6] savevm-async: rename saved_vm_running to vm_needs_start Fiona Ebner
2025-03-31 14:55 ` [pve-devel] [PATCH qemu 3/6] savevm-async: improve runstate preservation Fiona Ebner
2025-03-31 14:55 ` [pve-devel] [PATCH qemu 4/6] savevm-async: cleanup error handling in savevm_start Fiona Ebner
2025-03-31 14:55 ` [pve-devel] [PATCH qemu 5/6] savevm-async: use dedicated iothread for state file Fiona Ebner
2025-03-31 14:55 ` [pve-devel] [PATCH qemu 6/6] savevm-async: treat failure to set iothread context as a hard failure Fiona Ebner
2025-03-31 15:06 ` [pve-devel] [PATCH-SERIES qemu 0/6] async snapshot improvements Fiona Ebner
2025-04-02 15:35 ` [pve-devel] applied-series: " Wolfgang Bumiller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal