Spdk/examples/nvme
Jim Harris 7b7799bf9c fio_plugin: switch to LD_PRELOAD instead of dynamically loading
fio has a race between reap_threads() and free_ioengine().  free_ioengine()
will call the ioengine's cleanup routine and then dlclose it if it
is dynamically linked (like the spdk fio plugin).  free_ioengine() does
not set td->io_ops = NULL though until after dlclose() is complete.  If
reap_threads() tries to dereference td->io_ops after our plugin has been
closed but before io_ops was set to NULL, it will segfault.

Solution (until an upstream fio fix is available) is to use LD_PRELOAD
instead.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: Ide4eb3cb92a636513289107fc211fdf1f98b616f

Reviewed-on: https://review.gerrithub.io/365272
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Ziye Yang <optimistyzy@gmail.com>
2017-06-14 11:12:29 -04:00
..
arbitration env: Rename spdk_malloc/zmalloc/realloc/free to spdk_dma_(func) 2017-05-31 15:30:27 -04:00
fio_plugin fio_plugin: switch to LD_PRELOAD instead of dynamically loading 2017-06-14 11:12:29 -04:00
hello_world env: Rename spdk_malloc/zmalloc/realloc/free to spdk_dma_(func) 2017-05-31 15:30:27 -04:00
hotplug env_dpdk: save and restore optind in spdk_env_init 2017-06-13 17:39:38 -04:00
identify env_dpdk: save and restore optind in spdk_env_init 2017-06-13 17:39:38 -04:00
nvme_manage nvme_manage: trim newline from fgets() buffer 2017-06-12 16:30:12 -04:00
perf env_dpdk: save and restore optind in spdk_env_init 2017-06-13 17:39:38 -04:00
reserve include: Move the remainder of the code base to stdinc.h 2017-05-08 13:20:36 -07:00
Makefile example: Add example for nvme hotplug. 2016-12-01 10:23:10 +08:00