0253757df8
- kvm-aarch64-rh-devices-add-CONFIG_PXB.patch [bz#1967502] - kvm-virtio-gpu-handle-partial-maps-properly.patch [bz#1974795] - kvm-x86-Add-x86-rhel8.5-machine-types.patch [bz#1957194] - kvm-redhat-x86-Enable-kvm-asyncpf-int-by-default.patch [bz#1957194] - kvm-block-backend-add-drained_poll.patch [bz#1957194] - kvm-nbd-server-Use-drained-block-ops-to-quiesce-the-serv.patch [bz#1957194] - kvm-disable-CONFIG_USB_STORAGE_BOT.patch [bz#1957194] - kvm-doc-Fix-some-mistakes-in-the-SEV-documentation.patch [bz#1957194] - kvm-docs-Add-SEV-ES-documentation-to-amd-memory-encrypti.patch [bz#1957194] - kvm-docs-interop-firmware.json-Add-SEV-ES-support.patch [bz#1957194] - kvm-qga-drop-StandardError-syslog.patch [bz#1947977] - kvm-Remove-iscsi-support.patch [bz#1967133] - Resolves: bz#1967502 ([aarch64] [qemu] Compile the PCIe expander bridge) - Resolves: bz#1974795 ([RHEL9-beta] [aarch64] Launch guest with virtio-gpu-pci and virtual smmu causes "virtio_gpu_dequeue_ctrl_func" ERROR) - Resolves: bz#1957194 (Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta) - Resolves: bz#1947977 (remove StandardError=syslog from qemu-guest-agent.service) - Resolves: bz#1967133 (QEMU: disable libiscsi in RHEL-9)
75 lines
2.7 KiB
Diff
75 lines
2.7 KiB
Diff
From e23a2be8c57666e091d9192e113a30ea06cd83ef Mon Sep 17 00:00:00 2001
|
|
From: Sergio Lopez Pascual <slp@redhat.com>
|
|
Date: Thu, 17 Jun 2021 09:13:20 -0400
|
|
Subject: [PATCH 05/12] block-backend: add drained_poll
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
RH-Author: Miroslav Rezanina <mrezanin@redhat.com>
|
|
RH-MergeRequest: 16: Synchronize with RHEL-AV 8.5 release 21 to RHEL 9
|
|
RH-Commit: [3/8] 4ad1f536b00a762a1b094d76383b74826228892a (mrezanin/centos-src-qemu-kvm)
|
|
RH-Bugzilla: 1957194
|
|
RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com>
|
|
RH-Acked-by: Daniel P. Berrangé <berrange@redhat.com>
|
|
|
|
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 <kwolf@redhat.com>
|
|
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
|
|
Reviewed-by: Eric Blake <eblake@redhat.com>
|
|
Signed-off-by: Sergio Lopez <slp@redhat.com>
|
|
Message-Id: <20210602060552.17433-2-slp@redhat.com>
|
|
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
|
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
(cherry picked from commit 095cc4d0f62513d75e9bc1da37f08d9e97f267c4)
|
|
Signed-off-by: Sergio Lopez <slp@redhat.com>
|
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
---
|
|
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 413af51f3b..05d8e5fb5d 100644
|
|
--- a/block/block-backend.c
|
|
+++ b/block/block-backend.c
|
|
@@ -2378,8 +2378,13 @@ static void blk_root_drained_begin(BdrvChild *child)
|
|
static bool blk_root_drained_poll(BdrvChild *child)
|
|
{
|
|
BlockBackend *blk = child->opaque;
|
|
+ bool busy = false;
|
|
assert(blk->quiesce_counter);
|
|
- return !!blk->in_flight;
|
|
+
|
|
+ if (blk->dev_ops && blk->dev_ops->drained_poll) {
|
|
+ busy = blk->dev_ops->drained_poll(blk->dev_opaque);
|
|
+ }
|
|
+ return busy || !!blk->in_flight;
|
|
}
|
|
|
|
static void blk_root_drained_end(BdrvChild *child, int *drained_end_counter)
|
|
diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h
|
|
index 880e903293..5423e3d9c6 100644
|
|
--- a/include/sysemu/block-backend.h
|
|
+++ b/include/sysemu/block-backend.h
|
|
@@ -66,6 +66,10 @@ typedef struct BlockDevOps {
|
|
* Runs when the backend's last drain request ends.
|
|
*/
|
|
void (*drained_end)(void *opaque);
|
|
+ /*
|
|
+ * Is the device still busy?
|
|
+ */
|
|
+ bool (*drained_poll)(void *opaque);
|
|
} BlockDevOps;
|
|
|
|
/* This struct is embedded in (the private) BlockBackend struct and contains
|
|
--
|
|
2.27.0
|
|
|