Am 01.06.2021 um 07:57 hat Sergio Lopez geschrieben:
> Allow block backends to poll their devices/users to check if they have
> been quiesced when entering a drained section.
>
> This will be used in the next patch to wait for the NBD server to be
> completely quiesced.
>
> Suggested-by: Kevin Wolf <[email protected]>
> Signed-off-by: Sergio Lopez <[email protected]>
> ---
> block/block-backend.c | 7 ++++++-
> include/sysemu/block-backend.h | 4 ++++
> 2 files changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/block/block-backend.c b/block/block-backend.c
> index de5496af66..163ca05b97 100644
> --- a/block/block-backend.c
> +++ b/block/block-backend.c
> @@ -2393,8 +2393,13 @@ static void blk_root_drained_begin(BdrvChild *child)
> static bool blk_root_drained_poll(BdrvChild *child)
> {
> BlockBackend *blk = child->opaque;
> + int ret = 0;
It's really a bool.
> assert(blk->quiesce_counter);
> - return !!blk->in_flight;
> +
> + if (blk->dev_ops && blk->dev_ops->drained_poll) {
> + ret = blk->dev_ops->drained_poll(blk->dev_opaque);
> + }
> + return ret || !!blk->in_flight;
> }
Doesn't make a difference for correctness, of course, so whether you
change it or not:
Reviewed-by: Kevin Wolf <[email protected]>