|
From: | Paolo Bonzini |
Subject: | Re: [RFC PATCH v2 04/25] include/block/block: split header into I/O and global state API |
Date: | Thu, 7 Oct 2021 13:51:33 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.0 |
On 07/10/21 12:54, Emanuele Giuseppe Esposito wrote:
+int bdrv_block_status(BlockDriverState *bs, int64_t offset, + int64_t bytes, int64_t *pnum, int64_t *map, + BlockDriverState **file);This function just called bdrv_block_status_above(), which is in the I/O API. I think it's safe to move this to the I/O API or else bdrv_block_status_above() shouldn't be there :).It *seems* that while bdrv_block_status_above() is an I/O, probably running in some coroutine (from here its internal qemu_in_coroutine check), bdrv_block_status might be called from the main loop (or alternatively the function is never invoked in the tests, so the assertion never triggered).Maybe bdrv_block_status_above is one of the few functions that are both I/O and Main loop? I put it in I/O as it can't have the assertion.
No, they are both I/O. Callers of bdrv_block_status are hw/nvme and qemu-img.c; while the latter can be either (it does not have iothreads), hw/nvme is definitely I/O.
Paolo
[Prev in Thread] | Current Thread | [Next in Thread] |