[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v5 07/16] block/stream: refactor stream to use j
From: |
Jeff Cody |
Subject: |
Re: [Qemu-devel] [PATCH v5 07/16] block/stream: refactor stream to use job callbacks |
Date: |
Thu, 6 Sep 2018 12:58:11 -0400 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
On Thu, Sep 06, 2018 at 09:02:16AM -0400, John Snow wrote:
> Signed-off-by: John Snow <address@hidden>
> Reviewed-by: Max Reitz <address@hidden>
Reviewed-by: Jeff Cody <address@hidden>
> ---
> block/stream.c | 23 +++++++++++++++--------
> 1 file changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/block/stream.c b/block/stream.c
> index 700eb239e4..81a7ec8ece 100644
> --- a/block/stream.c
> +++ b/block/stream.c
> @@ -54,16 +54,16 @@ static int coroutine_fn stream_populate(BlockBackend *blk,
> return blk_co_preadv(blk, offset, qiov.size, &qiov,
> BDRV_REQ_COPY_ON_READ);
> }
>
> -static void stream_exit(Job *job)
> +static int stream_prepare(Job *job)
> {
> StreamBlockJob *s = container_of(job, StreamBlockJob, common.job);
> BlockJob *bjob = &s->common;
> BlockDriverState *bs = blk_bs(bjob->blk);
> BlockDriverState *base = s->base;
> Error *local_err = NULL;
> - int ret = job->ret;
> + int ret = 0;
>
> - if (!job_is_cancelled(job) && bs->backing && ret == 0) {
> + if (bs->backing) {
> const char *base_id = NULL, *base_fmt = NULL;
> if (base) {
> base_id = s->backing_file_str;
> @@ -75,12 +75,19 @@ static void stream_exit(Job *job)
> bdrv_set_backing_hd(bs, base, &local_err);
> if (local_err) {
> error_report_err(local_err);
> - ret = -EPERM;
> - goto out;
> + return -EPERM;
> }
> }
>
> -out:
> + return ret;
> +}
> +
> +static void stream_clean(Job *job)
> +{
> + StreamBlockJob *s = container_of(job, StreamBlockJob, common.job);
> + BlockJob *bjob = &s->common;
> + BlockDriverState *bs = blk_bs(bjob->blk);
> +
> /* Reopen the image back in read-only mode if necessary */
> if (s->bs_flags != bdrv_get_flags(bs)) {
> /* Give up write permissions before making it read-only */
> @@ -89,7 +96,6 @@ out:
> }
>
> g_free(s->backing_file_str);
> - job->ret = ret;
> }
>
> static int coroutine_fn stream_run(Job *job, Error **errp)
> @@ -206,7 +212,8 @@ static const BlockJobDriver stream_job_driver = {
> .job_type = JOB_TYPE_STREAM,
> .free = block_job_free,
> .run = stream_run,
> - .exit = stream_exit,
> + .prepare = stream_prepare,
> + .clean = stream_clean,
> .user_resume = block_job_user_resume,
> .drain = block_job_drain,
> },
> --
> 2.14.4
>
- [Qemu-devel] [PATCH v5 03/16] block/stream: add block job creation flags, (continued)
- [Qemu-devel] [PATCH v5 03/16] block/stream: add block job creation flags, John Snow, 2018/09/06
- [Qemu-devel] [PATCH v5 10/16] tests/test-blockjob-txn: move .exit to .clean, John Snow, 2018/09/06
- [Qemu-devel] [PATCH v5 01/16] block/commit: add block job creation flags, John Snow, 2018/09/06
- [Qemu-devel] [PATCH v5 05/16] block/mirror: don't install backing chain on abort, John Snow, 2018/09/06
- [Qemu-devel] [PATCH v5 08/16] tests/blockjob: replace Blockjob with Job, John Snow, 2018/09/06
- [Qemu-devel] [PATCH v5 07/16] block/stream: refactor stream to use job callbacks, John Snow, 2018/09/06
- Re: [Qemu-devel] [PATCH v5 07/16] block/stream: refactor stream to use job callbacks,
Jeff Cody <=
- [Qemu-devel] [PATCH v5 14/16] qapi/block-stream: expose new job properties, John Snow, 2018/09/06
- [Qemu-devel] [PATCH v5 16/16] blockdev: document transactional shortcomings, John Snow, 2018/09/06
- [Qemu-devel] [PATCH v5 02/16] block/mirror: add block job creation flags, John Snow, 2018/09/06
- [Qemu-devel] [PATCH v5 04/16] block/commit: refactor commit to use job callbacks, John Snow, 2018/09/06
- [Qemu-devel] [PATCH v5 11/16] jobs: remove .exit callback, John Snow, 2018/09/06