55 lines
2.2 KiB
Diff
55 lines
2.2 KiB
Diff
From ef99db21e9469f3fc946b7bf3edc1837d7b24e0b Mon Sep 17 00:00:00 2001
|
|
From: Stefano Garzarella <sgarzare@redhat.com>
|
|
Date: Tue, 25 Jul 2023 12:37:44 +0200
|
|
Subject: [PATCH 01/14] block/blkio: enable the completion eventfd
|
|
|
|
RH-Author: Stefano Garzarella <sgarzare@redhat.com>
|
|
RH-MergeRequest: 194: block/blkio: backport latest fixes for virtio-blk-* drivers
|
|
RH-Bugzilla: 2225354 2225439
|
|
RH-Acked-by: Hanna Czenczek <hreitz@redhat.com>
|
|
RH-Acked-by: Alberto Faria <None>
|
|
RH-Commit: [1/6] d91b3a465942863550130105ae2f38f47a82a360 (sgarzarella/qemu-kvm-c-9-s)
|
|
|
|
Until libblkio 1.3.0, virtio-blk drivers had completion eventfd
|
|
notifications enabled from the start, but from the next releases
|
|
this is no longer the case, so we have to explicitly enable them.
|
|
|
|
In fact, the libblkio documentation says they could be disabled,
|
|
so we should always enable them at the start if we want to be
|
|
sure to get completion eventfd notifications:
|
|
|
|
By default, the driver might not generate completion events for
|
|
requests so it is necessary to explicitly enable the completion
|
|
file descriptor before use:
|
|
|
|
void blkioq_set_completion_fd_enabled(struct blkioq *q, bool enable);
|
|
|
|
I discovered this while trying a development version of libblkio:
|
|
the guest kernel hangs during boot, while probing the device.
|
|
|
|
Fixes: fd66dbd424f5 ("blkio: add libblkio block driver")
|
|
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
|
|
Message-id: 20230725103744.77343-1-sgarzare@redhat.com
|
|
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
(cherry picked from commit 9359c459889fce1804c4e1b2a2ff8f182b4a9ae8)
|
|
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
|
|
---
|
|
block/blkio.c | 1 +
|
|
1 file changed, 1 insertion(+)
|
|
|
|
diff --git a/block/blkio.c b/block/blkio.c
|
|
index afcec359f2..3ea9841bd8 100644
|
|
--- a/block/blkio.c
|
|
+++ b/block/blkio.c
|
|
@@ -844,6 +844,7 @@ static int blkio_file_open(BlockDriverState *bs, QDict *options, int flags,
|
|
QLIST_INIT(&s->bounce_bufs);
|
|
s->blkioq = blkio_get_queue(s->blkio, 0);
|
|
s->completion_fd = blkioq_get_completion_fd(s->blkioq);
|
|
+ blkioq_set_completion_fd_enabled(s->blkioq, true);
|
|
|
|
blkio_attach_aio_context(bs, bdrv_get_aio_context(bs));
|
|
return 0;
|
|
--
|
|
2.39.3
|
|
|