57e05be343
We only need to call both the BlockDriver's callback and the parent
callbacks when going from undrained to drained or vice versa. A second
drain section doesn't make a difference for the driver or the parent,
they weren't supposed to send new requests before and after the second
drain.
One thing that gets in the way is the 'ignore_bds_parents' parameter in
bdrv_do_drained_begin_quiesce() and bdrv_do_drained_end(): It means that
bdrv_drain_all_begin() increases bs->quiesce_counter, but does not
quiesce the parent through BdrvChildClass callbacks. If an additional
drain section is started now, bs->quiesce_counter will be non-zero, but
we would still need to quiesce the parent through BdrvChildClass in
order to keep things consistent (and unquiesce it on the matching
bdrv_drained_end(), even though the counter would not reach 0 yet as
long as the bdrv_drain_all() section is still active).
Instead of keeping track of this, let's just get rid of the parameter.
It was introduced in commit
|
||
---|---|---|
.. | ||
accounting.h | ||
aio_task.h | ||
aio-wait.h | ||
aio.h | ||
block_backup.h | ||
block_int-common.h | ||
block_int-global-state.h | ||
block_int-io.h | ||
block_int.h | ||
block-common.h | ||
block-copy.h | ||
block-global-state.h | ||
block-hmp-cmds.h | ||
block-io.h | ||
block.h | ||
blockjob_int.h | ||
blockjob.h | ||
dirty-bitmap.h | ||
export.h | ||
fuse.h | ||
nbd.h | ||
nvme.h | ||
qapi.h | ||
qdict.h | ||
raw-aio.h | ||
replication.h | ||
reqlist.h | ||
snapshot.h | ||
thread-pool.h | ||
throttle-groups.h | ||
write-threshold.h |