[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH 17/20] Modify migrate_fd_put_ready() when ft_mod
From: |
Yoshiaki Tamura |
Subject: |
[Qemu-devel] [RFC PATCH 17/20] Modify migrate_fd_put_ready() when ft_mode is on. |
Date: |
Wed, 21 Apr 2010 14:57:22 +0900 |
When ft_mode is on, migrate_fd_put_ready() would open ft_transaction
file and turn on event_tap. To end or cancel ft_transaction, ft_mode
and event_tap is turned off.
Signed-off-by: Yoshiaki Tamura <address@hidden>
---
migration.c | 36 +++++++++++++++++++++++++++++++++---
1 files changed, 33 insertions(+), 3 deletions(-)
diff --git a/migration.c b/migration.c
index 3cc47fc..c81fdb4 100644
--- a/migration.c
+++ b/migration.c
@@ -494,8 +494,32 @@ void migrate_fd_put_ready(void *opaque)
} else {
state = MIG_STATE_COMPLETED;
}
- migrate_fd_cleanup(s);
- s->state = state;
+
+ if (ft_mode && state == MIG_STATE_COMPLETED) {
+ /* close buffered_file and open ft_transaction.
+ * Note: file discriptor won't get closed,
+ * but reused by ft_transaction. */
+ socket_set_block(s->fd);
+ socket_set_nodelay(s->fd);
+ qemu_fclose(s->file);
+ s->file = qemu_fopen_ops_ft_tranx(s,
+ migrate_fd_put_buffer,
+ migrate_fd_put_vector,
+ migrate_fd_get_buffer,
+ NULL,
+ migrate_fd_close,
+ 1);
+
+ /* events are tapped from now. */
+ event_tap_on();
+
+ if (old_vm_running) {
+ vm_start();
+ }
+ } else {
+ migrate_fd_cleanup(s);
+ s->state = state;
+ }
}
}
@@ -515,8 +539,14 @@ void migrate_fd_cancel(MigrationState *mig_state)
DPRINTF("cancelling migration\n");
s->state = MIG_STATE_CANCELLED;
- qemu_savevm_state_cancel(s->mon, s->file);
+ if (ft_mode == FT_TRANSACTION) {
+ qemu_transaction_cancel(s->file);
+ ft_mode = FT_OFF;
+ event_tap_off();
+ }
+
+ qemu_savevm_state_cancel(s->mon, s->file);
migrate_fd_cleanup(s);
}
--
1.7.0.31.g1df487
- [Qemu-devel] [RFC PATCH 00/20] Kemari for KVM v0.1, Yoshiaki Tamura, 2010/04/21
- [Qemu-devel] [RFC PATCH 16/20] Introduce event_tap fucntions and ft_tranx_ready()., Yoshiaki Tamura, 2010/04/21
- [Qemu-devel] [RFC PATCH 20/20] Introduce -k option to enable FT migration mode (Kemari)., Yoshiaki Tamura, 2010/04/21
- [Qemu-devel] [RFC PATCH 03/20] Use cpu_physical_memory_set_dirty_range() to update phys_ram_dirty., Yoshiaki Tamura, 2010/04/21
- [Qemu-devel] [RFC PATCH 13/20] Introduce util functions to control ft_transaction from savevm layer., Yoshiaki Tamura, 2010/04/21
- [Qemu-devel] [RFC PATCH 14/20] Upgrade QEMU_FILE_VERSION from 3 to 4, and introduce qemu_savevm_state_all()., Yoshiaki Tamura, 2010/04/21
- [Qemu-devel] [RFC PATCH 12/20] Introduce fault tolerant VM transaction QEMUFile and ft_mode., Yoshiaki Tamura, 2010/04/21
- [Qemu-devel] [RFC PATCH 17/20] Modify migrate_fd_put_ready() when ft_mode is on.,
Yoshiaki Tamura <=
- [Qemu-devel] [RFC PATCH 06/20] Introduce iovec util functions, qemu_iovec_to_vector() and qemu_iovec_to_size()., Yoshiaki Tamura, 2010/04/21
- [Qemu-devel] [RFC PATCH 02/20] Introduce cpu_physical_memory_get_dirty_range()., Yoshiaki Tamura, 2010/04/21
- [Qemu-devel] [RFC PATCH 18/20] Modify tcp_accept_incoming_migration() to handle ft_mode, and add a hack not to close fd when ft_mode is enabled., Yoshiaki Tamura, 2010/04/21
- [Qemu-devel] [RFC PATCH 05/20] Introduce put_vector() and get_vector to QEMUFile and qemu_fopen_ops()., Yoshiaki Tamura, 2010/04/21
[Qemu-devel] [RFC PATCH 15/20] Introduce FT mode support to configure., Yoshiaki Tamura, 2010/04/21