Am 04.04.2023 um 01:30 hat Stefan Hajnoczi geschrieben:
> Commit 82618d7bc341 ("block: Convert bdrv_get_allocated_file_size() to
> co_wrapper") made nfs_get_allocated_file_size() a coroutine. The
> coroutine still uses BDRV_POLL_WHILE() to wait for the NFS RPC to
> complete.
> 
> Take it a step further and yield the coroutine until the RPC completes.
> This avoids the blocking, nested event loop and unifies
> nfs_co_get_allocated_file_size() with the other coroutine functions that
> send RPCs:
> - Use nfs_co_init_task() to set up a coroutine NFSRPC task.
> - Take client->mutex to protect fd handler state since we're in IO_CODE.
> - Use nfs_co_generic_cb() instead of a specialized callback function.
> - Yield until the task completes.
> 
> Getting rid of BDRV_POLL_WHILE() helps with the multi-queue block layer
> effort where we don't want to take the AioContext lock.
> 
> This commit passes qemu-iotests/check -nfs, except inactivate-failure,
> which also fails before this commit.
> 
> Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com>

This conflicts with Paolo's commit 3fe64abc, which seems to address the
same bug. Your patch does some more cleanup like removing
nfs_get_allocated_file_size_cb() in favour of nfs_co_generic_cb().

Do you want to rebase and send the remaining pieces as a cleanup patch?

Kevin


Reply via email to