aboutsummaryrefslogtreecommitdiff
path: root/event-loop-base.c
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@redhat.com>2023-07-04 14:34:36 +0200
committerStefan Hajnoczi <stefanha@redhat.com>2023-07-04 17:28:25 +0200
commitc21eae1ccc782440f320accb6f90c66cb8f45ee9 (patch)
tree29e8468a97b14506cbb2dc784fe09f6672e13e30 /event-loop-base.c
parentd145c0da22cde391d8c6672d33146ce306e8bf75 (diff)
block/blkio: fix module_block.py parsing
When QEMU is built with --enable-modules, the module_block.py script parses block/*.c to find block drivers that are built as modules. The script generates a table of block drivers called block_driver_modules[]. This table is used for block driver module loading. The blkio.c driver uses macros to define its BlockDriver structs. This was done to avoid code duplication but the module_block.py script is unable to parse the macro. The result is that libblkio-based block drivers can be built as modules but will not be found at runtime. One fix is to make the module_block.py script or build system fancier so it can parse C macros (e.g. by parsing the preprocessed source code). I chose not to do this because it raises the complexity of the build, making future issues harder to debug. Keep things simple: use the macro to avoid duplicating BlockDriver function pointers but define .format_name and .protocol_name manually for each BlockDriver. This way the module_block.py is able to parse the code. Also get rid of the block driver name macros (e.g. DRIVER_IO_URING) because module_block.py cannot parse them either. Fixes: fd66dbd424f5 ("blkio: add libblkio block driver") Reported-by: Qing Wang <qinwang@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> Message-id: 20230704123436.187761-1-stefanha@redhat.com Cc: Stefano Garzarella <sgarzare@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'event-loop-base.c')
0 files changed, 0 insertions, 0 deletions