bdev: Handle calls to spdk_bdev_unregister from non-SPDK threads
Change-Id: Ic20993bdf5ae4e5ed7fbed7d630a0024462f7fc6 Signed-off-by: Ben Walker <benjamin.walker@intel.com> Reviewed-on: https://review.gerrithub.io/408534 Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
parent
106684ff45
commit
2fa8447f2f
@ -2659,9 +2659,17 @@ spdk_bdev_unregister(struct spdk_bdev *bdev, spdk_bdev_unregister_cb cb_fn, void
|
||||
{
|
||||
struct spdk_bdev_desc *desc, *tmp;
|
||||
bool do_destruct = true;
|
||||
struct spdk_thread *thread;
|
||||
|
||||
SPDK_DEBUGLOG(SPDK_LOG_BDEV, "Removing bdev %s from list\n", bdev->name);
|
||||
|
||||
thread = spdk_get_thread();
|
||||
if (!thread) {
|
||||
/* The user called this from a non-SPDK thread. */
|
||||
cb_fn(cb_arg, -ENOTSUP);
|
||||
return;
|
||||
}
|
||||
|
||||
pthread_mutex_lock(&bdev->mutex);
|
||||
|
||||
spdk_vbdev_remove_base_bdevs(bdev);
|
||||
@ -2679,7 +2687,7 @@ spdk_bdev_unregister(struct spdk_bdev *bdev, spdk_bdev_unregister_cb cb_fn, void
|
||||
* we don't recursively unregister this bdev again if the remove_cb
|
||||
* immediately closes its descriptor.
|
||||
*/
|
||||
spdk_thread_send_msg(spdk_get_thread(), _remove_notify, desc);
|
||||
spdk_thread_send_msg(thread, _remove_notify, desc);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user