[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 25/27] blockjob: query driver-specific info via a new 'query' driv
From: |
Kevin Wolf |
Subject: |
[PULL 25/27] blockjob: query driver-specific info via a new 'query' driver method |
Date: |
Tue, 31 Oct 2023 19:59:16 +0100 |
From: Fiona Ebner <f.ebner@proxmox.com>
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>
---
include/block/blockjob_int.h | 5 +++++
blockjob.c | 6 ++++++
2 files changed, 11 insertions(+)
diff --git a/include/block/blockjob_int.h b/include/block/blockjob_int.h
index a4656d4cb5..18ee6f7bf0 100644
--- a/include/block/blockjob_int.h
+++ b/include/block/blockjob_int.h
@@ -74,6 +74,11 @@ struct BlockJobDriver {
* Note that this can already be called before the job coroutine is
running.
*/
void (*change)(BlockJob *job, BlockJobChangeOptions *opts, Error **errp);
+
+ /*
+ * Query information specific to this kind of block job.
+ */
+ void (*query)(BlockJob *job, BlockJobInfo *info);
};
/*
diff --git a/blockjob.c b/blockjob.c
index 5b4786a70f..5b24de356d 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -378,6 +378,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();
@@ -407,6 +408,11 @@ 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) {
+ job_unlock();
+ drv->query(job, info);
+ job_lock();
+ }
return info;
}
--
2.41.0
- [PULL 16/27] virtio: use defer_call() in virtio_irqfd_notify(), (continued)
- [PULL 16/27] virtio: use defer_call() in virtio_irqfd_notify(), Kevin Wolf, 2023/10/31
- [PULL 15/27] util/defer-call: move defer_call() to util/, Kevin Wolf, 2023/10/31
- [PULL 21/27] block/mirror: determine copy_to_target only once, Kevin Wolf, 2023/10/31
- [PULL 19/27] block/mirror: set actively_synced even after the job is ready, Kevin Wolf, 2023/10/31
- [PULL 20/27] block/mirror: move dirty bitmap to filter, Kevin Wolf, 2023/10/31
- [PULL 17/27] virtio-blk: remove batch notification BH, Kevin Wolf, 2023/10/31
- [PULL 13/27] blockdev: mirror: avoid potential deadlock when using iothread, Kevin Wolf, 2023/10/31
- [PULL 18/27] blockjob: introduce block-job-change QMP command, Kevin Wolf, 2023/10/31
- [PULL 09/27] block: Fix locking in media change monitor commands, Kevin Wolf, 2023/10/31
- [PULL 11/27] blockjob: drop AioContext lock before calling bdrv_graph_wrlock(), Kevin Wolf, 2023/10/31
- [PULL 25/27] blockjob: query driver-specific info via a new 'query' driver method,
Kevin Wolf <=
- [PULL 12/27] block: avoid potential deadlock during bdrv_graph_wrlock() in bdrv_close(), Kevin Wolf, 2023/10/31
- [PULL 14/27] block: rename blk_io_plug_call() API to defer_call(), Kevin Wolf, 2023/10/31
- [PULL 10/27] iotests: Test media change with iothreads, Kevin Wolf, 2023/10/31
- [PULL 23/27] qapi/block-core: use JobType for BlockJobInfo's type, Kevin Wolf, 2023/10/31
- [PULL 22/27] mirror: implement mirror_change method, Kevin Wolf, 2023/10/31
- [PULL 26/27] mirror: return mirror-specific information upon query, Kevin Wolf, 2023/10/31
- [PULL 27/27] iotests: add test for changing mirror's copy_mode, Kevin Wolf, 2023/10/31
- [PULL 24/27] qapi/block-core: turn BlockJobInfo into a union, Kevin Wolf, 2023/10/31
- [PULL 08/27] iotests: add tests for "qemu-img rebase" with compression, Kevin Wolf, 2023/10/31
- Re: [PULL 00/27] Block layer patches, Stefan Hajnoczi, 2023/10/31