fix broken external ioengine option
get_engine_name() function added to support external ioengine option
via "external:" prefix in below commits in 2007 has been broken.
7b395ca5('Prefix external io engine loading with 'external'')
8a7bd877('Document loading external io engines')
It seems to have been broken since below commit in 2011 which made
__handle_option() strip ':' and after while parsing the option.
c44b1ff5('Add sub-option support (sort-of) and convert libaio_userspace_reap')
Above change made fio dlopen "external" instead of the path located
after "external:", since the path had already been stripped by
__handle_option() by the time get_engine_name() was called. This commit
fixes it by adding ->ioengine_so_path pointer to keep the path while
parsing using sub-option callback.
Note that removing get_engine_name() doesn't affect non "external:"
ioengine options, as the option parser also strips while parsing.
-- before this commit
# ./fio --name=xxx --ioengine=external:./engines/skeleton_external.so
fio: engine external not loadable
fio: failed to load engine external
fio: file:ioengines.c:91, func=dlopen, error=external: cannot open shared object file: No such file or directory
-- with this commit
# ./fio --name=xxx --ioengine=external:./engines/skeleton_external.so
xxx: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=engine_name, iodepth=1
fio-3.0-32-g68f6f
Starting 1 process
xxx: you need to specify size=
fio: pid=0, err=22/file:filesetup.c:973, func=total_file_size, error=Invalid argument
Run status group 0 (all jobs):
Signed-off-by: Tomohiro Kusumi <tkusumi@tuxera.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>