[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 24/27] migration: take finer locking
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PATCH 24/27] migration: take finer locking |
Date: |
Tue, 24 Jul 2012 20:36:49 +0200 |
Instead of locking the whole migration_thread inside loop, just lock
migration_fd_put_notify, that is what interacts with the rest of the
world.
Signed-off-by: Juan Quintela <address@hidden>
---
buffered_file.c | 2 --
migration.c | 5 +++++
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/buffered_file.c b/buffered_file.c
index b5e809c..de07a05 100644
--- a/buffered_file.c
+++ b/buffered_file.c
@@ -207,9 +207,7 @@ static void *buffered_file_thread(void *opaque)
/* usleep expects microseconds */
usleep((expire_time - current_time)*1000);
}
- qemu_mutex_lock_iothread();
buffered_put_buffer(s, NULL, 0, 0);
- qemu_mutex_unlock_iothread();
}
g_free(s->buffer);
g_free(s);
diff --git a/migration.c b/migration.c
index da0f192..2f45f66 100644
--- a/migration.c
+++ b/migration.c
@@ -327,8 +327,10 @@ void migrate_fd_put_ready(MigrationState *s)
int ret;
static bool first_time = true;
+ qemu_mutex_lock_iothread();
if (s->state != MIG_STATE_ACTIVE) {
DPRINTF("put_ready returning because of non-active state\n");
+ qemu_mutex_unlock_iothread();
return;
}
if (first_time) {
@@ -338,6 +340,7 @@ void migrate_fd_put_ready(MigrationState *s)
if (ret < 0) {
DPRINTF("failed, %d\n", ret);
migrate_fd_error(s);
+ qemu_mutex_unlock_iothread();
return;
}
}
@@ -374,6 +377,8 @@ void migrate_fd_put_ready(MigrationState *s)
}
}
}
+ qemu_mutex_unlock_iothread();
+
}
static void migrate_fd_cancel(MigrationState *s)
--
1.7.10.4
- Re: [Qemu-devel] [PATCH 10/27] Separate migration bitmap, (continued)
- [Qemu-devel] [PATCH 07/27] ram: Introduce migration_bitmap_test_and_reset_dirty(), Juan Quintela, 2012/07/24
- [Qemu-devel] [PATCH 11/27] BufferedFile: append, then flush, Juan Quintela, 2012/07/24
- [Qemu-devel] [PATCH 17/27] buffered_file: unfold migrate_fd_put_buffer, Juan Quintela, 2012/07/24
- [Qemu-devel] [PATCH 16/27] buffered_file: unfold migrate_fd_put_buffer, Juan Quintela, 2012/07/24
- [Qemu-devel] [PATCH 13/27] buffered_file: opaque is MigrationState, Juan Quintela, 2012/07/24
- [Qemu-devel] [PATCH 22/27] migration: make writes blocking, Juan Quintela, 2012/07/24
- [Qemu-devel] [PATCH 21/27] migration: stop all cpus correctly, Juan Quintela, 2012/07/24
- [Qemu-devel] [PATCH 20/27] migration: make qemu_fopen_ops_buffered() return void, Juan Quintela, 2012/07/24
- [Qemu-devel] [PATCH 19/27] buffered_file: Move from using a timer to use a thread, Juan Quintela, 2012/07/24
- [Qemu-devel] [PATCH 24/27] migration: take finer locking,
Juan Quintela <=
- [Qemu-devel] [PATCH 23/27] migration: remove unfreeze logic, Juan Quintela, 2012/07/24
- [Qemu-devel] [PATCH 14/27] buffered_file: unfold migrate_fd_put_buffer, Juan Quintela, 2012/07/24
- [Qemu-devel] [PATCH 18/27] buffered_file: We can access directly to bandwidth_limit, Juan Quintela, 2012/07/24
- [Qemu-devel] [PATCH 25/27] buffered_file: Unfold the trick to restart generating migration data, Juan Quintela, 2012/07/24
- [Qemu-devel] [PATCH 15/27] buffered_file: unfold migrate_fd_put_ready, Juan Quintela, 2012/07/24
- [Qemu-devel] [PATCH 27/27] buffered_file: unfold buffered_append in buffered_put_buffer, Juan Quintela, 2012/07/24
- [Qemu-devel] [PATCH 26/27] buffered_file: don't flush on put buffer, Juan Quintela, 2012/07/24
- Re: [Qemu-devel] [RFC 00/27] Migration thread (WIP), Orit Wasserman, 2012/07/25
- Re: [Qemu-devel] [RFC 00/27] Migration thread (WIP), Jan Kiszka, 2012/07/26