mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
migration: use bitmap_mutex in migration_bitmap_clear_dirty
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 <wei.w.wang@intel.com> CC: Dr. David Alan Gilbert <dgilbert@redhat.com> CC: Juan Quintela <quintela@redhat.com> CC: Michael S. Tsirkin <mst@redhat.com> CC: Peter Xu <peterx@redhat.com> Reviewed-by: Peter Xu <peterx@redhat.com> Message-Id: <1544516693-5395-4-git-send-email-wei.w.wang@intel.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
parent
94960256ae
commit
386a907b37
@ -342,7 +342,7 @@ struct RAMState {
|
|||||||
uint64_t target_page_count;
|
uint64_t target_page_count;
|
||||||
/* number of dirty bits in the bitmap */
|
/* number of dirty bits in the bitmap */
|
||||||
uint64_t migration_dirty_pages;
|
uint64_t migration_dirty_pages;
|
||||||
/* protects modification of the bitmap */
|
/* Protects modification of the bitmap and migration dirty pages */
|
||||||
QemuMutex bitmap_mutex;
|
QemuMutex bitmap_mutex;
|
||||||
/* The RAMBlock used in the last src_page_requests */
|
/* The RAMBlock used in the last src_page_requests */
|
||||||
RAMBlock *last_req_rb;
|
RAMBlock *last_req_rb;
|
||||||
@ -1590,11 +1590,14 @@ static inline bool migration_bitmap_clear_dirty(RAMState *rs,
|
|||||||
{
|
{
|
||||||
bool ret;
|
bool ret;
|
||||||
|
|
||||||
|
qemu_mutex_lock(&rs->bitmap_mutex);
|
||||||
ret = test_and_clear_bit(page, rb->bmap);
|
ret = test_and_clear_bit(page, rb->bmap);
|
||||||
|
|
||||||
if (ret) {
|
if (ret) {
|
||||||
rs->migration_dirty_pages--;
|
rs->migration_dirty_pages--;
|
||||||
}
|
}
|
||||||
|
qemu_mutex_unlock(&rs->bitmap_mutex);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user