Loading
fio_plugin: bdev calls on spdk thread
This is a rework of commit 7722996d. As the locks in bdev.c transition to spdk_spinlock, callers of spdk_bdev_get_by_name() and any other function that uses an SPDK spinlock needs to be executing from an spdk_thread. This commit reverts the earlier commit then fixes it with a different approach than was previously used. fio plugin functions that need to be on an SPDK thread into two parts: 1. fio API callback: transform args from fio into a spdk_fio_oat_ctx structure, then calls spdk_fio_sync_run_oat(). In the case of spdk_fio_setup(), the app thread is started in this part. 2. On App Thread (oat) callback: runs on the SPDK app thread via the poller spdk_init_thread_poll(). spdk_fio_sync_run_oat() sends a message to the app thread to have the specified oat callback run. It wakees the poller loop via a condition variable then waits for the oat callback to signal its completion via a condition variable in the spdk_fio_oat_ctx. Fixes issue #2818 Signed-off-by:Mike Gerdts <mgerdts@nvidia.com> Change-Id: I5c82542bb9e9e6b8823e9d1da293050bba336b65 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15866 Tested-by:
SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by:
Jim Harris <james.r.harris@intel.com> Reviewed-by:
Ben Walker <benjamin.walker@intel.com>