qemu-kvm/kvm-qcow2-Re-initialize-lock-in-invalidate_cache.patch
Jon Maloy 4d29592b11 * Mon Feb 16 2026 Jon Maloy <jmaloy@redhat.com> - 10.1.0-14
- kvm-rbd-Run-co-BH-CB-in-the-coroutine-s-AioContext.patch [RHEL-67115]
- kvm-curl-Fix-coroutine-waking.patch [RHEL-67115]
- kvm-block-io-Take-reqs_lock-for-tracked_requests.patch [RHEL-67115]
- kvm-qcow2-Re-initialize-lock-in-invalidate_cache.patch [RHEL-67115]
- kvm-qcow2-Fix-cache_clean_timer.patch [RHEL-67115]
- Resolves: RHEL-67115
  ([network-storage][rbd][core-dump]installation of guest failed sometimes with multiqueue enabled[rhel9.6])
2026-02-16 17:01:31 -05:00

46 lines
1.6 KiB
Diff

From 061f0f8face401959bf148fa59d0cb9afe7f8181 Mon Sep 17 00:00:00 2001
From: Hanna Czenczek <hreitz@redhat.com>
Date: Mon, 10 Nov 2025 16:48:46 +0100
Subject: [PATCH 4/5] qcow2: Re-initialize lock in invalidate_cache
RH-Author: Hanna Czenczek <hreitz@redhat.com>
RH-MergeRequest: 455: Multithreading fixes for rbd, curl, qcow2
RH-Jira: RHEL-67115
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
RH-Commit: [4/5] 070ee053710a58d0a776600b9155be2b26c27512 (hreitz/qemu-kvm-c-9-s)
After clearing our state (memset()-ing it to 0), we should
re-initialize objects that need it. Specifically, that applies to
s->lock, which is originally initialized in qcow2_open().
Given qemu_co_mutex_init() is just a memset() to 0, this is functionally
a no-op, but still seems like the right thing to do.
Signed-off-by: Hanna Czenczek <hreitz@redhat.com>
Message-ID: <20251110154854.151484-12-hreitz@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
(cherry picked from commit 90db3a1721b30daf839901813616c0854f383cc5)
Signed-off-by: Hanna Czenczek <hreitz@redhat.com>
---
block/qcow2.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/block/qcow2.c b/block/qcow2.c
index 6df65aab93..374ca53829 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -2879,6 +2879,8 @@ qcow2_co_invalidate_cache(BlockDriverState *bs, Error **errp)
data_file = s->data_file;
memset(s, 0, sizeof(BDRVQcow2State));
s->data_file = data_file;
+ /* Re-initialize objects initialized in qcow2_open() */
+ qemu_co_mutex_init(&s->lock);
options = qdict_clone_shallow(bs->options);
--
2.52.0