From: Fabiano Rosas <farosas@suse.de>
To: qemu-devel@nongnu.org
Cc: qemu-block@nongnu.org, "Kevin Wolf" <kwolf@redhat.com>,
"Hanna Reitz" <hreitz@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"João Silva" <jsilva@suse.de>, "Lin Ma" <lma@suse.com>,
"Claudio Fontana" <cfontana@suse.de>,
"Dario Faggioli" <dfaggioli@suse.com>,
"Eric Blake" <eblake@redhat.com>
Subject: [RFC PATCH 0/6] block: Make raw_co_get_allocated_file_size asynchronous
Date: Tue, 23 May 2023 18:38:57 -0300 [thread overview]
Message-ID: <20230523213903.18418-1-farosas@suse.de> (raw)
As discussed in another thread [1], here's an RFC addressing a VCPU
softlockup encountered when issuing QMP commands that target a disk
placed on NFS.
Since QMP commands happen with the qemu_global_mutex locked, any
command that takes too long to finish will block other threads waiting
to take the global mutex. One such thread could be a VCPU thread going
out of the guest to handle IO.
This is the case when issuing the QMP command query-block, which
eventually calls raw_co_get_allocated_file_size(). This function makes
an 'fstat' call that has been observed to take a long time (seconds)
over NFS.
NFS latency issues aside, we can improve the situation by not blocking
VCPU threads while the command is running.
Move the 'fstat' call into the thread-pool and make the necessary
adaptations to ensure raw_co_get_allocated_file_size runs in a
coroutine in the block driver aio_context.
1- Question about QMP and BQL
https://lists.gnu.org/archive/html/qemu-devel/2023-05/msg03141.html
CI run: https://gitlab.com/farosas/qemu/-/pipelines/876583685
Fabiano Rosas (3):
block: Remove bdrv_query_block_node_info
block: Mark bdrv_co_get_allocated_file_size() as mixed
block: Allow bdrv_get_allocated_file_size to run in bdrv context
João Silva (1):
block: Add a thread-pool version of fstat
Lin Ma (2):
Convert query-block/info_block to coroutine
Convert query-block/info_block to coroutine
block/file-posix.c | 40 ++++++++++++++++++++++++--
block/monitor/block-hmp-cmds.c | 2 +-
block/qapi.c | 51 +++++++++++++++-------------------
blockdev.c | 6 ++--
hmp-commands-info.hx | 1 +
include/block/block-hmp-cmds.h | 2 +-
include/block/block-io.h | 2 +-
include/block/qapi.h | 3 --
include/block/raw-aio.h | 4 ++-
qapi/block-core.json | 5 ++--
10 files changed, 72 insertions(+), 44 deletions(-)
--
2.35.3
next reply other threads:[~2023-05-23 21:40 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-23 21:38 Fabiano Rosas [this message]
2023-05-23 21:38 ` [RFC PATCH 1/6] block: Remove bdrv_query_block_node_info Fabiano Rosas
2023-05-24 8:31 ` Claudio Fontana
2023-05-23 21:38 ` [RFC PATCH 2/6] block: Mark bdrv_co_get_allocated_file_size() as mixed Fabiano Rosas
2023-05-25 14:17 ` Eric Blake
2023-05-26 9:12 ` Kevin Wolf
2023-05-23 21:39 ` [RFC PATCH 3/6] Convert query-block/info_block to coroutine Fabiano Rosas
2023-05-24 8:48 ` Claudio Fontana
2023-05-25 14:26 ` Eric Blake
2023-05-26 14:05 ` Fabiano Rosas
2023-05-23 21:39 ` [RFC PATCH 4/6] " Fabiano Rosas
2023-05-24 4:23 ` Lin Ma
2023-05-24 12:30 ` Fabiano Rosas
2023-05-24 8:49 ` Claudio Fontana
2023-05-24 9:24 ` Lin Ma
2023-05-24 15:57 ` Claudio Fontana
2023-05-23 21:39 ` [RFC PATCH 5/6] block: Allow bdrv_get_allocated_file_size to run in bdrv context Fabiano Rosas
2023-05-26 9:28 ` Kevin Wolf
2023-05-29 17:47 ` Fabiano Rosas
2023-05-23 21:39 ` [RFC PATCH 6/6] block: Add a thread-pool version of fstat Fabiano Rosas
2023-05-24 15:56 ` Claudio Fontana
2023-05-25 15:45 ` Eric Blake
2023-05-26 14:20 ` Fabiano Rosas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230523213903.18418-1-farosas@suse.de \
--to=farosas@suse.de \
--cc=armbru@redhat.com \
--cc=cfontana@suse.de \
--cc=dfaggioli@suse.com \
--cc=eblake@redhat.com \
--cc=hreitz@redhat.com \
--cc=jsilva@suse.de \
--cc=kwolf@redhat.com \
--cc=lma@suse.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).