From 4dd0b04e30c35cb59eb14405bea546fcd6c9c76e Mon Sep 17 00:00:00 2001 From: mii Date: Tue, 23 Apr 2024 01:16:47 +0000 Subject: [PATCH] add dirty-ring capability --- migration/migration-hmp-cmds.c | 8 ++++++-- migration/options.c | 7 +++++++ migration/options.h | 1 + qapi/migration.json | 4 +++- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/migration/migration-hmp-cmds.c b/migration/migration-hmp-cmds.c index e041932beb..309e07e4de 100644 --- a/migration/migration-hmp-cmds.c +++ b/migration/migration-hmp-cmds.c @@ -236,8 +236,12 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdict) info->vfio->transferred >> 10); } - monitor_printf(mon, "kvm_dirty_ring_enabled: %s\n", - kvm_dirty_ring_enabled() ? "on" : "off"); + if (kvm_enabled()) { + monitor_printf(mon, "kvm-dirty-ring-enabled: %s\n", + kvm_dirty_ring_enabled() ? "on" : "off"); + monitor_printf(mon, "dirty-ring-capability: %s\n", + migrate_dirty_ring() ? "on" : "off"); + } qapi_free_MigrationInfo(info); diff --git a/migration/options.c b/migration/options.c index bfd7753b69..37ea1672d0 100644 --- a/migration/options.c +++ b/migration/options.c @@ -379,6 +379,13 @@ bool migrate_zero_copy_send(void) return s->capabilities[MIGRATION_CAPABILITY_ZERO_COPY_SEND]; } +bool migrate_dirty_ring(void) +{ + MigrationState *s = migrate_get_current(); + + return s->capabilities[MIGRATION_CAPABILITY_DIRTY_RING]; +} + /* pseudo capabilities */ bool migrate_multifd_flush_after_each_section(void) diff --git a/migration/options.h b/migration/options.h index ab8199e207..73bf1721a8 100644 --- a/migration/options.h +++ b/migration/options.h @@ -44,6 +44,7 @@ bool migrate_validate_uuid(void); bool migrate_xbzrle(void); bool migrate_zero_blocks(void); bool migrate_zero_copy_send(void); +bool migrate_dirty_ring(void); /* * pseudo capabilities diff --git a/qapi/migration.json b/qapi/migration.json index 8c65b90328..e16bee56c3 100644 --- a/qapi/migration.json +++ b/qapi/migration.json @@ -534,6 +534,8 @@ # each RAM page. Requires a migration URI that supports seeking, # such as a file. (since 9.0) # +# @dirty-ring: Dirty ring. (since 9.0) +# # Features: # # @deprecated: Member @block is deprecated. Use blockdev-mirror with @@ -558,7 +560,7 @@ { 'name': 'x-ignore-shared', 'features': [ 'unstable' ] }, 'validate-uuid', 'background-snapshot', 'zero-copy-send', 'postcopy-preempt', 'switchover-ack', - 'dirty-limit', 'mapped-ram'] } + 'dirty-limit', 'mapped-ram', 'dirty-ring'] } ## # @MigrationCapabilityStatus: