On 01/11/2018 19:27, Vladimir Sementsov-Ogievskiy wrote: > -/* See qcow2_compress definition for parameters description */ > -static ssize_t qcow2_co_compress(BlockDriverState *bs, > - void *dest, size_t dest_size, > - const void *src, size_t src_size) > +static ssize_t qcow2_co_do_compress(BlockDriverState *bs, > + void *dest, size_t dest_size, > + const void *src, size_t src_size, > + Qcow2CompressFunc func) > { > BDRVQcow2State *s = bs->opaque; > BlockAIOCB *acb; > @@ -3838,6 +3842,7 @@ static ssize_t qcow2_co_compress(BlockDriverState *bs, > .dest_size = dest_size, > .src = src, > .src_size = src_size, > + .func = func, > }; > > while (s->nb_compress_threads >= MAX_COMPRESS_THREADS) { > @@ -3860,6 +3865,22 @@ static ssize_t qcow2_co_compress(BlockDriverState *bs, > return arg.ret; > } >
Not a blocker for this patch, but I'll note that qcow2_co_do_compress could use thread_pool_submit_co. Also, qcow2_co_do_compress should be a "coroutine_fn". Paolo