Recent changes (master)
The following changes since commit 7f125e7f3879d23e79bc2ef5eed678ddab3b5c70:
zbd: Fix zone report handling (2019-04-19 09:11:34 -0600)
are available in the Git repository at:
git://git.kernel.dk/fio.git master
for you to fetch changes up to afc22c98609ee80a99fbed24231181bdab2bc659:
Merge branch 'libiscsi' of https://github.com/smartxworks/fio (2019-04-22 08:38:55 -0600)
----------------------------------------------------------------
Jens Axboe (1):
Merge branch 'libiscsi' of https://github.com/smartxworks/fio
Kyle Zhang (2):
filesetup: don't call create_work_dirs() for ioengine with FIO_DISKLESSIO
fio: add libiscsi engine
HOWTO | 2 + Makefile | 6 + configure | 28 +++- engines/libiscsi.c | 407 ++++++++++++++++++++++++++++++++++++++++++++++++++ examples/libiscsi.fio | 3 + filesetup.c | 85 ++++++----- fio.1 | 3 + optgroup.h | 2 + 8 files changed, 494 insertions(+), 42 deletions(-) create mode 100644 engines/libiscsi.c create mode 100644 examples/libiscsi.fio
---
Diff of recent changes:
HOWTO +2 -0
@@ -1991,6 +1991,8 @@ I/O engine Asynchronous read and write using DDN's Infinite Memory Engine (IME). This engine will try to stack as much IOs as possible by creating requests for IME. FIO will then decide when to commit these requests. + **libiscsi** + Read and write iscsi lun with libiscsi. I/O engine specific parameters ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Makefile +6 -0
@@ -59,6 +59,12 @@ ifdef CONFIG_LIBHDFS SOURCE += engines/libhdfs.c endif +ifdef CONFIG_LIBISCSI + CFLAGS += $(LIBISCSI_CFLAGS) + LIBS += $(LIBISCSI_LIBS) + SOURCE += engines/libiscsi.c +endif + ifdef CONFIG_64BIT CFLAGS += -DBITS_PER_LONG=64 endif
configure +27 -1
@@ -148,6 +148,7 @@ disable_lex="" disable_pmem="no" disable_native="no" march_set="no" +libiscsi="no" prefix=/usr/local # parse options
@@ -204,6 +205,8 @@ for opt do ;; --with-ime=*) ime_path="$optarg" ;; + --enable-libiscsi) libiscsi="yes" + ;; --help) show_help="yes" ;;
@@ -239,6 +242,7 @@ if test "$show_help" = "yes" ; then echo "--enable-cuda Enable GPUDirect RDMA support" echo "--disable-native Don't build for native host" echo "--with-ime= Install path for DDN's Infinite Memory Engine" + echo "--enable-libiscsi Enable iscsi support" exit $exit_val fi
@@ -1970,6 +1974,22 @@ if compile_prog "-I${ime_path}/include" "-L${ime_path}/lib -lim_client" "libime" fi print_config "DDN's Infinite Memory Engine" "$libime" +########################################## +# Check if we have required environment variables configured for libiscsi +if test "$libiscsi" = "yes" ; then + if $(pkg-config --atleast-version=1.9.0 libiscsi); then + libiscsi="yes" + libiscsi_cflags=$(pkg-config --cflags libiscsi) + libiscsi_libs=$(pkg-config --libs libiscsi) + else + if test "$libiscsi" = "yes" ; then + echo "libiscsi" "Install libiscsi >= 1.9.0" + fi + libiscsi="no" + fi +fi +print_config "iscsi engine" "$libiscsi" + ########################################## # Check if we have lex/yacc available yacc="no"
@@ -2543,7 +2563,7 @@ if test "$libhdfs" = "yes" ; then echo "JAVA_HOME=$JAVA_HOME" >> $config_host_mak echo "FIO_LIBHDFS_INCLUDE=$FIO_LIBHDFS_INCLUDE" >> $config_host_mak echo "FIO_LIBHDFS_LIB=$FIO_LIBHDFS_LIB" >> $config_host_mak - fi +fi if test "$mtd" = "yes" ; then output_sym "CONFIG_MTD" fi
@@ -2627,6 +2647,12 @@ fi if test "$thp" = "yes" ; then output_sym "CONFIG_HAVE_THP" fi +if test "$libiscsi" = "yes" ; then + output_sym "CONFIG_LIBISCSI" + echo "CONFIG_LIBISCSI=m" >> $config_host_mak + echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak + echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak +fi echo "LIBS+=$LIBS" >> $config_host_mak echo "GFIO_LIBS+=$GFIO_LIBS" >> $config_host_mak
engines/libiscsi.c new file +407 -0
407 lines not on this page · raw message
examples/libiscsi.fio new file +3 -0
@@ -0,0 +1,3 @@ +[iscsi] +ioengine=libiscsi +filename=iscsi\://127.0.0.1/iqn.2016-02.com.fio\:system\:fio/1
filesetup.c +44 -41
109 lines not on this page · raw message
fio.1 +3 -0
@@ -1751,6 +1751,9 @@ are "contiguous" and the IO depth is not exceeded) before issuing a call to IME. Asynchronous read and write using DDN's Infinite Memory Engine (IME). This engine will try to stack as much IOs as possible by creating requests for IME. FIO will then decide when to commit these requests. +.TP +.B libiscsi +Read and write iscsi lun with libiscsi. .SS "I/O engine specific parameters" In addition, there are some parameters which are only valid when a specific \fBioengine\fR is in use. These are used identically to normal parameters,
optgroup.h +2 -0
@@ -63,6 +63,7 @@ enum opt_category_group { __FIO_OPT_G_SG, __FIO_OPT_G_MMAP, __FIO_OPT_G_NR, + __FIO_OPT_G_ISCSI,FIO_OPT_G_RATE = (1ULL << __FIO_OPT_G_RATE), FIO_OPT_G_ZONE = (1ULL << __FIO_OPT_G_ZONE),
@@ -100,6 +101,7 @@ enum opt_category_group {FIO_OPT_G_SG = (1ULL << __FIO_OPT_G_SG),FIO_OPT_G_MMAP = (1ULL << __FIO_OPT_G_MMAP),FIO_OPT_G_INVALID = (1ULL << __FIO_OPT_G_NR), + FIO_OPT_G_ISCSI = (1ULL << __FIO_OPT_G_ISCSI), };extern const struct opt_group *opt_group_from_mask (uint64_t *mask);