diff options
author | Kevin Wolf <kwolf@redhat.com> | 2016-04-14 13:09:53 +0200 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2016-05-25 19:04:21 +0200 |
commit | 5c438bc68c5dd9671c234eb86ebf026b016b6e35 (patch) | |
tree | f122cc5b66bf57088818c5d12946777050ed9b5b /blockdev.c | |
parent | 8543c274141ade048c6a6070a095761a65acbb82 (diff) | |
download | qemu-5c438bc68c5dd9671c234eb86ebf026b016b6e35.zip |
backup: Use BlockBackend for I/O
This changes the backup block job to use the job's BlockBackend for
performing its I/O. job->bs isn't used by the backup code any more
afterwards.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Diffstat (limited to 'blockdev.c')
-rw-r--r-- | blockdev.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/blockdev.c b/blockdev.c index 66477ff347..717785eb8d 100644 --- a/blockdev.c +++ b/blockdev.c @@ -3293,8 +3293,8 @@ static void do_drive_backup(const char *device, const char *target, backup_start(bs, target_bs, speed, sync, bmap, on_source_error, on_target_error, block_job_cb, bs, txn, &local_err); + bdrv_unref(target_bs); if (local_err != NULL) { - bdrv_unref(target_bs); error_propagate(errp, local_err); goto out; } @@ -3378,12 +3378,10 @@ void do_blockdev_backup(const char *device, const char *target, } target_bs = blk_bs(target_blk); - bdrv_ref(target_bs); bdrv_set_aio_context(target_bs, aio_context); backup_start(bs, target_bs, speed, sync, NULL, on_source_error, on_target_error, block_job_cb, bs, txn, &local_err); if (local_err != NULL) { - bdrv_unref(target_bs); error_propagate(errp, local_err); } out: |