aboutsummaryrefslogtreecommitdiff
path: root/migration/migration.h
diff options
context:
space:
mode:
authorDr. David Alan Gilbert <dgilbert@redhat.com>2018-06-13 11:26:41 +0100
committerDr. David Alan Gilbert <dgilbert@redhat.com>2018-06-15 14:40:56 +0100
commitad767bed5af559ed32c6dabdcaccc3f75731e1f4 (patch)
treee29268c63f734e0d24788e5f1356d72647ab9d24 /migration/migration.h
parent7e555c6c58f095c9286814c3f9cd06196feba8a1 (diff)
downloadqemu-ad767bed5af559ed32c6dabdcaccc3f75731e1f4.zip
qemu-ad767bed5af559ed32c6dabdcaccc3f75731e1f4.tar.gz
qemu-ad767bed5af559ed32c6dabdcaccc3f75731e1f4.tar.bz2
migration: Wake rate limiting for urgent requests
Rate limiting sleeps the migration thread for a while when it runs out of bandwidth; but sometimes we want to wake up to get on with something more urgent (like a postcopy request). Here we use a semaphore with a timedwait instead of a simple sleep; Incrementing the sempahore will wake it up sooner. Anything that consumes these urgent events must decrement the sempahore. Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Message-Id: <20180613102642.23995-3-dgilbert@redhat.com> Reviewed-by: Peter Xu <peterx@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Diffstat (limited to 'migration/migration.h')
-rw-r--r--migration/migration.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/migration/migration.h b/migration/migration.h
index 31d3ed1..64a7b33 100644
--- a/migration/migration.h
+++ b/migration/migration.h
@@ -121,6 +121,11 @@ struct MigrationState
*/
QemuMutex qemu_file_lock;
+ /*
+ * Used to allow urgent requests to override rate limiting.
+ */
+ QemuSemaphore rate_limit_sem;
+
/* bytes already send at the beggining of current interation */
uint64_t iteration_initial_bytes;
/* time at the start of current iteration */
@@ -287,4 +292,7 @@ void init_dirty_bitmap_incoming_migration(void);
#define qemu_ram_foreach_block \
#warning "Use qemu_ram_foreach_block_migratable in migration code"
+void migration_make_urgent_request(void);
+void migration_consume_urgent_request(void);
+
#endif