| 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 |