b705db35b7
- kvm-Acceptance-tests-add-Linux-initrd-checking-test.patch [bz#1669922] - kvm-mmap-alloc-unfold-qemu_ram_mmap.patch [bz#1671519] - kvm-mmap-alloc-fix-hugetlbfs-misaligned-length-in-ppc64.patch [bz#1671519] - kvm-BZ1653590-Require-at-least-64kiB-pages-for-downstrea.patch [bz#1653590] - kvm-block-Fix-invalidate_cache-error-path-for-parent-act.patch [bz#1673014] - kvm-virtio-scsi-Move-BlockBackend-back-to-the-main-AioCo.patch [bz#1656276 bz#1662508] - kvm-scsi-disk-Acquire-the-AioContext-in-scsi_-_realize.patch [bz#1656276 bz#1662508] - kvm-virtio-scsi-Forbid-devices-with-different-iothreads-.patch [bz#1656276 bz#1662508] - Resolves: bz#1653590 ([Fast train]had better stop qemu immediately while guest was making use of an improper page size) - Resolves: bz#1656276 (qemu-kvm core dumped after hotplug the deleted disk with iothread parameter) - Resolves: bz#1662508 (Qemu core dump when start guest with two disks using same drive) - Resolves: bz#1669922 (Backport avocado-qemu tests for QEMU 3.1) - Resolves: bz#1671519 (RHEL8.0 Snapshot3 - qemu doesn't free up hugepage memory when hotplug/hotunplug using memory-backend-file (qemu-kvm)) - Resolves: bz#1673014 (Local VM and migrated VM on the same host can run with same RAW file as visual disk source while without shareable configured or lock manager enabled)
187 lines
5.5 KiB
Diff
187 lines
5.5 KiB
Diff
From c5f17f695247757f61b430ad32079b903331be02 Mon Sep 17 00:00:00 2001
|
|
From: Markus Armbruster <armbru@redhat.com>
|
|
Date: Thu, 7 Feb 2019 12:18:17 +0000
|
|
Subject: [PATCH 6/8] virtio-scsi: Move BlockBackend back to the main
|
|
AioContext on unplug
|
|
|
|
RH-Author: Markus Armbruster <armbru@redhat.com>
|
|
Message-id: <20190207121819.20092-2-armbru@redhat.com>
|
|
Patchwork-id: 84290
|
|
O-Subject: [RHEL-8.0/AV qemu-kvm PATCH 1/3] virtio-scsi: Move BlockBackend back to the main AioContext on unplug
|
|
Bugzilla: 1656276 1662508
|
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
|
RH-Acked-by: Max Reitz <mreitz@redhat.com>
|
|
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
|
|
From: Alberto Garcia <berto@igalia.com>
|
|
|
|
This fixes a crash when attaching a disk to a SCSI device using
|
|
iothreads, then detaching it and reattaching it again. Test case
|
|
included.
|
|
|
|
Signed-off-by: Alberto Garcia <berto@igalia.com>
|
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
(cherry picked from commit a6f230c8d13a7ff3a0c7f1097412f44bfd9eff0b)
|
|
[Trivial conflict in tests/qemu-iotests/group due to lack of commit
|
|
1c4e7b640b resolved]
|
|
Signed-off-by: Markus Armbruster <armbru@redhat.com>
|
|
|
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
|
---
|
|
hw/scsi/virtio-scsi.c | 6 ++++
|
|
tests/qemu-iotests/240 | 89 ++++++++++++++++++++++++++++++++++++++++++++++
|
|
tests/qemu-iotests/240.out | 18 ++++++++++
|
|
tests/qemu-iotests/group | 1 +
|
|
4 files changed, 114 insertions(+)
|
|
create mode 100755 tests/qemu-iotests/240
|
|
create mode 100644 tests/qemu-iotests/240.out
|
|
|
|
diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c
|
|
index 9f754c4..f0d4f10 100644
|
|
--- a/hw/scsi/virtio-scsi.c
|
|
+++ b/hw/scsi/virtio-scsi.c
|
|
@@ -833,6 +833,12 @@ static void virtio_scsi_hotunplug(HotplugHandler *hotplug_dev, DeviceState *dev,
|
|
virtio_scsi_release(s);
|
|
}
|
|
|
|
+ if (s->ctx) {
|
|
+ virtio_scsi_acquire(s);
|
|
+ blk_set_aio_context(sd->conf.blk, qemu_get_aio_context());
|
|
+ virtio_scsi_release(s);
|
|
+ }
|
|
+
|
|
qdev_simple_device_unplug_cb(hotplug_dev, dev, errp);
|
|
}
|
|
|
|
diff --git a/tests/qemu-iotests/240 b/tests/qemu-iotests/240
|
|
new file mode 100755
|
|
index 0000000..ead7ee0
|
|
--- /dev/null
|
|
+++ b/tests/qemu-iotests/240
|
|
@@ -0,0 +1,89 @@
|
|
+#!/bin/bash
|
|
+#
|
|
+# Test hot plugging and unplugging with iothreads
|
|
+#
|
|
+# Copyright (C) 2019 Igalia, S.L.
|
|
+# Author: Alberto Garcia <berto@igalia.com>
|
|
+#
|
|
+# This program is free software; you can redistribute it and/or modify
|
|
+# it under the terms of the GNU General Public License as published by
|
|
+# the Free Software Foundation; either version 2 of the License, or
|
|
+# (at your option) any later version.
|
|
+#
|
|
+# This program is distributed in the hope that it will be useful,
|
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+# GNU General Public License for more details.
|
|
+#
|
|
+# You should have received a copy of the GNU General Public License
|
|
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
+#
|
|
+
|
|
+# creator
|
|
+owner=berto@igalia.com
|
|
+
|
|
+seq=`basename $0`
|
|
+echo "QA output created by $seq"
|
|
+
|
|
+status=1 # failure is the default!
|
|
+
|
|
+# get standard environment, filters and checks
|
|
+. ./common.rc
|
|
+. ./common.filter
|
|
+
|
|
+_supported_fmt generic
|
|
+_supported_proto generic
|
|
+_supported_os Linux
|
|
+
|
|
+do_run_qemu()
|
|
+{
|
|
+ echo Testing: "$@"
|
|
+ $QEMU -nographic -qmp stdio -serial none "$@"
|
|
+ echo
|
|
+}
|
|
+
|
|
+# Remove QMP events from (pretty-printed) output. Doesn't handle
|
|
+# nested dicts correctly, but we don't get any of those in this test.
|
|
+_filter_qmp_events()
|
|
+{
|
|
+ tr '\n' '\t' | sed -e \
|
|
+ 's/{\s*"timestamp":\s*{[^}]*},\s*"event":[^,}]*\(,\s*"data":\s*{[^}]*}\)\?\s*}\s*//g' \
|
|
+ | tr '\t' '\n'
|
|
+}
|
|
+
|
|
+run_qemu()
|
|
+{
|
|
+ do_run_qemu "$@" 2>&1 | _filter_qmp | _filter_qmp_events
|
|
+}
|
|
+
|
|
+case "$QEMU_DEFAULT_MACHINE" in
|
|
+ s390-ccw-virtio)
|
|
+ virtio_scsi=virtio-scsi-ccw
|
|
+ ;;
|
|
+ *)
|
|
+ virtio_scsi=virtio-scsi-pci
|
|
+ ;;
|
|
+esac
|
|
+
|
|
+echo
|
|
+echo === Unplug a SCSI disk and then plug it again ===
|
|
+echo
|
|
+
|
|
+run_qemu <<EOF
|
|
+{ "execute": "qmp_capabilities" }
|
|
+{ "execute": "blockdev-add", "arguments": {"driver": "null-co", "node-name": "hd0"}}
|
|
+{ "execute": "object-add", "arguments": {"qom-type": "iothread", "id": "iothread0"}}
|
|
+{ "execute": "device_add", "arguments": {"id": "scsi0", "driver": "${virtio_scsi}", "iothread": "iothread0"}}
|
|
+{ "execute": "device_add", "arguments": {"id": "scsi-hd0", "driver": "scsi-hd", "drive": "hd0"}}
|
|
+{ "execute": "device_del", "arguments": {"id": "scsi-hd0"}}
|
|
+{ "execute": "device_add", "arguments": {"id": "scsi-hd0", "driver": "scsi-hd", "drive": "hd0"}}
|
|
+{ "execute": "device_del", "arguments": {"id": "scsi-hd0"}}
|
|
+{ "execute": "device_del", "arguments": {"id": "scsi0"}}
|
|
+{ "execute": "blockdev-del", "arguments": {"node-name": "hd0"}}
|
|
+{ "execute": "quit"}
|
|
+EOF
|
|
+
|
|
+# success, all done
|
|
+echo "*** done"
|
|
+rm -f $seq.full
|
|
+status=0
|
|
diff --git a/tests/qemu-iotests/240.out b/tests/qemu-iotests/240.out
|
|
new file mode 100644
|
|
index 0000000..432d981
|
|
--- /dev/null
|
|
+++ b/tests/qemu-iotests/240.out
|
|
@@ -0,0 +1,18 @@
|
|
+QA output created by 240
|
|
+
|
|
+=== Unplug a SCSI disk and then plug it again ===
|
|
+
|
|
+Testing:
|
|
+QMP_VERSION
|
|
+{"return": {}}
|
|
+{"return": {}}
|
|
+{"return": {}}
|
|
+{"return": {}}
|
|
+{"return": {}}
|
|
+{"return": {}}
|
|
+{"return": {}}
|
|
+{"return": {}}
|
|
+{"return": {}}
|
|
+{"return": {}}
|
|
+{"return": {}}
|
|
+*** done
|
|
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
|
|
index 268fefa..27cfeeb 100644
|
|
--- a/tests/qemu-iotests/group
|
|
+++ b/tests/qemu-iotests/group
|
|
@@ -234,3 +234,4 @@
|
|
234 auto quick migration
|
|
235 auto quick
|
|
238 auto quick
|
|
+240 auto quick
|
|
--
|
|
1.8.3.1
|
|
|