Am 14.12.2022 um 23:35 hat Peter Maydell geschrieben: > On Wed, 14 Dec 2022 at 13:45, Kevin Wolf <kw...@redhat.com> wrote: > > > > The following changes since commit 5204b499a6cae4dfd9fe762d5e6e82224892383b: > > > > mailmap: Fix Stefan Weil author email (2022-12-13 15:56:57 -0500) > > > > are available in the Git repository at: > > > > https://repo.or.cz/qemu/kevin.git tags/for-upstream > > > > for you to fetch changes up to 2ad19e5dc950d4b340894846b9e71c0b20f9a1cc: > > > > block: GRAPH_RDLOCK for functions only called by co_wrappers (2022-12-14 > > 13:13:07 +0100) > > > > ---------------------------------------------------------------- > > Block layer patches > > > > - Code cleanups around block graph modification > > - Simplify drain > > - coroutine_fn correctness fixes, including splitting generated > > coroutine wrappers into co_wrapper (to be called only from > > non-coroutine context) and co_wrapper_mixed (both coroutine and > > non-coroutine context) > > - Introduce a block graph rwlock > > > > ---------------------------------------------------------------- > > Fails to build on the tsan-build job: > https://gitlab.com/qemu-project/qemu/-/jobs/3476176683 > > In file included from ../hw/nvram/fw_cfg-interface.c:10: > In file included from /builds/qemu-project/qemu/include/hw/nvram/fw_cfg.h:7: > In file included from /builds/qemu-project/qemu/include/sysemu/dma.h:15: > In file included from /builds/qemu-project/qemu/include/block/block.h:27: > In file included from > /builds/qemu-project/qemu/include/block/block-global-state.h:27: > In file included from > /builds/qemu-project/qemu/include/block/block-common.h:27: > In file included from /builds/qemu-project/qemu/include/block/aio.h:25: > /builds/qemu-project/qemu/include/block/graph-lock.h:62:31: error: > invalid capability name 'graph-lock'; capability name must be 'mutex' > or 'role' [-Werror,-Wthread-safety-attributes] > typedef struct TSA_CAPABILITY("graph-lock") BdrvGraphLock { > ^ > > (I see the same error on my x86 macos system.)
Ah, surprise, clang 11 lifted this arbitrary restriction for capability names and that it existed in older compiler versions isn't documented (any more?). We can either just name it "mutex" and have slightly misleading error messages (it's semantically not a mutex, but an rwlock), or add a configure check and leave TSA disabled if it doesn't work. I think I'll try the former for now, "mutex 'graph_lock'" should still be good enough to know what it means. Kevin