]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
block: add block_job_query
authorPaolo Bonzini <pbonzini@redhat.com>
Fri, 28 Sep 2012 15:22:48 +0000 (17:22 +0200)
committerKevin Wolf <kwolf@redhat.com>
Fri, 28 Sep 2012 17:14:32 +0000 (19:14 +0200)
Extract it out of the implementation of info block-jobs.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
blockdev.c
blockjob.c
blockjob.h

index d3f91c0aea3fae7c1cb542f19fabdaedcff6a0d8..9a98ce9c897e01864ddb64d57fe209f607d14d7a 100644 (file)
@@ -1232,19 +1232,8 @@ static void do_qmp_query_block_jobs_one(void *opaque, BlockDriverState *bs)
     BlockJob *job = bs->job;
 
     if (job) {
-        BlockJobInfoList *elem;
-        BlockJobInfo *info = g_new(BlockJobInfo, 1);
-        *info = (BlockJobInfo){
-            .type   = g_strdup(job->job_type->job_type),
-            .device = g_strdup(bdrv_get_device_name(bs)),
-            .len    = job->len,
-            .offset = job->offset,
-            .speed  = job->speed,
-        };
-
-        elem = g_new0(BlockJobInfoList, 1);
-        elem->value = info;
-
+        BlockJobInfoList *elem = g_new0(BlockJobInfoList, 1);
+        elem->value = block_job_query(bs->job);
         (*prev)->next = elem;
         *prev = elem;
     }
index 9737a43b272fd54cb5d7f89771104475c6238e01..dea63f8c1f23a752c576f4d54317066ea7aa257d 100644 (file)
@@ -161,3 +161,14 @@ void block_job_sleep_ns(BlockJob *job, QEMUClock *clock, int64_t ns)
         job->busy = true;
     }
 }
+
+BlockJobInfo *block_job_query(BlockJob *job)
+{
+    BlockJobInfo *info = g_new0(BlockJobInfo, 1);
+    info->type   = g_strdup(job->job_type->job_type);
+    info->device = g_strdup(bdrv_get_device_name(job->bs));
+    info->len    = job->len;
+    info->offset = job->offset;
+    info->speed  = job->speed;
+    return info;
+}
index 753f5bcd1726cdfb6266046108c3d91182e1f60a..f3d8d58ce3060d3a316618fcf62a769649a79e58 100644 (file)
@@ -162,6 +162,14 @@ void block_job_cancel(BlockJob *job);
  */
 bool block_job_is_cancelled(BlockJob *job);
 
+/**
+ * block_job_query:
+ * @job: The job to get information about.
+ *
+ * Return information about a job.
+ */
+BlockJobInfo *block_job_query(BlockJob *job);
+
 /**
  * block_job_cancel_sync:
  * @job: The job to be canceled.