* Fri Dec 02 2022 Miroslav Rezanina <mrezanin@redhat.com> - 7.1.0-6
- kvm-block-move-bdrv_qiov_is_aligned-to-file-posix.patch [bz#2143170] - kvm-block-use-the-request-length-for-iov-alignment.patch [bz#2143170] - Resolves: bz#2143170 (The installation can not start when install files (iso) locate on a 4k disk)
This commit is contained in:
parent
e961a3354a
commit
c9394359b0
107
kvm-block-move-bdrv_qiov_is_aligned-to-file-posix.patch
Normal file
107
kvm-block-move-bdrv_qiov_is_aligned-to-file-posix.patch
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
From 2c9b536fac44c15c44af385ac1b440a9f5c05d01 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Keith Busch <kbusch@kernel.org>
|
||||||
|
Date: Thu, 29 Sep 2022 13:05:22 -0700
|
||||||
|
Subject: [PATCH 1/2] block: move bdrv_qiov_is_aligned to file-posix
|
||||||
|
|
||||||
|
RH-Author: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-MergeRequest: 123: block: Fix memory alignment of requests
|
||||||
|
RH-Bugzilla: 2143170
|
||||||
|
RH-Acked-by: Alberto Faria <None>
|
||||||
|
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
|
||||||
|
RH-Acked-by: Stefano Garzarella <sgarzare@redhat.com>
|
||||||
|
RH-Commit: [1/2] 77b6ed2aaedfbd3dba7769b9a999ab3743f642cd (kmwolf/centos-qemu-kvm)
|
||||||
|
|
||||||
|
There is only user of bdrv_qiov_is_aligned(), so move the alignment
|
||||||
|
function to there and make it static.
|
||||||
|
|
||||||
|
Signed-off-by: Keith Busch <kbusch@kernel.org>
|
||||||
|
Message-Id: <20220929200523.3218710-2-kbusch@meta.com>
|
||||||
|
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
(cherry picked from commit a7c5f67a78569f8c275ea4ea9962e9c79b9d03cb)
|
||||||
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
---
|
||||||
|
block/file-posix.c | 21 +++++++++++++++++++++
|
||||||
|
block/io.c | 21 ---------------------
|
||||||
|
include/block/block-io.h | 1 -
|
||||||
|
3 files changed, 21 insertions(+), 22 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/block/file-posix.c b/block/file-posix.c
|
||||||
|
index 48cd096624..e3f3de2780 100644
|
||||||
|
--- a/block/file-posix.c
|
||||||
|
+++ b/block/file-posix.c
|
||||||
|
@@ -2061,6 +2061,27 @@ static int coroutine_fn raw_thread_pool_submit(BlockDriverState *bs,
|
||||||
|
return thread_pool_submit_co(pool, func, arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
+/*
|
||||||
|
+ * Check if all memory in this vector is sector aligned.
|
||||||
|
+ */
|
||||||
|
+static bool bdrv_qiov_is_aligned(BlockDriverState *bs, QEMUIOVector *qiov)
|
||||||
|
+{
|
||||||
|
+ int i;
|
||||||
|
+ size_t alignment = bdrv_min_mem_align(bs);
|
||||||
|
+ IO_CODE();
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < qiov->niov; i++) {
|
||||||
|
+ if ((uintptr_t) qiov->iov[i].iov_base % alignment) {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ if (qiov->iov[i].iov_len % alignment) {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return true;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static int coroutine_fn raw_co_prw(BlockDriverState *bs, uint64_t offset,
|
||||||
|
uint64_t bytes, QEMUIOVector *qiov, int type)
|
||||||
|
{
|
||||||
|
diff --git a/block/io.c b/block/io.c
|
||||||
|
index 0a8cbefe86..96edc7f7cb 100644
|
||||||
|
--- a/block/io.c
|
||||||
|
+++ b/block/io.c
|
||||||
|
@@ -3236,27 +3236,6 @@ void *qemu_try_blockalign0(BlockDriverState *bs, size_t size)
|
||||||
|
return mem;
|
||||||
|
}
|
||||||
|
|
||||||
|
-/*
|
||||||
|
- * Check if all memory in this vector is sector aligned.
|
||||||
|
- */
|
||||||
|
-bool bdrv_qiov_is_aligned(BlockDriverState *bs, QEMUIOVector *qiov)
|
||||||
|
-{
|
||||||
|
- int i;
|
||||||
|
- size_t alignment = bdrv_min_mem_align(bs);
|
||||||
|
- IO_CODE();
|
||||||
|
-
|
||||||
|
- for (i = 0; i < qiov->niov; i++) {
|
||||||
|
- if ((uintptr_t) qiov->iov[i].iov_base % alignment) {
|
||||||
|
- return false;
|
||||||
|
- }
|
||||||
|
- if (qiov->iov[i].iov_len % alignment) {
|
||||||
|
- return false;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- return true;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
void bdrv_io_plug(BlockDriverState *bs)
|
||||||
|
{
|
||||||
|
BdrvChild *child;
|
||||||
|
diff --git a/include/block/block-io.h b/include/block/block-io.h
|
||||||
|
index fd25ffa9be..492f95fc05 100644
|
||||||
|
--- a/include/block/block-io.h
|
||||||
|
+++ b/include/block/block-io.h
|
||||||
|
@@ -150,7 +150,6 @@ void *qemu_blockalign(BlockDriverState *bs, size_t size);
|
||||||
|
void *qemu_blockalign0(BlockDriverState *bs, size_t size);
|
||||||
|
void *qemu_try_blockalign(BlockDriverState *bs, size_t size);
|
||||||
|
void *qemu_try_blockalign0(BlockDriverState *bs, size_t size);
|
||||||
|
-bool bdrv_qiov_is_aligned(BlockDriverState *bs, QEMUIOVector *qiov);
|
||||||
|
|
||||||
|
void bdrv_enable_copy_on_read(BlockDriverState *bs);
|
||||||
|
void bdrv_disable_copy_on_read(BlockDriverState *bs);
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
50
kvm-block-use-the-request-length-for-iov-alignment.patch
Normal file
50
kvm-block-use-the-request-length-for-iov-alignment.patch
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
From 7e334715074c7a4090578ed178834f3318d4b969 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Keith Busch <kbusch@kernel.org>
|
||||||
|
Date: Thu, 29 Sep 2022 13:05:23 -0700
|
||||||
|
Subject: [PATCH 2/2] block: use the request length for iov alignment
|
||||||
|
|
||||||
|
RH-Author: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-MergeRequest: 123: block: Fix memory alignment of requests
|
||||||
|
RH-Bugzilla: 2143170
|
||||||
|
RH-Acked-by: Alberto Faria <None>
|
||||||
|
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
|
||||||
|
RH-Acked-by: Stefano Garzarella <sgarzare@redhat.com>
|
||||||
|
RH-Commit: [2/2] 50cfd394fff4dbad87d7c90c987e241ed2367746 (kmwolf/centos-qemu-kvm)
|
||||||
|
|
||||||
|
An iov length needs to be aligned to the logical block size, which may
|
||||||
|
be larger than the memory alignment.
|
||||||
|
|
||||||
|
Tested-by: Jens Axboe <axboe@kernel.dk>
|
||||||
|
Signed-off-by: Keith Busch <kbusch@kernel.org>
|
||||||
|
Message-Id: <20220929200523.3218710-3-kbusch@meta.com>
|
||||||
|
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
(cherry picked from commit 25474d90aa50bd32e0de395a33d8de42dd6f2aef)
|
||||||
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
---
|
||||||
|
block/file-posix.c | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/block/file-posix.c b/block/file-posix.c
|
||||||
|
index e3f3de2780..af994aba2b 100644
|
||||||
|
--- a/block/file-posix.c
|
||||||
|
+++ b/block/file-posix.c
|
||||||
|
@@ -2068,13 +2068,14 @@ static bool bdrv_qiov_is_aligned(BlockDriverState *bs, QEMUIOVector *qiov)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
size_t alignment = bdrv_min_mem_align(bs);
|
||||||
|
+ size_t len = bs->bl.request_alignment;
|
||||||
|
IO_CODE();
|
||||||
|
|
||||||
|
for (i = 0; i < qiov->niov; i++) {
|
||||||
|
if ((uintptr_t) qiov->iov[i].iov_base % alignment) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
- if (qiov->iov[i].iov_len % alignment) {
|
||||||
|
+ if (qiov->iov[i].iov_len % len) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -151,7 +151,7 @@ Obsoletes: %{name}-block-ssh <= %{epoch}:%{version} \
|
|||||||
Summary: QEMU is a machine emulator and virtualizer
|
Summary: QEMU is a machine emulator and virtualizer
|
||||||
Name: qemu-kvm
|
Name: qemu-kvm
|
||||||
Version: 7.1.0
|
Version: 7.1.0
|
||||||
Release: 5%{?rcrel}%{?dist}%{?cc_suffix}
|
Release: 6%{?rcrel}%{?dist}%{?cc_suffix}
|
||||||
# Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped
|
# Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped
|
||||||
# Epoch 15 used for RHEL 8
|
# Epoch 15 used for RHEL 8
|
||||||
# Epoch 17 used for RHEL 9 (due to release versioning offset in RHEL 8.5)
|
# Epoch 17 used for RHEL 9 (due to release versioning offset in RHEL 8.5)
|
||||||
@ -257,6 +257,10 @@ Patch49: kvm-rtl8139-Remove-unused-variable.patch
|
|||||||
Patch50: kvm-qemu-img-remove-unused-variable.patch
|
Patch50: kvm-qemu-img-remove-unused-variable.patch
|
||||||
# For bz#2141218 - qemu-kvm build fails with clang 15.0.1 due to false unused variable error
|
# For bz#2141218 - qemu-kvm build fails with clang 15.0.1 due to false unused variable error
|
||||||
Patch51: kvm-host-libusb-Remove-unused-variable.patch
|
Patch51: kvm-host-libusb-Remove-unused-variable.patch
|
||||||
|
# For bz#2143170 - The installation can not start when install files (iso) locate on a 4k disk
|
||||||
|
Patch52: kvm-block-move-bdrv_qiov_is_aligned-to-file-posix.patch
|
||||||
|
# For bz#2143170 - The installation can not start when install files (iso) locate on a 4k disk
|
||||||
|
Patch53: kvm-block-use-the-request-length-for-iov-alignment.patch
|
||||||
|
|
||||||
%if %{have_clang}
|
%if %{have_clang}
|
||||||
BuildRequires: clang
|
BuildRequires: clang
|
||||||
@ -1289,6 +1293,12 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Dec 02 2022 Miroslav Rezanina <mrezanin@redhat.com> - 7.1.0-6
|
||||||
|
- kvm-block-move-bdrv_qiov_is_aligned-to-file-posix.patch [bz#2143170]
|
||||||
|
- kvm-block-use-the-request-length-for-iov-alignment.patch [bz#2143170]
|
||||||
|
- Resolves: bz#2143170
|
||||||
|
(The installation can not start when install files (iso) locate on a 4k disk)
|
||||||
|
|
||||||
* Mon Nov 14 2022 Miroslav Rezanina <mrezanin@redhat.com> - 7.1.0-5
|
* Mon Nov 14 2022 Miroslav Rezanina <mrezanin@redhat.com> - 7.1.0-5
|
||||||
- kvm-rtl8139-Remove-unused-variable.patch [bz#2141218]
|
- kvm-rtl8139-Remove-unused-variable.patch [bz#2141218]
|
||||||
- kvm-qemu-img-remove-unused-variable.patch [bz#2141218]
|
- kvm-qemu-img-remove-unused-variable.patch [bz#2141218]
|
||||||
|
Loading…
Reference in New Issue
Block a user