Re: [Qemu-block] [PATCH 4/7] blockjob: centralize QMP event emissions
On Thu, Oct 13, 2016 at 06:56:59PM -0400, John Snow wrote: > There's no reason to leave this to blockdev; we can do it in blockjobs > directly and get rid of an extra callback for most users. > > All non-internal events, even those created outside of QMP, will > consistently emit events. > > Signed-off-by: John Snow> --- > block/commit.c| 8 > block/mirror.c| 6 ++ > block/stream.c| 7 +++ > block/trace-events| 5 ++--- > blockdev.c| 42 -- > blockjob.c| 23 +++ > include/block/block_int.h | 17 - > include/block/blockjob.h | 17 - > 8 files changed, 42 insertions(+), 83 deletions(-) > > diff --git a/block/commit.c b/block/commit.c > index f29e341..475a375 100644 > --- a/block/commit.c > +++ b/block/commit.c > @@ -209,8 +209,8 @@ static const BlockJobDriver commit_job_driver = { > > void commit_start(const char *job_id, BlockDriverState *bs, >BlockDriverState *base, BlockDriverState *top, int64_t > speed, > - BlockdevOnError on_error, BlockCompletionFunc *cb, > - void *opaque, const char *backing_file_str, Error **errp) > + BlockdevOnError on_error, const char *backing_file_str, > + Error **errp) > { > CommitBlockJob *s; > BlockReopenQueue *reopen_queue = NULL; > @@ -233,7 +233,7 @@ void commit_start(const char *job_id, BlockDriverState > *bs, > } > > s = block_job_create(job_id, _job_driver, bs, speed, > - BLOCK_JOB_DEFAULT, cb, opaque, errp); > + BLOCK_JOB_DEFAULT, NULL, NULL, errp); > if (!s) { > return; > } > @@ -276,7 +276,7 @@ void commit_start(const char *job_id, BlockDriverState > *bs, > s->on_error = on_error; > s->common.co = qemu_coroutine_create(commit_run, s); > > -trace_commit_start(bs, base, top, s, s->common.co, opaque); > +trace_commit_start(bs, base, top, s, s->common.co); > qemu_coroutine_enter(s->common.co); > } > > diff --git a/block/mirror.c b/block/mirror.c > index 15d2d10..4374fb4 100644 > --- a/block/mirror.c > +++ b/block/mirror.c > @@ -979,9 +979,7 @@ void mirror_start(const char *job_id, BlockDriverState > *bs, >MirrorSyncMode mode, BlockMirrorBackingMode backing_mode, >BlockdevOnError on_source_error, >BlockdevOnError on_target_error, > - bool unmap, > - BlockCompletionFunc *cb, > - void *opaque, Error **errp) > + bool unmap, Error **errp) > { > bool is_none_mode; > BlockDriverState *base; > @@ -994,7 +992,7 @@ void mirror_start(const char *job_id, BlockDriverState > *bs, > base = mode == MIRROR_SYNC_MODE_TOP ? backing_bs(bs) : NULL; > mirror_start_job(job_id, bs, BLOCK_JOB_DEFAULT, target, replaces, > speed, granularity, buf_size, backing_mode, > - on_source_error, on_target_error, unmap, cb, opaque, > errp, > + on_source_error, on_target_error, unmap, NULL, NULL, > errp, > _job_driver, is_none_mode, base, false); > } > > diff --git a/block/stream.c b/block/stream.c > index eeb6f52..7d6877d 100644 > --- a/block/stream.c > +++ b/block/stream.c > @@ -216,13 +216,12 @@ static const BlockJobDriver stream_job_driver = { > > void stream_start(const char *job_id, BlockDriverState *bs, >BlockDriverState *base, const char *backing_file_str, > - int64_t speed, BlockdevOnError on_error, > - BlockCompletionFunc *cb, void *opaque, Error **errp) > + int64_t speed, BlockdevOnError on_error, Error **errp) > { > StreamBlockJob *s; > > s = block_job_create(job_id, _job_driver, bs, speed, > - BLOCK_JOB_DEFAULT, cb, opaque, errp); > + BLOCK_JOB_DEFAULT, NULL, NULL, errp); > if (!s) { > return; > } > @@ -232,6 +231,6 @@ void stream_start(const char *job_id, BlockDriverState > *bs, > > s->on_error = on_error; > s->common.co = qemu_coroutine_create(stream_run, s); > -trace_stream_start(bs, base, s, s->common.co, opaque); > +trace_stream_start(bs, base, s, s->common.co); > qemu_coroutine_enter(s->common.co); > } > diff --git a/block/trace-events b/block/trace-events > index 05fa13c..c12f91b 100644 > --- a/block/trace-events > +++ b/block/trace-events > @@ -20,11 +20,11 @@ bdrv_co_do_copy_on_readv(void *bs, int64_t offset, > unsigned int bytes, int64_t c > > # block/stream.c > stream_one_iteration(void *s, int64_t sector_num, int nb_sectors, int > is_allocated) "s %p sector_num %"PRId64" nb_sectors %d is_allocated %d" > -stream_start(void *bs, void *base, void *s,
Re: [Qemu-block] [PATCH 4/7] blockjob: centralize QMP event emissions
Am 14.10.2016 um 00:56 hat John Snow geschrieben: > There's no reason to leave this to blockdev; we can do it in blockjobs > directly and get rid of an extra callback for most users. > > All non-internal events, even those created outside of QMP, will > consistently emit events. > > Signed-off-by: John SnowReviewed-by: Kevin Wolf
[Qemu-block] [PATCH 4/7] blockjob: centralize QMP event emissions
There's no reason to leave this to blockdev; we can do it in blockjobs directly and get rid of an extra callback for most users. All non-internal events, even those created outside of QMP, will consistently emit events. Signed-off-by: John Snow--- block/commit.c| 8 block/mirror.c| 6 ++ block/stream.c| 7 +++ block/trace-events| 5 ++--- blockdev.c| 42 -- blockjob.c| 23 +++ include/block/block_int.h | 17 - include/block/blockjob.h | 17 - 8 files changed, 42 insertions(+), 83 deletions(-) diff --git a/block/commit.c b/block/commit.c index f29e341..475a375 100644 --- a/block/commit.c +++ b/block/commit.c @@ -209,8 +209,8 @@ static const BlockJobDriver commit_job_driver = { void commit_start(const char *job_id, BlockDriverState *bs, BlockDriverState *base, BlockDriverState *top, int64_t speed, - BlockdevOnError on_error, BlockCompletionFunc *cb, - void *opaque, const char *backing_file_str, Error **errp) + BlockdevOnError on_error, const char *backing_file_str, + Error **errp) { CommitBlockJob *s; BlockReopenQueue *reopen_queue = NULL; @@ -233,7 +233,7 @@ void commit_start(const char *job_id, BlockDriverState *bs, } s = block_job_create(job_id, _job_driver, bs, speed, - BLOCK_JOB_DEFAULT, cb, opaque, errp); + BLOCK_JOB_DEFAULT, NULL, NULL, errp); if (!s) { return; } @@ -276,7 +276,7 @@ void commit_start(const char *job_id, BlockDriverState *bs, s->on_error = on_error; s->common.co = qemu_coroutine_create(commit_run, s); -trace_commit_start(bs, base, top, s, s->common.co, opaque); +trace_commit_start(bs, base, top, s, s->common.co); qemu_coroutine_enter(s->common.co); } diff --git a/block/mirror.c b/block/mirror.c index 15d2d10..4374fb4 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -979,9 +979,7 @@ void mirror_start(const char *job_id, BlockDriverState *bs, MirrorSyncMode mode, BlockMirrorBackingMode backing_mode, BlockdevOnError on_source_error, BlockdevOnError on_target_error, - bool unmap, - BlockCompletionFunc *cb, - void *opaque, Error **errp) + bool unmap, Error **errp) { bool is_none_mode; BlockDriverState *base; @@ -994,7 +992,7 @@ void mirror_start(const char *job_id, BlockDriverState *bs, base = mode == MIRROR_SYNC_MODE_TOP ? backing_bs(bs) : NULL; mirror_start_job(job_id, bs, BLOCK_JOB_DEFAULT, target, replaces, speed, granularity, buf_size, backing_mode, - on_source_error, on_target_error, unmap, cb, opaque, errp, + on_source_error, on_target_error, unmap, NULL, NULL, errp, _job_driver, is_none_mode, base, false); } diff --git a/block/stream.c b/block/stream.c index eeb6f52..7d6877d 100644 --- a/block/stream.c +++ b/block/stream.c @@ -216,13 +216,12 @@ static const BlockJobDriver stream_job_driver = { void stream_start(const char *job_id, BlockDriverState *bs, BlockDriverState *base, const char *backing_file_str, - int64_t speed, BlockdevOnError on_error, - BlockCompletionFunc *cb, void *opaque, Error **errp) + int64_t speed, BlockdevOnError on_error, Error **errp) { StreamBlockJob *s; s = block_job_create(job_id, _job_driver, bs, speed, - BLOCK_JOB_DEFAULT, cb, opaque, errp); + BLOCK_JOB_DEFAULT, NULL, NULL, errp); if (!s) { return; } @@ -232,6 +231,6 @@ void stream_start(const char *job_id, BlockDriverState *bs, s->on_error = on_error; s->common.co = qemu_coroutine_create(stream_run, s); -trace_stream_start(bs, base, s, s->common.co, opaque); +trace_stream_start(bs, base, s, s->common.co); qemu_coroutine_enter(s->common.co); } diff --git a/block/trace-events b/block/trace-events index 05fa13c..c12f91b 100644 --- a/block/trace-events +++ b/block/trace-events @@ -20,11 +20,11 @@ bdrv_co_do_copy_on_readv(void *bs, int64_t offset, unsigned int bytes, int64_t c # block/stream.c stream_one_iteration(void *s, int64_t sector_num, int nb_sectors, int is_allocated) "s %p sector_num %"PRId64" nb_sectors %d is_allocated %d" -stream_start(void *bs, void *base, void *s, void *co, void *opaque) "bs %p base %p s %p co %p opaque %p" +stream_start(void *bs, void *base, void *s, void *co) "bs %p base %p s %p co %p" # block/commit.c commit_one_iteration(void *s, int64_t sector_num, int nb_sectors, int is_allocated) "s %p sector_num %"PRId64" nb_sectors %d is_allocated %d"