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