nfstest_lock - Man Page

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)

Referenced By

nfstest(1), 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).

21 March 2023 NFStest 3.2 nfstest_lock 1.3