migration: migration_thread_is_self

Define and export migration_thread_is_self to eliminate a dependency
on MigrationState.

Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
Link: https://lore.kernel.org/r/1710179338-294359-7-git-send-email-steven.sistare@oracle.com
Signed-off-by: Peter Xu <peterx@redhat.com>
This commit is contained in:
Steve Sistare 2024-03-11 10:48:53 -07:00 committed by Peter Xu
parent 714f33123b
commit 6e78563976
3 changed files with 9 additions and 4 deletions

View File

@ -61,6 +61,7 @@ void migration_object_init(void);
void migration_shutdown(void); void migration_shutdown(void);
bool migration_is_idle(void); bool migration_is_idle(void);
bool migration_is_active(void); bool migration_is_active(void);
bool migration_thread_is_self(void);
bool migration_is_setup_or_active(void); bool migration_is_setup_or_active(void);
bool migrate_mode_is_cpr(MigrationState *); bool migrate_mode_is_cpr(MigrationState *);

View File

@ -1647,6 +1647,13 @@ bool migration_is_active(void)
s->state == MIGRATION_STATUS_POSTCOPY_ACTIVE); s->state == MIGRATION_STATUS_POSTCOPY_ACTIVE);
} }
bool migration_thread_is_self(void)
{
MigrationState *s = current_migration;
return qemu_thread_is_self(&s->thread);
}
bool migrate_mode_is_cpr(MigrationState *s) bool migrate_mode_is_cpr(MigrationState *s)
{ {
return s->parameters.mode == MIG_MODE_CPR_REBOOT; return s->parameters.mode == MIG_MODE_CPR_REBOOT;

View File

@ -25,7 +25,6 @@
#include "sysemu/kvm.h" #include "sysemu/kvm.h"
#include "trace.h" #include "trace.h"
#include "migration/misc.h" #include "migration/misc.h"
#include "migration/migration.h"
/* /*
* Dirtylimit stop working if dirty page rate error * Dirtylimit stop working if dirty page rate error
@ -448,10 +447,8 @@ static void dirtylimit_cleanup(void)
*/ */
static bool dirtylimit_is_allowed(void) static bool dirtylimit_is_allowed(void)
{ {
MigrationState *ms = migrate_get_current();
if (migration_is_running() && if (migration_is_running() &&
(!qemu_thread_is_self(&ms->thread)) && !migration_thread_is_self() &&
migrate_dirty_limit() && migrate_dirty_limit() &&
dirtylimit_in_service()) { dirtylimit_in_service()) {
return false; return false;