]> git.proxmox.com Git - mirror_qemu.git/commit - blockjob.c
blockjob: drop BlockJob.blk field
authorVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Thu, 6 May 2021 14:13:57 +0000 (17:13 +0300)
committerVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Tue, 28 Dec 2021 14:18:59 +0000 (15:18 +0100)
commit985cac8f200443ad952becc03b07c51ff4f80983
tree85b44c75f58b8bf7e4e2057e0ec17948c0248e6f
parent1b177bbea0b8725e627eb18eb60b8866cd8e1df6
blockjob: drop BlockJob.blk field

It's unused now (except for permission handling)[*]. The only reasonable
user of it was block-stream job, recently updated to use own blk. And
other block jobs prefer to use own source node related objects.

So, the arguments of dropping the field are:

 - block jobs prefer not to use it
 - block jobs usually has more then one node to operate on, and better
   to operate symmetrically (for example has both source and target
   blk's in specific block-job state structure)

*: BlockJob.blk is used to keep some permissions. We simply move
permissions to block-job child created in block_job_create() together
with blk.

In mirror, we just should not care anymore about restoring state of
blk. Most probably this code could be dropped long ago, after dropping
bs->job pointer. Now it finally goes away together with BlockJob.blk
itself.

iotest 141 output is updated, as "bdrv_has_blk(bs)" check in
qmp_blockdev_del() doesn't fail (we don't have blk now). Still, new
error message looks even better.

In iotest 283 we need to add a job id, otherwise "Invalid job ID"
happens now earlier than permission check (as permissions moved from
blk to block-job node).

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Nikita Lapshin <nikita.lapshin@virtuozzo.com>
block/mirror.c
blockjob.c
include/block/blockjob.h
tests/qemu-iotests/141.out
tests/qemu-iotests/283
tests/qemu-iotests/283.out