Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
thread: don't immediately remove channel from list when put
When spdk_put_io_channel is called, if its the last reference, we defer actual destruction of the channel, so that code in the same context which may be referring to the channel doesn't crash. But it is possible that an io_channel for that same io_device could be requested before the deferred message is processed. This would result in a second io_channel being created for that device on the same thread. To avoid this case, don't immediately remove the channel from the list when the last reference is put. When the deferred message is processed, if additional references were allocated in the meantime, don't destroy the channel. Signed-off-by: Jim Harris <james.r.harris@intel.com> Signed-off-by: Ziye Yang <ziye.yang@intel.com> Change-Id: Idb8d4705fda0eb9c338e4960430e04edbe537e05 Reviewed-on: https://review.gerrithub.io/418878 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: GangCao <gang.cao@intel.com> Reviewed-by: Pawel Wodkowski <pawelx.wodkowski@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
- Loading branch information