Am 24.07.2012 13:03, schrieb Paolo Bonzini: > Extract it out of the implementation of query-block-jobs. > > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > --- > blockdev.c | 15 ++------------- > blockjob.c | 11 +++++++++++ > blockjob.h | 8 ++++++++ > 3 files changed, 21 insertions(+), 13 deletions(-) > > diff --git a/blockdev.c b/blockdev.c > index e066f8f..dc099f9 100644 > --- a/blockdev.c > +++ b/blockdev.c > @@ -1166,19 +1166,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; > } > diff --git a/blockjob.c b/blockjob.c > index 9737a43..a947a6e 100644 > --- a/blockjob.c > +++ b/blockjob.c > @@ -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_new(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; > +}
Why did you convert the initialisation to separate statement? If you really want to do this, I think using g_new0 would be safer now, but I actually like compound literals better. Kevin