[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v11 3/7] migration: use bitmap_mutex in migration_bi
From: |
Wei Wang |
Subject: |
[Qemu-devel] [PATCH v11 3/7] migration: use bitmap_mutex in migration_bitmap_clear_dirty |
Date: |
Tue, 11 Dec 2018 16:24:49 +0800 |
The bitmap mutex is used to synchronize threads to update the dirty
bitmap and the migration_dirty_pages counter. For example, the free
page optimization clears bits of free pages from the bitmap in an
iothread context. This patch makes migration_bitmap_clear_dirty update
the bitmap and counter under the mutex.
Signed-off-by: Wei Wang <address@hidden>
CC: Dr. David Alan Gilbert <address@hidden>
CC: Juan Quintela <address@hidden>
CC: Michael S. Tsirkin <address@hidden>
CC: Peter Xu <address@hidden>
Reviewed-by: Peter Xu <address@hidden>
---
migration/ram.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/migration/ram.c b/migration/ram.c
index 7e7deec..01d267f 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -316,7 +316,7 @@ struct RAMState {
uint64_t target_page_count;
/* number of dirty bits in the bitmap */
uint64_t migration_dirty_pages;
- /* protects modification of the bitmap */
+ /* Protects modification of the bitmap and migration dirty pages */
QemuMutex bitmap_mutex;
/* The RAMBlock used in the last src_page_requests */
RAMBlock *last_req_rb;
@@ -1556,11 +1556,14 @@ static inline bool
migration_bitmap_clear_dirty(RAMState *rs,
{
bool ret;
+ qemu_mutex_lock(&rs->bitmap_mutex);
ret = test_and_clear_bit(page, rb->bmap);
if (ret) {
rs->migration_dirty_pages--;
}
+ qemu_mutex_unlock(&rs->bitmap_mutex);
+
return ret;
}
--
1.8.3.1
- [Qemu-devel] [PATCH v11 0/7] virtio-balloon: free page hint support, Wei Wang, 2018/12/11
- [Qemu-devel] [PATCH v11 1/7] bitmap: fix bitmap_count_one, Wei Wang, 2018/12/11
- [Qemu-devel] [PATCH v11 3/7] migration: use bitmap_mutex in migration_bitmap_clear_dirty,
Wei Wang <=
- [Qemu-devel] [PATCH v11 2/7] bitmap: bitmap_count_one_with_offset, Wei Wang, 2018/12/11
- [Qemu-devel] [PATCH v11 4/7] migration: API to clear bits of guest free pages from the dirty bitmap, Wei Wang, 2018/12/11
- [Qemu-devel] [PATCH v11 5/7] migration/ram.c: add a notifier chain for precopy, Wei Wang, 2018/12/11
- [Qemu-devel] [PATCH v11 6/7] migration/ram.c: add the free page optimization enable flag, Wei Wang, 2018/12/11
- [Qemu-devel] [PATCH v11 7/7] virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_HINT, Wei Wang, 2018/12/11