User space FILEIO handler
=========================

Version 3.5.0, 21 December 2020
----------------------------

User space program fileio_tgt uses interface of SCST's scst_user dev
handler and allows to see how it works in various modes. Fileio_tgt
provides mostly the same functionality as the kernel space SCST's
scst_vdisk handler with the only exceptions that it supports O_DIRECT
mode and doesn't support BLOCKIO one. O_DIRECT mode is basically the
same as BLOCKIO, but also supports files, so for some loads it could be
significantly faster, than the regular FILEIO access. All the words
about BLOCKIO mode from SCST's README file apply to O_DIRECT mode as
well.

Installation
------------

Make sure you have installed SCST core, if not, see its README file for
details how to do it.

Then run "make all install"

For the best performance make sure you don't have any debug options
(i.e. lines like "CFLAGS += -DDEBUG" containing "-DDEBUG*" string)
enabled in the Makefile.

Usage
-----

Load scst_user module using modprobe or insmod, then start fileio_tgt
program. It can be used as the following:

fileio_tgt [OPTION] name path

Where:

 - OPTION - one or several not required options, see below.

 - name - name of the virtual device as it will be seen by SCST and used
   in the subsequent access management using the corresponding SCST interface.

 - path - path to the device file.

The following options are supported:

 -b or --block=size: block size, must be power of 2 and >=512

 -e or --threads=count: number of threads

 -t or --write_through: write through mode

 -r or --read_only: read only

 -o or --direct: O_DIRECT mode, see above for details

 -n or --nullio: NULLIO mode, see SCST's README file for details

 -c or --nv_cache: NV_CACHE mode, see SCST's README file for details

 -p or --parse=type: parse type, one of "std" (default), "call" or "excpt"

 -f or --on_free=type: on free call type, one of "ignore" (default) or "call"

 -m or --mem_reuse=type: Memory reuse type, one of "all" (default), "read",
  "write" or "none"

 -s or --prio_thread: Use separate thread for mgmt (prio) commands

 -l or --non_blocking: Use non-blocking operations

Also in the debug builds the following options are supported:

 -d or --debug=level: debug tracing level

 -g or --debug_tm_ignore: turn on DEBUG_TM_IGNORE, one of the task management
  debugging features

If you don't understand some these options, don't use them, default
values provide the best performance.

Vladislav Bolkhovitin <vst@vlnb.net>, http://scst.sourceforge.net
