[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 08/21] migration: No need to take rcu during sync_dir
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PULL 08/21] migration: No need to take rcu during sync_dirty_bitmap |
Date: |
Mon, 15 Jul 2019 15:51:12 +0200 |
From: Peter Xu <address@hidden>
cpu_physical_memory_sync_dirty_bitmap() has one RAMBlock* as
parameter, which means that it must be with RCU read lock held
already. Taking it again inside seems redundant. Removing it.
Instead comment on the functions about the RCU read lock.
Reviewed-by: Paolo Bonzini <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Peter Xu <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>
---
include/exec/ram_addr.h | 5 +----
migration/ram.c | 1 +
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h
index f96777bb99..44dcc98de6 100644
--- a/include/exec/ram_addr.h
+++ b/include/exec/ram_addr.h
@@ -409,6 +409,7 @@ static inline void
cpu_physical_memory_clear_dirty_range(ram_addr_t start,
}
+/* Called with RCU critical section */
static inline
uint64_t cpu_physical_memory_sync_dirty_bitmap(RAMBlock *rb,
ram_addr_t start,
@@ -432,8 +433,6 @@ uint64_t cpu_physical_memory_sync_dirty_bitmap(RAMBlock *rb,
DIRTY_MEMORY_BLOCK_SIZE);
unsigned long page = BIT_WORD(start >> TARGET_PAGE_BITS);
- rcu_read_lock();
-
src = atomic_rcu_read(
&ram_list.dirty_memory[DIRTY_MEMORY_MIGRATION])->blocks;
@@ -453,8 +452,6 @@ uint64_t cpu_physical_memory_sync_dirty_bitmap(RAMBlock *rb,
idx++;
}
}
-
- rcu_read_unlock();
} else {
ram_addr_t offset = rb->offset;
diff --git a/migration/ram.c b/migration/ram.c
index 89eec7ee9d..48969db84b 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -1674,6 +1674,7 @@ static inline bool migration_bitmap_clear_dirty(RAMState
*rs,
return ret;
}
+/* Called with RCU critical section */
static void migration_bitmap_sync_range(RAMState *rs, RAMBlock *rb,
ram_addr_t length)
{
--
2.21.0
- [Qemu-devel] [PULL 00/21] Migration pull request, Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 01/21] migration: fix multifd_recv event typo, Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 02/21] migration-test: rename parameter to parameter_int, Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 03/21] migration/multifd: call multifd_send_sync_main when sending RAM_SAVE_FLAG_EOS, Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 04/21] migration/xbzrle: update cache and current_data in one place, Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 05/21] cutils: remove one unnecessary pointer operation, Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 06/21] migration/multifd: sync packet_num after all thread are done, Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 07/21] migration/ram.c: reset complete_round when we gets a queued page, Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 08/21] migration: No need to take rcu during sync_dirty_bitmap,
Juan Quintela <=
- [Qemu-devel] [PULL 09/21] memory: Don't set migration bitmap when without migration, Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 10/21] bitmap: Add bitmap_copy_with_{src|dst}_offset(), Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 11/21] memory: Pass mr into snapshot_and_clear_dirty, Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 12/21] memory: Introduce memory listener hook log_clear(), Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 13/21] kvm: Update comments for sync_dirty_bitmap, Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 14/21] kvm: Persistent per kvmslot dirty bitmap, Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 15/21] kvm: Introduce slots lock for memory listener, Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 16/21] kvm: Support KVM_CLEAR_DIRTY_LOG, Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 17/21] migration: Split log_clear() into smaller chunks, Juan Quintela, 2019/07/15
- [Qemu-devel] [PULL 18/21] migration: allow private destination ram with x-ignore-shared, Juan Quintela, 2019/07/15