logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

nfstest_dio - Direct I/O tests

Author

       Jorge Mora (mora@netapp.com)

NFStest 3.2                                       21 March 2023                                   NFSTEST_DIO(1)

Bugs

       No known bugs.

Description

       Functional  direct  I/O  tests  verify  that every READ/WRITE is sent to the server instead of the client
       caching the requests. Client bypasses read ahead by sending the  READ  with  only  the  requested  bytes.
       Verify  the  client  correctly  handles  eof  marker  when  reading the whole file. Verify client ignores
       delegation while writing a file.

       Direct I/O on pNFS tests verify the client sends the READ/WRITE to the correct DS or the MDS if  using  a
       PAGESIZE aligned buffer or not, respectively.

       Direct  I/O  data  correctness  tests verify that a file written with buffered I/O is read correctly with
       direct I/O. Verify that a file written with direct I/O is read correctly with buffered I/O.

       Vectored I/O tests verify coalescence of multiple vectors into one READ/WRITE packet when all vectors are
       PAGESIZE aligned. Vectors with different alignments are sent on separate packets.

       Valid for NFSv4.0 and NFSv4.1 including pNFS.

Examples

       The only required option is --server
       $ nfstest_dio --server 192.168.0.11

Name

       nfstest_dio - Direct I/O tests

Notes

       The user id in the local host must have access to run commands as root using the 'sudo'  command  without
       the need for a password.

Options

       --version
              show program's version number and exit

       -h, --help
              show this help message and exit

       -f FILE, --file=FILE
              File where options are specified besides  the  system  wide  file  /etc/nfstest,  user  wide  file
              $HOME/.nfstest or in the current directory .nfstest file

   NFSspecificoptions:
       -s SERVER, --server=SERVER
              Server name or IP address

       -e EXPORT, --export=EXPORT
              Exported file system to mount [default: '/']

       --nfsversion=NFSVERSION
              NFS version, e.g., 3, 4, 4.1, etc. [default: 4.1]

       -m MTPOINT, --mtpoint=MTPOINT
              Mount point [default: '/mnt/t']

       -p PORT, --port=PORT
              NFS server port [default: 2049]

       --proto=PROTO
              NFS protocol name [default: 'tcp']

       --sec=SEC
              Security flavor [default: 'sys']

       --nconnect=NCONNECT
              Multiple TCP connections option [default: '1']

       -o MTOPTS, --mtopts=MTOPTS
              Mount options [default: 'hard,intr']

       --datadir=DATADIR
              Data directory where files are created, directory is created on the mount point [default: '']

   Loggingoptions:
       -v VERBOSE, --verbose=VERBOSE
              Verbose level for debug messages [default: 'opts|info|dbg1|dbg2|dbg3']

       --tverbose=TVERBOSE
              Verbose level for test messages [default: '1']

       --createlog
              Create log file

       --rexeclog
              Create rexec log files

       --warnings
              Display warnings

       --tag=TAG
              Informational tag, it is displayed as an INFO message [default: '']

       --notty
              Do not use terminal colors on output

       --isatty
              Use terminal colors on output -- useful when running with nohup

   Packettraceoptions:
       --createtraces
              Create a packet trace for each test

       --tbsize=TBSIZE
              Capture buffer size for tcpdump [default: 192k]

       --trcdelay=TRCDELAY
              Seconds to delay before stopping packet trace [default: 2.0]

       --keeptraces
              Do not remove any trace files [default: remove trace files if no errors]

       --rmtraces
              Remove trace files [default: remove trace files if no errors]

       -i INTERFACE, --interface=INTERFACE
              Device interface [default: automatically selected]

   Fileoptions:
       --nfiles=NFILES
              Number of files to create [default: 2]

       --filesize=FILESIZE
              File size to use for test files [default: 262144]

       --rsize=RSIZE
              Read size to use when reading files [default: 4k]

       --wsize=WSIZE
              Write size to use when writing files [default: 4k]

       --iodelay=IODELAY
              Seconds to delay I/O operations [default: 0.1]

       --offset-delta=OFFSET_DELTA
              Read/Write offset delta [default: 4k]

   Pathoptions:
       --sudo=SUDO
              Full path of binary for sudo [default: '/usr/bin/sudo']

       --kill=KILL
              Full path of binary for kill [default: '/usr/bin/kill']

       --nfsstat=NFSSTAT
              Full path of binary for nfsstat [default: '/usr/sbin/nfsstat']

       --tcpdump=TCPDUMP
              Full path of binary for tcpdump [default: '/usr/sbin/tcpdump']

       --iptables=IPTABLES
              Full path of binary for iptables [default: '/usr/sbin/iptables']

       --messages=MESSAGES
              Full path of log messages file [default: '/var/log/messages']

       --trcevents=TRCEVENTS
              Full path of tracing events directory [default: '/sys/kernel/debug/tracing/events']

       --trcpipe=TRCPIPE
              Full path of trace pipe file [default: '/sys/kernel/debug/tracing/trace_pipe']

       --tmpdir=TMPDIR
              Temporary directory [default: '/tmp']

   Debugoptions:
       --nocleanup
              Do not cleanup created files

       --notimestamps
              Do not display timestamps in debug messages

       --bugmsgs=BUGMSGS
              File containing test messages to mark as bugs if they failed

       --nomount
              Do not mount server and run the tests on local disk space

       --basename=BASENAME
              Base name for all files and logs [default: automatically generated]

       --nfsdebug=NFSDEBUG
              Set NFS kernel debug flags and save log messages [default: '']

       --rpcdebug=RPCDEBUG
              Set RPC kernel debug flags and save log messages [default: '']

       --tracepoints=TRACEPOINTS
              List of trace points modules to enable [default: '']

       --nfsstats
              Get NFS stats [default: 'False']

       --pktdisp
              Display main packets related to the given test

       --nfserrors
              Fail every NFS error found in the packet trace

       --client-ipaddr=CLIENT_IPADDR
              IP address of localhost

   Reportingoptions:
       --xunit-report
              Generate xUnit compatible test report

       --xunit-report-file=XUNIT_REPORT_FILE
              Path to xout report file

   Testoptions:
       --runtest=RUNTEST
              Comma  separated list of tests to run, if list starts with a '^' then all tests are run except the
              ones listed [default: 'all']

       --iotype=IOTYPE
              List of I/O types to test [default: 'read,write']

       --biotype=BIOTYPE
              List of buffered I/O types to test [default: 'none,read,write']

       --withdeleg=WITHDELEG
              Use delegation on tests [default: both without and with delegation]

