On 09.10.23 12:46, Fiona Ebner wrote:
> Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
> ---
>
> No changes in v2.
>
> blockjob.c | 4 ++++
> include/block/blockjob_int.h | 5 +++++
> 2 files changed, 9 insertions(+)
>
> diff --git a/blockjob.c b/blockjob.c
> index f8cf6e58e2..7e8cfad0fd 100644
> --- a/blockjob.c
> +++ b/blockjob.c
> @@ -376,6 +376,7 @@ BlockJobInfo *block_job_query_locked(BlockJob *job, Error **errp)
> {
> BlockJobInfo *info;
> uint64_t progress_current, progress_total;
> + const BlockJobDriver *drv = block_job_driver(job);
>
> GLOBAL_STATE_CODE();
>
> @@ -405,6 +406,9 @@ BlockJobInfo *block_job_query_locked(BlockJob *job, Error **errp)
> g_strdup(error_get_pretty(job->job.err)) :
> g_strdup(strerror(-job->job.ret));
> }
> + if (drv->query) {
> + drv->query(job, info);
Other handlers are called with job lock dropped.
> + }
> return info;
> }
>
> diff --git a/include/block/blockjob_int.h b/include/block/blockjob_int.h
> index f604985315..4ab88b3c97 100644
> --- a/include/block/blockjob_int.h
> +++ b/include/block/blockjob_int.h
> @@ -72,6 +72,11 @@ struct BlockJobDriver {
> * Change the @job's options according to @opts.
> */
> void (*change)(BlockJob *job, BlockJobChangeOptions *opts, Error **errp);
> +
> + /*
> + * Query information specific to this kind of block job.
> + */
> + void (*query)(BlockJob *job, BlockJobInfo *info);
> };
>
> /*
--
Best regards,
Vladimir