From: Kevin Wolf <kwolf@redhat.com>
To: Stefan Hajnoczi <stefanha@redhat.com>
Cc: qemu-devel@nongnu.org,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Vladimir Sementsov-Ogievskiy" <vsementsov@yandex-team.ru>,
"Cleber Rosa" <crosa@redhat.com>,
"Xie Changlong" <xiechanglong.d@gmail.com>,
"Paul Durrant" <paul@xen.org>, "Ari Sundholm" <ari@tuxera.com>,
"Jason Wang" <jasowang@redhat.com>,
"Eric Blake" <eblake@redhat.com>, "John Snow" <jsnow@redhat.com>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Wen Congyang" <wencongyang2@huawei.com>,
"Alberto Garcia" <berto@igalia.com>,
"Anthony Perard" <anthony.perard@citrix.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
qemu-block@nongnu.org, "Juan Quintela" <quintela@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Coiby Xu" <Coiby.Xu@gmail.com>,
"Fabiano Rosas" <farosas@suse.de>,
"Hanna Reitz" <hreitz@redhat.com>,
"Zhang Chen" <chen.zhang@intel.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Pavel Dovgalyuk" <pavel.dovgaluk@ispras.ru>,
"Peter Xu" <peterx@redhat.com>,
"Emanuele Giuseppe Esposito" <eesposit@redhat.com>,
"Fam Zheng" <fam@euphon.net>,
"Leonardo Bras" <leobras@redhat.com>,
"David Hildenbrand" <david@redhat.com>,
"Li Zhijian" <lizhijian@fujitsu.com>,
xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2 04/14] aio: make aio_context_acquire()/aio_context_release() a no-op
Date: Tue, 19 Dec 2023 16:28:25 +0100 [thread overview]
Message-ID: <ZYG2mSe1JWnC0tq_@redhat.com> (raw)
In-Reply-To: <20231205182011.1976568-5-stefanha@redhat.com>
Am 05.12.2023 um 19:20 hat Stefan Hajnoczi geschrieben:
> aio_context_acquire()/aio_context_release() has been replaced by
> fine-grained locking to protect state shared by multiple threads. The
> AioContext lock still plays the role of balancing locking in
> AIO_WAIT_WHILE() and many functions in QEMU either require that the
> AioContext lock is held or not held for this reason. In other words, the
> AioContext lock is purely there for consistency with itself and serves
> no real purpose anymore.
>
> Stop actually acquiring/releasing the lock in
> aio_context_acquire()/aio_context_release() so that subsequent patches
> can remove callers across the codebase incrementally.
>
> I have performed "make check" and qemu-iotests stress tests across
> x86-64, ppc64le, and aarch64 to confirm that there are no failures as a
> result of eliminating the lock.
>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> Reviewed-by: Eric Blake <eblake@redhat.com>
> Acked-by: Kevin Wolf <kwolf@redhat.com>
I knew why I wasn't confident enough to give a R-b... This crashes
qemu-storage-daemon in the qemu-iotests case graph-changes-while-io.
qemu-storage-daemon: ../nbd/server.c:2542: nbd_co_receive_request: Assertion `client->recv_coroutine == qemu_coroutine_self()' failed.
(gdb) bt
#0 0x00007fdb00529884 in __pthread_kill_implementation () from /lib64/libc.so.6
#1 0x00007fdb004d8afe in raise () from /lib64/libc.so.6
#2 0x00007fdb004c187f in abort () from /lib64/libc.so.6
#3 0x00007fdb004c179b in __assert_fail_base.cold () from /lib64/libc.so.6
#4 0x00007fdb004d1187 in __assert_fail () from /lib64/libc.so.6
#5 0x0000557f9f9534eb in nbd_co_receive_request (errp=0x7fdafc25eec0, request=0x7fdafc25ef10, req=0x7fdaf00159c0) at ../nbd/server.c:2542
#6 nbd_trip (opaque=0x557fa0b33fa0) at ../nbd/server.c:2962
#7 0x0000557f9faa416b in coroutine_trampoline (i0=<optimized out>, i1=<optimized out>) at ../util/coroutine-ucontext.c:177
#8 0x00007fdb004efe90 in ?? () from /lib64/libc.so.6
#9 0x00007fdafc35f680 in ?? ()
#10 0x0000000000000000 in ?? ()
(gdb) p *client
$2 = {refcount = 4, close_fn = 0x557f9f95dc40 <nbd_blockdev_client_closed>, exp = 0x557fa0b30590, tlscreds = 0x0, tlsauthz = 0x0, sioc = 0x557fa0b33d90, ioc = 0x557fa0b33d90,
recv_coroutine = 0x7fdaf0015eb0, send_lock = {locked = 0, ctx = 0x0, from_push = {slh_first = 0x0}, to_pop = {slh_first = 0x0}, handoff = 0, sequence = 0, holder = 0x0},
send_coroutine = 0x0, read_yielding = false, quiescing = false, next = {tqe_next = 0x0, tqe_circ = {tql_next = 0x0, tql_prev = 0x557fa0b305e8}}, nb_requests = 1, closing = false,
check_align = 1, mode = NBD_MODE_EXTENDED, contexts = {exp = 0x557fa0b30590, count = 1, base_allocation = true, allocation_depth = false, bitmaps = 0x0}, opt = 7, optlen = 0}
(gdb) p co_tls_current
$3 = (Coroutine *) 0x7fdaf00061d0
Kevin
next prev parent reply other threads:[~2023-12-19 15:28 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-05 18:19 [PATCH v2 00/14] aio: remove AioContext lock Stefan Hajnoczi
2023-12-05 18:19 ` [PATCH v2 01/14] virtio-scsi: replace AioContext lock with tmf_bh_lock Stefan Hajnoczi
2023-12-05 18:19 ` [PATCH v2 02/14] scsi: assert that callbacks run in the correct AioContext Stefan Hajnoczi
2023-12-18 15:35 ` Kevin Wolf
2023-12-05 18:20 ` [PATCH v2 03/14] tests: remove aio_context_acquire() tests Stefan Hajnoczi
2023-12-05 18:20 ` [PATCH v2 04/14] aio: make aio_context_acquire()/aio_context_release() a no-op Stefan Hajnoczi
2023-12-19 15:28 ` Kevin Wolf [this message]
2023-12-19 18:19 ` Kevin Wolf
2023-12-19 21:23 ` Stefan Hajnoczi
2023-12-20 9:32 ` Kevin Wolf
2023-12-20 13:40 ` Stefan Hajnoczi
2023-12-21 0:30 ` Stefan Hajnoczi
2023-12-05 18:20 ` [PATCH v2 05/14] graph-lock: remove AioContext locking Stefan Hajnoczi
2023-12-05 18:20 ` [PATCH v2 06/14] block: " Stefan Hajnoczi
2023-12-19 15:58 ` Kevin Wolf
2023-12-19 20:04 ` Stefan Hajnoczi
2023-12-20 9:19 ` Kevin Wolf
2023-12-05 18:20 ` [PATCH v2 07/14] block: remove bdrv_co_lock() Stefan Hajnoczi
2023-12-18 15:35 ` Kevin Wolf
2023-12-05 18:20 ` [PATCH v2 08/14] scsi: remove AioContext locking Stefan Hajnoczi
2023-12-18 15:35 ` Kevin Wolf
2023-12-05 18:20 ` [PATCH v2 09/14] aio-wait: draw equivalence between AIO_WAIT_WHILE() and AIO_WAIT_WHILE_UNLOCKED() Stefan Hajnoczi
2023-12-18 15:35 ` Kevin Wolf
2023-12-05 18:20 ` [PATCH v2 10/14] aio: remove aio_context_acquire()/aio_context_release() API Stefan Hajnoczi
2023-12-18 15:36 ` Kevin Wolf
2023-12-05 18:20 ` [PATCH v2 11/14] docs: remove AioContext lock from IOThread docs Stefan Hajnoczi
2023-12-05 18:20 ` [PATCH v2 12/14] scsi: remove outdated AioContext lock comment Stefan Hajnoczi
2023-12-05 18:20 ` [PATCH v2 13/14] job: remove outdated AioContext locking comments Stefan Hajnoczi
2023-12-05 18:20 ` [PATCH v2 14/14] block: " Stefan Hajnoczi
2023-12-19 12:11 ` Kevin Wolf
2023-12-19 13:03 ` [PATCH v2 00/14] aio: remove AioContext lock Kevin Wolf
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=ZYG2mSe1JWnC0tq_@redhat.com \
--to=kwolf@redhat.com \
--cc=Coiby.Xu@gmail.com \
--cc=anthony.perard@citrix.com \
--cc=ari@tuxera.com \
--cc=berrange@redhat.com \
--cc=berto@igalia.com \
--cc=chen.zhang@intel.com \
--cc=crosa@redhat.com \
--cc=david@redhat.com \
--cc=eblake@redhat.com \
--cc=eduardo@habkost.net \
--cc=eesposit@redhat.com \
--cc=fam@euphon.net \
--cc=farosas@suse.de \
--cc=hreitz@redhat.com \
--cc=jasowang@redhat.com \
--cc=jsnow@redhat.com \
--cc=leobras@redhat.com \
--cc=lizhijian@fujitsu.com \
--cc=mst@redhat.com \
--cc=paul@xen.org \
--cc=pavel.dovgaluk@ispras.ru \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=sstabellini@kernel.org \
--cc=stefanha@redhat.com \
--cc=vsementsov@yandex-team.ru \
--cc=wencongyang2@huawei.com \
--cc=xen-devel@lists.xenproject.org \
--cc=xiechanglong.d@gmail.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.