On Tue, Oct 30, 2018 at 06:05:18PM +0800, Fei Li wrote:
[...]
@@ -1366,6 +1373,10 @@ bool multifd_recv_new_channel(QIOChannel *ioc)
QEMU_THREAD_JOINABLE);
atomic_inc(&multifd_recv_state->count);
return multifd_recv_state->count == migrate_multifd_channels();
+fail:
+ qemu_fclose(mis->from_src_file);
+ mis->from_src_file = NULL;
+ return false;
Do we need this?
I'd suggest to put all cleanups into a single function. For dest vm
I say it's process_incoming_migration_bh.
Regards,
Not sure whether I understand correctly, if multifd_recv_new_channel()
fails,
that means migration_incoming_process() will not be called, then
process_incoming_migration_co() and process_incoming_migration_bh()
will not be called either. In that way, there is no cleanup.
Sorry the funtion name I wanted to paste is something like
migration_incoming_state_destroy()... Anyway I still don't feel that
right to close the mis->from_src_file in a multifd special path.
For now, I'll either ignore the cleanup part (AFAIU the TLS failure
will also ignore it when migration_tls_channel_process_incoming fails)
and just print the extra error message,