qemu_thread_create: propagate the error to callers to handle
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v9 Latest16 patches 56 repliesIn review
- v87 patches 19 repliesSuperseded
- v7 RFC9 patches 20 repliesSuperseded
Earlier versions · 4
| Version | Posted | Patches | Replies | Status |
|---|---|---|---|---|
| v6 RFC | 7 patches | 9 replies | Superseded | |
| v5 RFC | 7 patches | 19 replies | Superseded | |
| v2 | 4 patches | 7 replies | Superseded | |
| v1 | 5 patches | 13 replies | Superseded |
Changes in v9 from the cover letter
- To ease the review and involve the appropriate maintainers, split the previous 6/7 patch into 10 patches: the 6/16 patch passes the &error_abort to qemu_thread_create() everywhere, and the next 9 patches will improve on &error_abort for callers who need.
- Add a new patch 5/7 to unify error handling for process_incoming_migration_co().
- Merge the previous 2/7 to current 7/16 to collaboratively handle for qemu_X_start_vcpu and for the qemu_init_vpcu in each arch.
- Add comment for multifd_recv_new_channel() in current patch 2/7.
Patches in v9 No applies recorded yet
Reviews trailers per patch
9 of 16 patches have a Reviewed-by or Acked-by.
| Patch | Fam Zheng | Markus Armbruster | Peter Xu | Juan Quintela | Dr. David Alan Gilbert | David Gibson |
|---|---|---|---|---|---|---|
| 1/16 | R-b | R-b | ||||
| 2/16 | R-b | |||||
| 3/16 | R-b | |||||
| 4/16 | R-b | |||||
| 5/16 | R-b | |||||
| 6/16 | ||||||
| 7/16 | R-b | R-b | ||||
| 8/16 | ||||||
| 9/16 | ||||||
| 10/16 | A-b | |||||
| 11/16 | ||||||
| 12/16 | ||||||
| 13/16 | R-b | |||||
| 14/16 | ||||||
| 15/16 | ||||||
| 16/16 | R-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 6 reviewers.
Cover letter [Qemu-devel] [PATCH for-4.0 v9 00/16] qemu_thread_create: propagate the error to callers to handle
Hi,
This idea comes from BiteSizedTasks, and this patch series implement the error checking of qemu_thread_create: make qemu_thread_create return a flag to indicate if it succeeded rather than failing with an error; make all callers check it.
The first and the last patch fixes some segmentation faults occured
during the debugging. The 6/7 patch modifies theqemu_thread_create() by passing &error_abort and makes it return a
bool to all direct callers to indicate if it succeeds. The next 9
patches will improve on &error_abort for callers who can handle more
properly. The middle four fix some migration issues.
BTW, I am leaving my current company now, and will use "Fei Li <[email protected]>" to continue with this patch series.
Please help to review, thanks a lot! :)
v9:
- To ease the review and involve the appropriate maintainers, split the previous 6/7 patch into 10 patches: the 6/16 patch passes the &error_abort to qemu_thread_create() everywhere, and the next 9 patches will improve on &error_abort for callers who need.
- Add a new patch 5/7 to unify error handling for process_incoming_migration_co().
- Merge the previous 2/7 to current 7/16 to collaboratively handle for qemu_X_start_vcpu and for the qemu_init_vpcu in each arch.
- Add comment for multifd_recv_new_channel() in current patch 2/7.
v8:
- Remove previous two patches trying to fix the multifd issue on the source side, as we are still waiting for maintainer's opinions.
- Use atomic_read to get multifd_recv_state->count in patch 3/7.
- Get three more "Reviewed-by:".
v7:
- Split the previous multifd-migration into two patches: the src and the dst. For the dst, only dump the error instead of quitting.
- Safely do the cleanup for postcopy_ram_enable_notify().
- Split the previous migration-error-handling patch into two patches.
v6:
- Add a new migration-multifd related patch. BTW, delete the previous vnc related patch as it has been upstreamed.
- Use error_setg_errno() to set the errno when qemu_thread_create() fails for both Linux and Windows implementation.
- Optimize the first patch, less codes are needed
v5:
- Remove errno = err in qemu_thread_create() for Linux, and change return errno to return -1 in qemu_signal_init() to indicate the error in case qemu_thread_create() fails.
- Delete the v4-added qemu_cond/mutex_destroy() in iothread_complete() as the destroy() will be done by its callers' object_unref().
v4:
- Separate the migration compression patch from this series
- Add one more error handling patch related with migration
- Add more cleaning up code for touched functions
v3:
- Add two migration related patches to fix the segmentaion fault
- Extract the segmentation fault fix from v2's last patch to be a separate patch
v2:
- Pass errp straightly instead of using a local_err & error_propagate
- Return a bool: false/true to indicate if one function succeeds
- Merge v1's last two patches into one to avoid the compile error
- Fix one omitted error in patch1 and update some error messages
Fei Li (16):
Fix segmentation fault when qemu_signal_init fails
migration: fix the multifd code when receiving less channels
migration: remove unused &local_err parameter in multifd_save_cleanup
migration: add more error handling for postcopy_ram_enable_notify
migration: unify error handling for process_incoming_migration_co
qemu_thread: Make qemu_thread_create() handle errors properly
qemu_thread: supplement error handling for qemu_X_start_vcpu
qemu_thread: supplement error handling for qmp_dump_guest_memory
qemu_thread: supplement error handling for pci_edu_realize
qemu_thread: supplement error handling for h_resize_hpt_prepare
qemu_thread: supplement error handling for emulated_realize
qemu_thread: supplement error handling for
iothread_complete/qemu_signalfd_compat
qemu_thread: supplement error handling for migration
qemu_thread: supplement error handling for vnc_start_worker_thread
qemu_thread: supplement error handling for touch_all_pages
qemu_thread_join: fix segmentation fault
accel/tcg/user-exec-stub.c | 3 +- cpus.c | 79 ++++++++++++++++++++++++++--------------- dump.c | 6 ++-- hw/misc/edu.c | 7 ++-- hw/ppc/spapr_hcall.c | 10 ++++-- hw/rdma/rdma_backend.c | 3 +- hw/usb/ccid-card-emulated.c | 14 +++++--- include/qemu/thread.h | 4 +-- include/qom/cpu.h | 2 +- io/task.c | 3 +- iothread.c | 16 ++++++--- migration/channel.c | 11 +++--- migration/migration.c | 68 ++++++++++++++++++++++------------- migration/migration.h | 2 +- migration/postcopy-ram.c | 15 ++++++-- migration/ram.c | 68 ++++++++++++++++++++++++----------- migration/ram.h | 4 +-- migration/savevm.c | 12 +++++-- target/alpha/cpu.c | 4 ++- target/arm/cpu.c | 4 ++- target/cris/cpu.c | 4 ++- target/hppa/cpu.c | 4 ++- target/i386/cpu.c | 4 ++- target/lm32/cpu.c | 4 ++- target/m68k/cpu.c | 4 ++- target/microblaze/cpu.c | 4 ++- target/mips/cpu.c | 4 ++- target/moxie/cpu.c | 4 ++- target/nios2/cpu.c | 4 ++- target/openrisc/cpu.c | 4 ++- target/ppc/translate_init.inc.c | 4 ++- target/riscv/cpu.c | 4 ++- target/s390x/cpu.c | 4 ++- target/sh4/cpu.c | 4 ++- target/sparc/cpu.c | 4 ++- target/tilegx/cpu.c | 4 ++- target/tricore/cpu.c | 4 ++- target/unicore32/cpu.c | 4 ++- target/xtensa/cpu.c | 4 ++- tests/atomic_add-bench.c | 3 +- tests/iothread.c | 2 +- tests/qht-bench.c | 3 +- tests/rcutorture.c | 3 +- tests/test-aio.c | 2 +- tests/test-rcu-list.c | 3 +- ui/vnc-jobs.c | 17 ++++++--- ui/vnc-jobs.h | 2 +- ui/vnc.c | 4 ++- util/compatfd.c | 11 ++++-- util/main-loop.c | 8 ++--- util/oslib-posix.c | 24 ++++++++----- util/qemu-thread-posix.c | 30 ++++++++++++---- util/qemu-thread-win32.c | 18 +++++++--- util/rcu.c | 3 +- util/thread-pool.c | 4 ++- 55 files changed, 378 insertions(+), 170 deletions(-)
Signature · 1 line
2.13.7