[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 2/4] blockjob: add block_jobs_info_list()
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[PATCH 2/4] blockjob: add block_jobs_info_list() |
Date: |
Thu, 19 Nov 2020 16:16:32 +0300 |
Move qmp_query_block_jobs() functionality to blockjob.c. We'll need it
in block.c which is not always compiled together with blockdev.c
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
include/block/blockjob.h | 7 +++++++
blockdev.c | 26 +-------------------------
blockjob.c | 29 +++++++++++++++++++++++++++++
3 files changed, 37 insertions(+), 25 deletions(-)
diff --git a/include/block/blockjob.h b/include/block/blockjob.h
index 35faa3aa26..2e66d529e2 100644
--- a/include/block/blockjob.h
+++ b/include/block/blockjob.h
@@ -173,4 +173,11 @@ bool block_job_is_internal(BlockJob *job);
*/
const BlockJobDriver *block_job_driver(BlockJob *job);
+/**
+ * block_jobs_info_list:
+ *
+ * Returns the list of jobs info.
+ */
+BlockJobInfoList *block_jobs_info_list(Error **errp);
+
#endif
diff --git a/blockdev.c b/blockdev.c
index 6f103e5ce7..b5f11c524b 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3670,31 +3670,7 @@ void qmp_x_blockdev_change(const char *parent, bool
has_child,
BlockJobInfoList *qmp_query_block_jobs(Error **errp)
{
- BlockJobInfoList *head = NULL, **p_next = &head;
- BlockJob *job;
-
- for (job = block_job_next(NULL); job; job = block_job_next(job)) {
- BlockJobInfoList *elem;
- AioContext *aio_context;
-
- if (block_job_is_internal(job)) {
- continue;
- }
- elem = g_new0(BlockJobInfoList, 1);
- aio_context = blk_get_aio_context(job->blk);
- aio_context_acquire(aio_context);
- elem->value = block_job_query(job, errp);
- aio_context_release(aio_context);
- if (!elem->value) {
- g_free(elem);
- qapi_free_BlockJobInfoList(head);
- return NULL;
- }
- *p_next = elem;
- p_next = &elem->next;
- }
-
- return head;
+ return block_jobs_info_list(errp);
}
void qmp_x_blockdev_set_iothread(const char *node_name, StrOrNull *iothread,
diff --git a/blockjob.c b/blockjob.c
index 98ac8af982..9d0bed01c2 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -515,3 +515,32 @@ BlockErrorAction block_job_error_action(BlockJob *job,
BlockdevOnError on_err,
}
return action;
}
+
+BlockJobInfoList *block_jobs_info_list(Error **errp)
+{
+ BlockJobInfoList *head = NULL, **p_next = &head;
+ BlockJob *job;
+
+ for (job = block_job_next(NULL); job; job = block_job_next(job)) {
+ BlockJobInfoList *elem;
+ AioContext *aio_context;
+
+ if (block_job_is_internal(job)) {
+ continue;
+ }
+ elem = g_new0(BlockJobInfoList, 1);
+ aio_context = blk_get_aio_context(job->blk);
+ aio_context_acquire(aio_context);
+ elem->value = block_job_query(job, errp);
+ aio_context_release(aio_context);
+ if (!elem->value) {
+ g_free(elem);
+ qapi_free_BlockJobInfoList(head);
+ return NULL;
+ }
+ *p_next = elem;
+ p_next = &elem->next;
+ }
+
+ return head;
+}
--
2.21.3