migration/dirtyrate: move RAMBLOCK_FOREACH_MIGRATABLE into ram.h

RAMBLOCK_FOREACH_MIGRATABLE is need in dirtyrate measure,
move the existing definition up into migration/ram.h

Signed-off-by: Chuan Zheng <zhengchuan@huawei.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: David Edmondson <david.edmondson@oracle.com>
Reviewed-by: Li Qiang <liq3ea@gmail.com>
Message-Id: <1600237327-33618-6-git-send-email-zhengchuan@huawei.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
Chuan Zheng 2020-09-16 14:22:00 +08:00 committed by Dr. David Alan Gilbert
parent c9a58d719b
commit 3ded54b1bd
3 changed files with 12 additions and 10 deletions

View File

@ -20,6 +20,7 @@
#include "qemu/rcu_queue.h" #include "qemu/rcu_queue.h"
#include "qapi/qapi-commands-migration.h" #include "qapi/qapi-commands-migration.h"
#include "migration.h" #include "migration.h"
#include "ram.h"
#include "dirtyrate.h" #include "dirtyrate.h"
static int CalculatingState = DIRTY_RATE_STATUS_UNSTARTED; static int CalculatingState = DIRTY_RATE_STATUS_UNSTARTED;

View File

@ -158,21 +158,12 @@ out:
return ret; return ret;
} }
static bool ramblock_is_ignored(RAMBlock *block) bool ramblock_is_ignored(RAMBlock *block)
{ {
return !qemu_ram_is_migratable(block) || return !qemu_ram_is_migratable(block) ||
(migrate_ignore_shared() && qemu_ram_is_shared(block)); (migrate_ignore_shared() && qemu_ram_is_shared(block));
} }
/* Should be holding either ram_list.mutex, or the RCU lock. */
#define RAMBLOCK_FOREACH_NOT_IGNORED(block) \
INTERNAL_RAMBLOCK_FOREACH(block) \
if (ramblock_is_ignored(block)) {} else
#define RAMBLOCK_FOREACH_MIGRATABLE(block) \
INTERNAL_RAMBLOCK_FOREACH(block) \
if (!qemu_ram_is_migratable(block)) {} else
#undef RAMBLOCK_FOREACH #undef RAMBLOCK_FOREACH
int foreach_not_ignored_block(RAMBlockIterFunc func, void *opaque) int foreach_not_ignored_block(RAMBlockIterFunc func, void *opaque)

View File

@ -37,6 +37,16 @@ extern MigrationStats ram_counters;
extern XBZRLECacheStats xbzrle_counters; extern XBZRLECacheStats xbzrle_counters;
extern CompressionStats compression_counters; extern CompressionStats compression_counters;
bool ramblock_is_ignored(RAMBlock *block);
/* Should be holding either ram_list.mutex, or the RCU lock. */
#define RAMBLOCK_FOREACH_NOT_IGNORED(block) \
INTERNAL_RAMBLOCK_FOREACH(block) \
if (ramblock_is_ignored(block)) {} else
#define RAMBLOCK_FOREACH_MIGRATABLE(block) \
INTERNAL_RAMBLOCK_FOREACH(block) \
if (!qemu_ram_is_migratable(block)) {} else
int xbzrle_cache_resize(int64_t new_size, Error **errp); int xbzrle_cache_resize(int64_t new_size, Error **errp);
uint64_t ram_bytes_remaining(void); uint64_t ram_bytes_remaining(void);
uint64_t ram_bytes_total(void); uint64_t ram_bytes_total(void);