[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH RFC 22/26] migration/multifd: Convert multifd_send_pages::next_ch
|
From: |
Maciej S. Szmigiero |
|
Subject: |
[PATCH RFC 22/26] migration/multifd: Convert multifd_send_pages::next_channel to atomic |
|
Date: |
Tue, 16 Apr 2024 16:43:01 +0200 |
From: "Maciej S. Szmigiero" <maciej.szmigiero@oracle.com>
This is necessary for multifd_send_pages() to be able to be called
from multiple threads.
Signed-off-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com>
---
migration/multifd.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/migration/multifd.c b/migration/multifd.c
index a26418d87485..878ff7d9f9f0 100644
--- a/migration/multifd.c
+++ b/migration/multifd.c
@@ -622,8 +622,8 @@ static bool multifd_send_pages(void)
* using more channels, so ensure it doesn't overflow if the
* limit is lower now.
*/
- next_channel %= migrate_multifd_channels();
- for (i = next_channel;; i = (i + 1) % migrate_multifd_channels()) {
+ i = qatomic_load_acquire(&next_channel) % migrate_multifd_channels();
+ for (;; i = (i + 1) % migrate_multifd_channels()) {
if (multifd_send_should_exit()) {
return false;
}
@@ -633,7 +633,8 @@ static bool multifd_send_pages(void)
* sender thread can clear it.
*/
if (qatomic_read(&p->pending_job) == false) {
- next_channel = (i + 1) % migrate_multifd_channels();
+ qatomic_store_release(&next_channel,
+ (i + 1) % migrate_multifd_channels());
break;
}
}
- [PATCH RFC 08/26] migration: Allow passing migration header in migration channel creation, (continued)
- [PATCH RFC 08/26] migration: Allow passing migration header in migration channel creation, Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 10/26] migration: Add send/receive header for multifd channel, Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 11/26] migration/options: Mapped-ram is not channel header compatible, Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 12/26] migration: Enable x-channel-header pseudo-capability, Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 13/26] vfio/migration: Add save_{iterate, complete_precopy}_started trace events, Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 14/26] migration/ram: Add load start trace event, Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 15/26] migration/multifd: Zero p->flags before starting filling a packet, Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 16/26] migration: Add save_live_complete_precopy_async{, wait} handlers, Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 18/26] migration: Add load_finish handler and associated functions, Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 17/26] migration: Add qemu_loadvm_load_state_buffer() and its handler, Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 22/26] migration/multifd: Convert multifd_send_pages::next_channel to atomic,
Maciej S. Szmigiero <=
- [PATCH RFC 21/26] migration/multifd: Device state transfer support - receive side, Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 25/26] vfio/migration: Multifd device state transfer support - receive side, Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 23/26] migration/multifd: Device state transfer support - send side, Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 19/26] migration: Add x-multifd-channels-device-state parameter, Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 20/26] migration: Add MULTIFD_DEVICE_STATE migration channel type, Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 24/26] migration/multifd: Add migration_has_device_state_support(), Maciej S. Szmigiero, 2024/04/16
- [PATCH RFC 26/26] vfio/migration: Multifd device state transfer support - send side, Maciej S. Szmigiero, 2024/04/16
- Re: [PATCH RFC 00/26] Multifd 🔀 device state transfer support with VFIO consumer, Daniel P . Berrangé, 2024/04/17