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>
44 lines
608 B
Plaintext
44 lines
608 B
Plaintext
[global]
|
|
ioengine=spdk
|
|
thread=1
|
|
group_reporting=1
|
|
direct=1
|
|
verify=0
|
|
norandommap=1
|
|
cpumask=1
|
|
percentile_list=50:99:99.9:99.99:99.999
|
|
|
|
[precondition-trim]
|
|
description="Trim the entire device"
|
|
rw=trim
|
|
iodepth=128
|
|
bs=1M
|
|
|
|
[precondition-sequential]
|
|
stonewall
|
|
description="Sequentially write to the device twice"
|
|
rw=write
|
|
iodepth=128
|
|
bs=128k
|
|
loops=2
|
|
|
|
[4k_randwrite_qd1]
|
|
stonewall
|
|
description="4KiB Random Write QD=1"
|
|
bs=4k
|
|
rw=randwrite
|
|
iodepth=1
|
|
time_based=1
|
|
ramp_time=60
|
|
runtime=240
|
|
|
|
[4k_randread_qd1]
|
|
stonewall
|
|
description="4KiB Random Read QD=1"
|
|
bs=4k
|
|
rw=randread
|
|
iodepth=1
|
|
time_based=1
|
|
ramp_time=60
|
|
runtime=240
|