Provided by: nfstest_3.2-2_all
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)