blockjob: query driver-specific info via a new 'query' driver method
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com> Message-ID: <20231031135431.393137-9-f.ebner@proxmox.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
701efc9f2d
commit
59fd82544d
@ -378,6 +378,7 @@ BlockJobInfo *block_job_query_locked(BlockJob *job, Error **errp)
|
|||||||
{
|
{
|
||||||
BlockJobInfo *info;
|
BlockJobInfo *info;
|
||||||
uint64_t progress_current, progress_total;
|
uint64_t progress_current, progress_total;
|
||||||
|
const BlockJobDriver *drv = block_job_driver(job);
|
||||||
|
|
||||||
GLOBAL_STATE_CODE();
|
GLOBAL_STATE_CODE();
|
||||||
|
|
||||||
@ -407,6 +408,11 @@ BlockJobInfo *block_job_query_locked(BlockJob *job, Error **errp)
|
|||||||
g_strdup(error_get_pretty(job->job.err)) :
|
g_strdup(error_get_pretty(job->job.err)) :
|
||||||
g_strdup(strerror(-job->job.ret));
|
g_strdup(strerror(-job->job.ret));
|
||||||
}
|
}
|
||||||
|
if (drv->query) {
|
||||||
|
job_unlock();
|
||||||
|
drv->query(job, info);
|
||||||
|
job_lock();
|
||||||
|
}
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,6 +74,11 @@ struct BlockJobDriver {
|
|||||||
* Note that this can already be called before the job coroutine is running.
|
* Note that this can already be called before the job coroutine is running.
|
||||||
*/
|
*/
|
||||||
void (*change)(BlockJob *job, BlockJobChangeOptions *opts, Error **errp);
|
void (*change)(BlockJob *job, BlockJobChangeOptions *opts, Error **errp);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Query information specific to this kind of block job.
|
||||||
|
*/
|
||||||
|
void (*query)(BlockJob *job, BlockJobInfo *info);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user