See Also

formatstr(3),nfstest.test_util(3),nfstest_alloc(1),nfstest_cache(1),nfstest_delegation(1),nfstest_fcmp(1),nfstest_file(1),nfstest_interop(1),nfstest_io(1),nfstest_lock(1),nfstest_pkt(1),nfstest_pnfs(1),nfstest_posix(1),nfstest_rdma(1),nfstest_sparse(1),nfstest_ssc(1),nfstest_xattr(1),nfstest_xid(1),packet.nfs.nfs3_const(3),packet.nfs.nfs4_const(3)

Synopsis

       nfstest_dio --server <server> [options]

Tests

eof
       Verify eof marker is handled correctly when reading the end
       of the file.

   correctness
       Verify data correctness when reading/writing using direct I/O.
       File created with buffered I/O is read correctly with direct I/O.
       File created with direct I/O is read correctly with buffered I/O.

   fstat
       Verify fstat() gets correct file size after writing.

   read
       Verify READ is sent after writing when the file is open for
       both read and write.

   read_ahead
       Verify READ is sent with only the requested bytes bypassing
       read ahead.

   basic
       Verify a packet is sent for each I/O request.

   rsize
       Verify multiple READ packets are sent for each read request
       having request size > rsize.

   wsize
       Verify multiple WRITE packets are sent for each write request
       having request size > wsize

   aligned
       Verify packet is sent to correct DS server when using a memory
       which is PAGESIZE aligned.

   nonaligned
       Verify packet is sent to the MDS when using a memory which
       is not PAGESIZE aligned.

   diffalign
       Verify packets are sent to both the MDS and correct DS on same open
       using buffers with different alignments.

   stripesize
       Verify multiple packets are sent for each request having the
       request size greater than stripe size.

   vectored_io
       Verify vectored I/O functionality.

   all
       Run all tests: eof, correctness, fstat, read, read_ahead, basic, rsize,
       wsize, aligned, nonaligned, diffalign, stripesize, vectored_io

See Also