Provided by: nfstest_3.2-2_all bug

NAME

       nfstest_lock - Locking tests

SYNOPSIS

       nfstest_lock --server <server> [--client <client>] [options]

DESCRIPTION

       Basic  locking tests verify that a lock is granted using various arguments to fcntl. These
       include blocking and non-blocking locks, read or write locks, where  the  file  is  opened
       either  for  reading,  writing  or  both.  It also checks different ranges including limit
       conditions.

       Non-overlapping tests verity that locks are granted on both the client under  test  and  a
       second process or a remote client when locking the same file.

       Overlapping  tests  verity  that  a  lock is granted on the client under test and a second
       process or a remote client trying to lock the same file will be denied if  a  non-blocking
       lock  is  issue  or  will  be blocked if a blocking lock is issue on the second process or
       remote client.

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

   NFS specific options:
       -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,rsize=4096,wsize=4096']

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

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

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

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

   Packet trace options:
       --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]

       --subtraces
              Create a packet trace for each sub-test. Use it with caution since it will create a
              lot  of  packet  traces.  Use  --createtraces instead unless trying to get a packet
              trace for a specific sub-test. Best if it is used in combination with the --runtest
              option.

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

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

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

   Path options:
       --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']

   Debug options:
       --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

   Reporting options:
       --xunit-report
              Generate xUnit compatible test report

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

   Test options:
       --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']

       --client=CLIENT
              Remote NFS client and  options  used  for  conflicting  lock  tests.   Clients  are
              separated by a ',' and each client definition is a list of arguments separated by a
              ':' given in the following order if positional arguments is  used  (see  examples):
              clientname:server:export:nfsversion:port:proto:sec:mtpoint

       --nfsopts=NFSOPTS
              Local  process NFS options used for conflicting lock tests. Processes are separated
              by a ',' and each process definition is a list of  arguments  separated  by  a  ':'
              given  in  the  following  order  if  positional  arguments is used (see examples):
              :server:export:nfsversion:port:proto:sec:mtpoint

       --offset=OFFSET
              Offset of first lock granted [default: 4k]

       --length=LENGTH
              Length of first lock granted [default: 4k]

       --unlock-delay=UNLOCK_DELAY
              Time in seconds to unlock first lock [default: 2.0]

       --lockw-timeout=LOCKW_TIMEOUT
              Time in seconds to wait for blocked lock after conflicting lock has  been  released
              [default: 30]

       --opentype=OPENTYPE
              List of open types to test [default: read,write,rdwr]

       --locktype=LOCKTYPE
              List of lock types to test [default: read,write]

       --opentype2=OPENTYPE2
              List of open types to test on remote client [default: read,write,rdwr]

       --locktype2=LOCKTYPE2
              List of lock types to test on remote client [default: read,write]

       --setlock=SETLOCK
              List of set lock types to test [default: immediate,block]

