2021-12-21 13:18:58 +01:00
|
|
|
From: Lin Ma <lma@suse.com>
|
|
|
|
Date: Sat, 20 Nov 2021 18:05:57 +0800
|
|
|
|
Subject: scsi-generic: replace logical block count of response of READ
|
|
|
|
CAPACITY
|
|
|
|
MIME-Version: 1.0
|
|
|
|
Content-Type: text/plain; charset=UTF-8
|
|
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
|
|
|
|
Git-commit: 0000000000000000000000000000000000000000
|
|
|
|
References: [SUSE-JIRA] (SLE-20965)
|
|
|
|
|
|
|
|
While using SCSI passthrough, Following scenario makes qemu doesn't
|
|
|
|
realized the capacity change of remote scsi target:
|
|
|
|
1. online resize the scsi target.
|
|
|
|
2. issue 'rescan-scsi-bus.sh -s ...' in host.
|
|
|
|
3. issue 'rescan-scsi-bus.sh -s ...' in vm.
|
|
|
|
|
|
|
|
In above scenario I used to experienced errors while accessing the
|
|
|
|
additional disk space in vm. I think the reasonable operations should
|
|
|
|
be:
|
|
|
|
1. online resize the scsi target.
|
|
|
|
2. issue 'rescan-scsi-bus.sh -s ...' in host.
|
|
|
|
3. issue 'block_resize' via qmp to notify qemu.
|
|
|
|
4. issue 'rescan-scsi-bus.sh -s ...' in vm.
|
|
|
|
|
|
|
|
The errors disappear once I notify qemu by block_resize via qmp.
|
|
|
|
|
|
|
|
So this patch replaces the number of logical blocks of READ CAPACITY
|
|
|
|
response from scsi target by qemu's bs->total_sectors. If the user in
|
|
|
|
vm wants to access the additional disk space, The administrator of
|
|
|
|
host must notify qemu once resizeing the scsi target.
|
|
|
|
|
|
|
|
Bonus is that domblkinfo of libvirt can reflect the consistent capacity
|
|
|
|
information between host and vm in case of missing block_resize in qemu.
|
|
|
|
E.g:
|
|
|
|
...
|
|
|
|
<disk type='block' device='lun'>
|
|
|
|
<driver name='qemu' type='raw'/>
|
|
|
|
<source dev='/dev/sdc' index='1'/>
|
|
|
|
<backingStore/>
|
|
|
|
<target dev='sda' bus='scsi'/>
|
|
|
|
<alias name='scsi0-0-0-0'/>
|
|
|
|
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
|
|
|
|
</disk>
|
|
|
|
...
|
|
|
|
|
|
|
|
Before:
|
|
|
|
1. online resize the scsi target.
|
|
|
|
2. host:~ # rescan-scsi-bus.sh -s /dev/sdc
|
|
|
|
3. guest:~ # rescan-scsi-bus.sh -s /dev/sda
|
|
|
|
4 host:~ # virsh domblkinfo --domain $DOMAIN --human --device sda
|
|
|
|
Capacity: 4.000 GiB
|
|
|
|
Allocation: 0.000 B
|
|
|
|
Physical: 8.000 GiB
|
|
|
|
|
|
|
|
5. guest:~ # lsblk /dev/sda
|
|
|
|
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
|
|
|
|
sda 8:0 0 8G 0 disk
|
|
|
|
└─sda1 8:1 0 2G 0 part
|
|
|
|
|
|
|
|
After:
|
|
|
|
1. online resize the scsi target.
|
|
|
|
2. host:~ # rescan-scsi-bus.sh -s /dev/sdc
|
|
|
|
3. guest:~ # rescan-scsi-bus.sh -s /dev/sda
|
|
|
|
4 host:~ # virsh domblkinfo --domain $DOMAIN --human --device sda
|
|
|
|
Capacity: 4.000 GiB
|
|
|
|
Allocation: 0.000 B
|
|
|
|
Physical: 8.000 GiB
|
|
|
|
|
|
|
|
5. guest:~ # lsblk /dev/sda
|
|
|
|
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
|
|
|
|
sda 8:0 0 4G 0 disk
|
|
|
|
└─sda1 8:1 0 2G 0 part
|
|
|
|
|
|
|
|
Signed-off-by: Lin Ma <lma@suse.com>
|
|
|
|
---
|
|
|
|
hw/scsi/scsi-generic.c | 10 ++++++++--
|
|
|
|
1 file changed, 8 insertions(+), 2 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c
|
Accepting request 1006734 from home:dfaggioli:devel:Virtualization
- Runs of the test-suite seem much more stable now, in this version
of QEMU. (bsc#1203610) We are also fine re-enabling running them
in parallel.
- Switch QEMU Linux user to emulate the same CPU as the one of the
host by default. This is a bit conrtoversial and tricky, when
thinking about system emulation/virtualization. But for linux-user,
it should be just fine. (bsc#1203684)
* Patches added:
linux-user-use-max-as-default-CPU-model-.patch
- Be less verbose when packaging documentation. In fact, with just
a couple of (minor) re-arrangements, we can get rid of having to
list all the files all the time
- Package /etc/qemu/bridge.conf as '%config(noreplace). Next step
will probably be to move it to /usr/etc/qemu (bsc#1201944)
- Switch to %autosetup for all products (this required some changes
in update_git.sh)
- Run check-qtest sequentially, as it's more reliable, when in OBS
- Build with libbpf, fdt and capstone support
- Drop the patch adding our support document, and deal with that
in the spec file directly
* Patches dropped:
doc-add-our-support-doc-to-the-main-proj.patch
- Updated to latest upstream version 7.1
* https://wiki.qemu.org/ChangeLog/7.1
Be sure to also check the following pages:
* https://qemu-project.gitlab.io/qemu/about/removed-features.html
* https://qemu-project.gitlab.io/qemu/about/deprecated.html
Some notable changes:
* [x86] Support for architectural LBRs on KVM virtual machines
* [x86] The libopcode-based disassembler has been removed. Use
Capstone instead
* [LoongArch] Add initial support for the LoongArch64 architecture.
* [ARM] The emulated SMMUv3 now advertises support for SMMUv3.2-BBML2
* [ARM] The xlnx-zynqmp SoC model now implements the 4 TTC timers
* [ARM] The versal machine now models the Cortex-R5s in the Real-Time
Processing Unit (RPU) subsystem
* [ARM] The virt board now supports emulation of the GICv4.0
* [ARM] New emulated CPU types: Cortex-A76, Neoverse-N1
* [HPPA] Fix serial port pass-through from host to guest
* [HPPA] Lots of general code improvements and tidy-ups
* [RISC-V] RISC-V
* [RISC-V] Add support for privileged spec version 1.12.0
* [RISC-V] Use privileged spec version 1.12.0 for virt machine by default
* [RISC-V] Allow software access to MIP SEIP
* [RISC-V] Add initial support for the Sdtrig extension
* [RISC-V] Optimisations and improvements for the vector extension
* [VFIO] Experimental support for exposing emulated PCI devices over the
new vfio-user protocol (a vfio-user client is not yet available
in QEMU, though)
* [QMP] The on-cbw-error option for copy-before-write filter, to specify
behavior on CBW (copy before write) operation failure.
* [QMP] The cbw-timeout option for copy-before-write filter, to specify
timeout for CBW operation.
* [QMP] New commands query-stats and query-stats-schema to retrieve
statistics from various QEMU subsystems (right now only from
KVM).
* [QMP] The PanicAction can now be configured to report an exit-failure
(useful for automated testing)
* [Networking] QEMU can be compiled with the system slirp library even
when using CFI. This requires libslirp 4.7.
* [Migration] Support for zero-copy-send on Linux, which reduces CPU
usage on the source host. Note that locked memory is needed
to support this
* Patches added:
Revert-tests-qtest-enable-more-vhost-use.patch
meson-remove-pkgversion-from-CONFIG_STAM.patch
* Patches dropped:
AIO-Reduce-number-of-threads-for-32bit-h.patch
Makefile-Don-t-check-pc-bios-as-pre-requ.patch
Revert-8dcb404bff6d9147765d7dd3e9c849337.patch
Revert-qht-constify-qht_statistics_init.patch
XXX-dont-dump-core-on-sigabort.patch
acpi_piix4-Fix-migration-from-SLE11-SP2.patch
configure-only-populate-roms-if-softmmu.patch
configure-remove-pkgversion-from-CONFIG_.patch
coroutine-ucontext-use-QEMU_DEFINE_STATI.patch
coroutine-use-QEMU_DEFINE_STATIC_CO_TLS.patch
coroutine-win32-use-QEMU_DEFINE_STATIC_C.patch
hostmem-default-the-amount-of-prealloc-t.patch
hw-usb-hcd-ehci-fix-writeback-order.patch
i8254-Fix-migration-from-SLE11-SP2.patch
intc-exynos4210_gic-replace-snprintf-wit.patch
modules-generates-per-target-modinfo.patch
modules-introduces-module_kconfig-direct.patch
pc-bios-s390-ccw-net-avoid-warning-about.patch
pci-fix-overflow-in-snprintf-string-form.patch
qemu-cvs-gettimeofday.patch
qemu-cvs-ioctl_debug.patch
qemu-cvs-ioctl_nodirection.patch
qht-Revert-some-constification-in-qht.c.patch
qom-handle-case-of-chardev-spice-module-.patch
scsi-lsi53c895a-fix-use-after-free-in-ls.patch
scsi-lsi53c895a-really-fix-use-after-fre.patch
softmmu-Always-initialize-xlat-in-addres.patch
sphinx-change-default-language-to-en.patch
test-add-mapping-from-arch-of-i686-to-qe.patch
tests-Fix-block-tests-to-be-compatible-w.patch
tests-qtest-Move-the-fuzz-tests-to-x86-o.patch
usb-Help-compiler-out-to-avoid-a-warning.patch
OBS-URL: https://build.opensuse.org/request/show/1006734
OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=732
2022-09-29 08:46:40 +02:00
|
|
|
index 3d35d307e1a2dcb1390b7c319b85..aa3ae417ac726e9decf7e678e25f 100644
|
2021-12-21 13:18:58 +01:00
|
|
|
--- a/hw/scsi/scsi-generic.c
|
|
|
|
+++ b/hw/scsi/scsi-generic.c
|
Accepting request 1006734 from home:dfaggioli:devel:Virtualization
- Runs of the test-suite seem much more stable now, in this version
of QEMU. (bsc#1203610) We are also fine re-enabling running them
in parallel.
- Switch QEMU Linux user to emulate the same CPU as the one of the
host by default. This is a bit conrtoversial and tricky, when
thinking about system emulation/virtualization. But for linux-user,
it should be just fine. (bsc#1203684)
* Patches added:
linux-user-use-max-as-default-CPU-model-.patch
- Be less verbose when packaging documentation. In fact, with just
a couple of (minor) re-arrangements, we can get rid of having to
list all the files all the time
- Package /etc/qemu/bridge.conf as '%config(noreplace). Next step
will probably be to move it to /usr/etc/qemu (bsc#1201944)
- Switch to %autosetup for all products (this required some changes
in update_git.sh)
- Run check-qtest sequentially, as it's more reliable, when in OBS
- Build with libbpf, fdt and capstone support
- Drop the patch adding our support document, and deal with that
in the spec file directly
* Patches dropped:
doc-add-our-support-doc-to-the-main-proj.patch
- Updated to latest upstream version 7.1
* https://wiki.qemu.org/ChangeLog/7.1
Be sure to also check the following pages:
* https://qemu-project.gitlab.io/qemu/about/removed-features.html
* https://qemu-project.gitlab.io/qemu/about/deprecated.html
Some notable changes:
* [x86] Support for architectural LBRs on KVM virtual machines
* [x86] The libopcode-based disassembler has been removed. Use
Capstone instead
* [LoongArch] Add initial support for the LoongArch64 architecture.
* [ARM] The emulated SMMUv3 now advertises support for SMMUv3.2-BBML2
* [ARM] The xlnx-zynqmp SoC model now implements the 4 TTC timers
* [ARM] The versal machine now models the Cortex-R5s in the Real-Time
Processing Unit (RPU) subsystem
* [ARM] The virt board now supports emulation of the GICv4.0
* [ARM] New emulated CPU types: Cortex-A76, Neoverse-N1
* [HPPA] Fix serial port pass-through from host to guest
* [HPPA] Lots of general code improvements and tidy-ups
* [RISC-V] RISC-V
* [RISC-V] Add support for privileged spec version 1.12.0
* [RISC-V] Use privileged spec version 1.12.0 for virt machine by default
* [RISC-V] Allow software access to MIP SEIP
* [RISC-V] Add initial support for the Sdtrig extension
* [RISC-V] Optimisations and improvements for the vector extension
* [VFIO] Experimental support for exposing emulated PCI devices over the
new vfio-user protocol (a vfio-user client is not yet available
in QEMU, though)
* [QMP] The on-cbw-error option for copy-before-write filter, to specify
behavior on CBW (copy before write) operation failure.
* [QMP] The cbw-timeout option for copy-before-write filter, to specify
timeout for CBW operation.
* [QMP] New commands query-stats and query-stats-schema to retrieve
statistics from various QEMU subsystems (right now only from
KVM).
* [QMP] The PanicAction can now be configured to report an exit-failure
(useful for automated testing)
* [Networking] QEMU can be compiled with the system slirp library even
when using CFI. This requires libslirp 4.7.
* [Migration] Support for zero-copy-send on Linux, which reduces CPU
usage on the source host. Note that locked memory is needed
to support this
* Patches added:
Revert-tests-qtest-enable-more-vhost-use.patch
meson-remove-pkgversion-from-CONFIG_STAM.patch
* Patches dropped:
AIO-Reduce-number-of-threads-for-32bit-h.patch
Makefile-Don-t-check-pc-bios-as-pre-requ.patch
Revert-8dcb404bff6d9147765d7dd3e9c849337.patch
Revert-qht-constify-qht_statistics_init.patch
XXX-dont-dump-core-on-sigabort.patch
acpi_piix4-Fix-migration-from-SLE11-SP2.patch
configure-only-populate-roms-if-softmmu.patch
configure-remove-pkgversion-from-CONFIG_.patch
coroutine-ucontext-use-QEMU_DEFINE_STATI.patch
coroutine-use-QEMU_DEFINE_STATIC_CO_TLS.patch
coroutine-win32-use-QEMU_DEFINE_STATIC_C.patch
hostmem-default-the-amount-of-prealloc-t.patch
hw-usb-hcd-ehci-fix-writeback-order.patch
i8254-Fix-migration-from-SLE11-SP2.patch
intc-exynos4210_gic-replace-snprintf-wit.patch
modules-generates-per-target-modinfo.patch
modules-introduces-module_kconfig-direct.patch
pc-bios-s390-ccw-net-avoid-warning-about.patch
pci-fix-overflow-in-snprintf-string-form.patch
qemu-cvs-gettimeofday.patch
qemu-cvs-ioctl_debug.patch
qemu-cvs-ioctl_nodirection.patch
qht-Revert-some-constification-in-qht.c.patch
qom-handle-case-of-chardev-spice-module-.patch
scsi-lsi53c895a-fix-use-after-free-in-ls.patch
scsi-lsi53c895a-really-fix-use-after-fre.patch
softmmu-Always-initialize-xlat-in-addres.patch
sphinx-change-default-language-to-en.patch
test-add-mapping-from-arch-of-i686-to-qe.patch
tests-Fix-block-tests-to-be-compatible-w.patch
tests-qtest-Move-the-fuzz-tests-to-x86-o.patch
usb-Help-compiler-out-to-avoid-a-warning.patch
OBS-URL: https://build.opensuse.org/request/show/1006734
OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=732
2022-09-29 08:46:40 +02:00
|
|
|
@@ -322,11 +322,17 @@ static void scsi_read_complete(void * opaque, int ret)
|
2021-12-21 13:18:58 +01:00
|
|
|
if (r->req.cmd.buf[0] == READ_CAPACITY_10 &&
|
|
|
|
(ldl_be_p(&r->buf[0]) != 0xffffffffU || s->max_lba == 0)) {
|
|
|
|
s->blocksize = ldl_be_p(&r->buf[4]);
|
|
|
|
- s->max_lba = ldl_be_p(&r->buf[0]) & 0xffffffffULL;
|
|
|
|
+ BlockBackend *blk = s->conf.blk;
|
|
|
|
+ BlockDriverState *bs = blk_bs(blk);
|
|
|
|
+ s->max_lba = bs->total_sectors - 1;
|
|
|
|
+ stl_be_p(&r->buf[0], s->max_lba);
|
|
|
|
} else if (r->req.cmd.buf[0] == SERVICE_ACTION_IN_16 &&
|
|
|
|
(r->req.cmd.buf[1] & 31) == SAI_READ_CAPACITY_16) {
|
|
|
|
s->blocksize = ldl_be_p(&r->buf[8]);
|
|
|
|
- s->max_lba = ldq_be_p(&r->buf[0]);
|
|
|
|
+ BlockBackend *blk = s->conf.blk;
|
|
|
|
+ BlockDriverState *bs = blk_bs(blk);
|
|
|
|
+ s->max_lba = bs->total_sectors - 1;
|
|
|
|
+ stq_be_p(&r->buf[0], s->max_lba);
|
|
|
|
}
|
|
|
|
|
Accepting request 1006734 from home:dfaggioli:devel:Virtualization
- Runs of the test-suite seem much more stable now, in this version
of QEMU. (bsc#1203610) We are also fine re-enabling running them
in parallel.
- Switch QEMU Linux user to emulate the same CPU as the one of the
host by default. This is a bit conrtoversial and tricky, when
thinking about system emulation/virtualization. But for linux-user,
it should be just fine. (bsc#1203684)
* Patches added:
linux-user-use-max-as-default-CPU-model-.patch
- Be less verbose when packaging documentation. In fact, with just
a couple of (minor) re-arrangements, we can get rid of having to
list all the files all the time
- Package /etc/qemu/bridge.conf as '%config(noreplace). Next step
will probably be to move it to /usr/etc/qemu (bsc#1201944)
- Switch to %autosetup for all products (this required some changes
in update_git.sh)
- Run check-qtest sequentially, as it's more reliable, when in OBS
- Build with libbpf, fdt and capstone support
- Drop the patch adding our support document, and deal with that
in the spec file directly
* Patches dropped:
doc-add-our-support-doc-to-the-main-proj.patch
- Updated to latest upstream version 7.1
* https://wiki.qemu.org/ChangeLog/7.1
Be sure to also check the following pages:
* https://qemu-project.gitlab.io/qemu/about/removed-features.html
* https://qemu-project.gitlab.io/qemu/about/deprecated.html
Some notable changes:
* [x86] Support for architectural LBRs on KVM virtual machines
* [x86] The libopcode-based disassembler has been removed. Use
Capstone instead
* [LoongArch] Add initial support for the LoongArch64 architecture.
* [ARM] The emulated SMMUv3 now advertises support for SMMUv3.2-BBML2
* [ARM] The xlnx-zynqmp SoC model now implements the 4 TTC timers
* [ARM] The versal machine now models the Cortex-R5s in the Real-Time
Processing Unit (RPU) subsystem
* [ARM] The virt board now supports emulation of the GICv4.0
* [ARM] New emulated CPU types: Cortex-A76, Neoverse-N1
* [HPPA] Fix serial port pass-through from host to guest
* [HPPA] Lots of general code improvements and tidy-ups
* [RISC-V] RISC-V
* [RISC-V] Add support for privileged spec version 1.12.0
* [RISC-V] Use privileged spec version 1.12.0 for virt machine by default
* [RISC-V] Allow software access to MIP SEIP
* [RISC-V] Add initial support for the Sdtrig extension
* [RISC-V] Optimisations and improvements for the vector extension
* [VFIO] Experimental support for exposing emulated PCI devices over the
new vfio-user protocol (a vfio-user client is not yet available
in QEMU, though)
* [QMP] The on-cbw-error option for copy-before-write filter, to specify
behavior on CBW (copy before write) operation failure.
* [QMP] The cbw-timeout option for copy-before-write filter, to specify
timeout for CBW operation.
* [QMP] New commands query-stats and query-stats-schema to retrieve
statistics from various QEMU subsystems (right now only from
KVM).
* [QMP] The PanicAction can now be configured to report an exit-failure
(useful for automated testing)
* [Networking] QEMU can be compiled with the system slirp library even
when using CFI. This requires libslirp 4.7.
* [Migration] Support for zero-copy-send on Linux, which reduces CPU
usage on the source host. Note that locked memory is needed
to support this
* Patches added:
Revert-tests-qtest-enable-more-vhost-use.patch
meson-remove-pkgversion-from-CONFIG_STAM.patch
* Patches dropped:
AIO-Reduce-number-of-threads-for-32bit-h.patch
Makefile-Don-t-check-pc-bios-as-pre-requ.patch
Revert-8dcb404bff6d9147765d7dd3e9c849337.patch
Revert-qht-constify-qht_statistics_init.patch
XXX-dont-dump-core-on-sigabort.patch
acpi_piix4-Fix-migration-from-SLE11-SP2.patch
configure-only-populate-roms-if-softmmu.patch
configure-remove-pkgversion-from-CONFIG_.patch
coroutine-ucontext-use-QEMU_DEFINE_STATI.patch
coroutine-use-QEMU_DEFINE_STATIC_CO_TLS.patch
coroutine-win32-use-QEMU_DEFINE_STATIC_C.patch
hostmem-default-the-amount-of-prealloc-t.patch
hw-usb-hcd-ehci-fix-writeback-order.patch
i8254-Fix-migration-from-SLE11-SP2.patch
intc-exynos4210_gic-replace-snprintf-wit.patch
modules-generates-per-target-modinfo.patch
modules-introduces-module_kconfig-direct.patch
pc-bios-s390-ccw-net-avoid-warning-about.patch
pci-fix-overflow-in-snprintf-string-form.patch
qemu-cvs-gettimeofday.patch
qemu-cvs-ioctl_debug.patch
qemu-cvs-ioctl_nodirection.patch
qht-Revert-some-constification-in-qht.c.patch
qom-handle-case-of-chardev-spice-module-.patch
scsi-lsi53c895a-fix-use-after-free-in-ls.patch
scsi-lsi53c895a-really-fix-use-after-fre.patch
softmmu-Always-initialize-xlat-in-addres.patch
sphinx-change-default-language-to-en.patch
test-add-mapping-from-arch-of-i686-to-qe.patch
tests-Fix-block-tests-to-be-compatible-w.patch
tests-qtest-Move-the-fuzz-tests-to-x86-o.patch
usb-Help-compiler-out-to-avoid-a-warning.patch
OBS-URL: https://build.opensuse.org/request/show/1006734
OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=732
2022-09-29 08:46:40 +02:00
|
|
|
/*
|