[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 09/36] migration: don't "write" when migration i
From: |
Juan Quintela |
Subject: |
Re: [Qemu-devel] [PATCH 09/36] migration: don't "write" when migration is not active |
Date: |
Mon, 17 Oct 2011 19:04:03 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) |
Anthony Liguori <address@hidden> wrote:
> On 10/11/2011 05:00 AM, Juan Quintela wrote:
>> If migration is not active, just ignore writes.
>>
>> Signed-off-by: Juan Quintela<address@hidden>
>> ---
>> migration.c | 4 ++++
>> 1 files changed, 4 insertions(+), 0 deletions(-)
>>
>> diff --git a/migration.c b/migration.c
>> index 7ac1fc2..090c925 100644
>> --- a/migration.c
>> +++ b/migration.c
>> @@ -323,6 +323,10 @@ ssize_t migrate_fd_put_buffer(void *opaque, const void
>> *data, size_t size)
>> FdMigrationState *s = opaque;
>> ssize_t ret;
>>
>> + if (s->state != MIG_STATE_ACTIVE) {
>> + return -EIO;
>> + }
>> +
>
> Buffered file is buffered. The migration may complete before the
> buffer is completely drained. That means additional put_buffer calls
> may come after the migration state has moved to complete.
static void migrate_fd_completed(MigrationState *s)
{
DPRINTF("setting completed state\n");
if (migrate_fd_cleanup(s) < 0) {
s->state = MIG_STATE_ERROR;
} else {
s->state = MIG_STATE_COMPLETED;
runstate_set(RUN_STATE_POSTMIGRATE);
}
notifier_list_notify(&migration_state_notifiers, s);
}
After all the changes in this thread, that is the only place that can
change s->state to "MIG_STATE_COMPLETED", as you can see, we do that
after doing a migrate_fd_cleanup(), and that just flush + close the fd.
So, I still think that everything is done as expected. (testing confirms
that both migrate_cancel after one error don't hang and migration
without errors ends as expected.
Later, Juan.
> Regards,
> Anthony Liguori
>
>> do {
>> ret = s->write(s, data, size);
>> } while (ret == -1&& ((s->get_error(s)) == EINTR));
- [Qemu-devel] [PATCH 36/36] migration: make migration-{tcp, unix} consistent, (continued)
- [Qemu-devel] [PATCH 36/36] migration: make migration-{tcp, unix} consistent, Juan Quintela, 2011/10/11
- [Qemu-devel] [PATCH 17/36] migration: Fold MigrationState into FdMigrationState, Juan Quintela, 2011/10/11
- [Qemu-devel] [PATCH 18/36] migration: Rename FdMigrationState MigrationState, Juan Quintela, 2011/10/11
- [Qemu-devel] [PATCH 10/36] migration: set error if select return one error, Juan Quintela, 2011/10/11
- [Qemu-devel] [PATCH 26/36] migration: Remove get_status() accessor, Juan Quintela, 2011/10/11
- [Qemu-devel] [PATCH 27/36] migration: Remove migration cancel() callback, Juan Quintela, 2011/10/11
- [Qemu-devel] [PATCH 16/36] migration: Use FdMigrationState instead of MigrationState when possible, Juan Quintela, 2011/10/11
- [Qemu-devel] [PATCH 09/36] migration: don't "write" when migration is not active, Juan Quintela, 2011/10/11
- [Qemu-devel] [PATCH 33/36] migration: Make state definitions local, Juan Quintela, 2011/10/11
- [Qemu-devel] [PATCH 32/36] migration: Export a function that tells if the migration has finished correctly, Juan Quintela, 2011/10/11
- [Qemu-devel] [PATCH 25/36] migration: Our release callback was just free, Juan Quintela, 2011/10/11
- Re: [Qemu-devel] [PATCH 25/36] migration: Our release callback was just free, Anthony Liguori, 2011/10/17