TESTS

   btest01
       Basic locking tests
       These tests verify that a lock is granted using various arguments
       to fcntl. These include blocking and non-blocking locks, read or
       write locks, where the file is opened either for reading, writing
       or both. It also checks different ranges including limit conditions.

   noverlap
       Run all non-overlapping locking tests: nptest01, nptest02, nptest03,
       nptest04, nctest01, nctest02, nctest03, nctest04

   nptest
       Run all non-overlapping locking tests using a second process: nptest01,
       nptest02, nptest03, nptest04

   nptest01
       Locking non-overlapping range from a second process where end2 < start1
       process1:                     |------------------|
       process2: |--------|

   nptest02
       Locking non-overlapping range from a second process where end2 == start1 - 1
       process1:                     |------------------|
       process2: |------------------|

   nptest03
       Locking non-overlapping range from a second process where start2 > end1
       process1: |------------------|
       process2:                               |--------|

   nptest04
       Locking non-overlapping range from a second process where start2 == end1 + 1
       process1: |------------------|
       process2:                     |------------------|

   nctest
       Run all non-overlapping locking tests using a second client: nctest01,
       nctest02, nctest03, nctest04

   nctest01
       Locking non-overlapping range from a second client where end2 < start1
       client1:                      |------------------|
       client2:  |--------|

   nctest02
       Locking non-overlapping range from a second client where end2 == start1 - 1
       client1:                      |------------------|
       client2:  |------------------|

   nctest03
       Locking non-overlapping range from a second client where start2 > end1
       client1:  |------------------|
       client2:                                |--------|

   nctest04
       Locking non-overlapping range from a second client where start2 == end1 + 1
       client1:  |------------------|
       client2:                      |------------------|

   overlap
       Run all overlapping locking tests: optest01, optest02, optest03,
       optest04, optest05, optest06, optest07, optest08, optest09, octest01,
       octest02, octest03, octest04, octest05, octest06, octest07, octest08,
       octest09

   optest
       Run all overlapping locking tests using a second process: optest01,
       optest02, optest03, optest04, optest05, optest06, optest07, optest08,
       optest09

   optest01
       Locking same range from a second process
       process1:                     |------------------|
       process2:                     |------------------|

   optest02
       Locking overlapping range from a second process where start2 < start1
       process1:                     |------------------|
       process2:           |------------------|

   optest03
       Locking overlapping range from a second process where end2 > end1
       process1:                     |------------------|
       process2:                               |------------------|

   optest04
       Locking overlapping range from a second process where range2 is entirely within range1
       process1:                     |------------------|
       process2:                          |--------|

   optest05
       Locking overlapping range from a second process where range1 is entirely within range2
       process1:                     |------------------|
       process2:                |----------------------------|

   optest06
       Locking full file range from a second process

   optest07
       Locking overlapping range from a second process where end2 == start1
       process1:                     |------------------|
       process2:  |------------------|

   optest08
       Locking overlapping range from a second process where start2 == end1
       process1:  |------------------|
       process2:                     |------------------|

   optest09
       Locking overlapping range from multiple processes where range2 and
       range3 are entirely within range1
         process1:                     |-----------------------------|
         process2:                          |--------|
         process3:                                    |--------|

   octest
       Run all overlapping locking tests using a second client: octest01,
       octest02, octest03, octest04, octest05, octest06, octest07, octest08,
       octest09

   octest01
       Locking same range from a second client
       client1:                      |------------------|
       client2:                      |------------------|

   octest02
       Locking overlapping range from a second client where start2 < start1
       client1:                      |------------------|
       client2:            |------------------|

   octest03
       Locking overlapping range from a second client where end2 > end1
       client1:                      |------------------|
       client2:                                |------------------|

   octest04
       Locking overlapping range from a second client where range2 is entirely within range1
       client1:                      |------------------|
       client2:                           |--------|

   octest05
       Locking overlapping range from a second client where range1 is entirely within range2
       client1:                      |------------------|
       client2:                 |----------------------------|

   octest06
       Locking full file range from a second client

   octest07
       Locking overlapping range from a second client where end2 == start1
       client1:                      |------------------|
       client2:   |------------------|

   octest08
       Locking overlapping range from a second client where start2 == end1
       client1:   |------------------|
       client2:                      |------------------|

   octest09
       Locking overlapping range from multiple clients where range2 and
       range3 are entirely within range1
         client1:                     |-----------------------------|
         client2:                          |--------|
         client3:                                    |--------|

   all
       Run all tests: btest01, nptest01, nptest02, nptest03, nptest04,
       nctest01, nctest02, nctest03, nctest04, optest01, optest02, optest03,
       optest04, optest05, optest06, optest07, optest08, optest09, octest01,
       octest02, octest03, octest04, octest05, octest06, octest07, octest08,
       octest09

EXAMPLES

       Run the tests which use only the main client (no client option):
           nfstest_lock --server 192.168.0.2 --export /exports

       Use short options instead:
           nfstest_lock -s 192.168.0.2 -e /exports

       Use positional arguments with nfsversion=3 for extra client:
           nfstest_lock -s 192.168.0.2 -e /exports --client 192.168.0.10:::3

       Use named arguments instead:
           nfstest_lock -s 192.168.0.2 -e /exports --client 192.168.0.10:nfsversion=3

       Use positional arguments with nfsversion=3 for second process:
           nfstest_lock -s 192.168.0.2 -e /exports --nfsopts :::3

       Use named arguments instead:
           nfstest_lock -s 192.168.0.2 -e /exports --nfsopts nfsversion=3

NOTES

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

       The user id must be able to 'ssh' to remote host without the need for a password.

SEE ALSO

       baseobj(3),  formatstr(3),   nfstest.test_util(3),   nfstest_alloc(1),   nfstest_cache(1),
       nfstest_delegation(1),       nfstest_dio(1),       nfstest_fcmp(1),       nfstest_file(1),
       nfstest_interop(1),  nfstest_io(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), packet.nfs.nlm4_const(3)

BUGS

       No known bugs.

AUTHOR

       Jorge Mora (mora@netapp.com)