From: Sean Hefty Date: Wed, 14 Oct 2009 16:34:18 +0000 (-0700) Subject: The HCA should not be closed until all resources have been released. X-Git-Tag: dapl-2.0.24-1~16 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=9fdd8d74f2cba83e9cf513256933f5241495c1da;p=~ardavis%2Fdapl.git The HCA should not be closed until all resources have been released. This results in a hang on windows, since closing the device frees the event processing thread. Signed-off-by: Sean Hefty --- diff --git a/dapl/openib_ucm/device.c b/dapl/openib_ucm/device.c index 90a044e..4f26e87 100644 --- a/dapl/openib_ucm/device.c +++ b/dapl/openib_ucm/device.c @@ -354,16 +354,17 @@ DAT_RETURN dapls_ib_close_hca(IN DAPL_HCA * hca_ptr) } } + dapl_os_lock_destroy(&hca_ptr->ib_trans.lock); + dapl_os_lock_destroy(&hca_ptr->ib_trans.llock); + destroy_cr_pipe(hca_ptr); /* no longer need pipe */ + ucm_service_destroy(hca_ptr); + if (hca_ptr->ib_hca_handle != IB_INVALID_HANDLE) { if (ibv_close_device(hca_ptr->ib_hca_handle)) return (dapl_convert_errno(errno, "ib_close_device")); hca_ptr->ib_hca_handle = IB_INVALID_HANDLE; } - dapl_os_lock_destroy(&hca_ptr->ib_trans.lock); - dapl_os_lock_destroy(&hca_ptr->ib_trans.llock); - destroy_cr_pipe(hca_ptr); /* no longer need pipe */ - ucm_service_destroy(hca_ptr); return (DAT_SUCCESS); }