On Tue, Mar 27, 2018 at 05:10:37PM +0800, guangrong.xiao@xxxxxxxxx wrote: [...] > -static int compress_threads_load_setup(void) > +static int compress_threads_load_setup(QEMUFile *f) > { > int i, thread_count; > > @@ -2665,6 +2685,7 @@ static int compress_threads_load_setup(void) > } > decomp_param[i].stream.opaque = &decomp_param[i]; > > + decomp_param[i].file = f; On the source side the error will be set via: qemu_file_set_error(migrate_get_current()->to_dst_file, blen); Maybe we can do similar things using migrate_incoming_get_current() to avoid caching the QEMUFile multiple times? I think both are not good since qemu_file_set_error() can be called by multiple threads, but it's only setting a fault value so maybe it's fine. Other than that it looks good to me. Thanks, -- Peter Xu