Provided by: nfstest_3.2-3_all bug

NAME

       nfstest_delegation - Delegation tests

SYNOPSIS

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

DESCRIPTION

       Basic  delegation  tests  verify  that a correct delegation is granted when opening a file for reading or
       writing. Also, another OPEN should not be sent for the same file when the client is holding a delegation.
       Verify that the stateid of all I/O operations should be the delegation stateid.  Reads from  a  different
       process  on  the same file should not cause the client to send additional READ packets when the client is
       holding a read delegation.  Furthermore, a LOCK packet should not be sent to the server when  the  client
       is holding a delegation.

       Recall  delegation  tests  verify  the delegation is recalled when a conflicting operation is sent to the
       server from a different client. Conflicting operations  are  reading,  writing,  removing,  renaming  and
       changing  the  permissions  on  the  same file. Note that reading a file from a different client can only
       recall a write delegation. Removing the delegated file from a different client recalls the delegation and
       the server may or may not allow any more writes from the client after the delegation has  been  returned.
       Renaming  either  the  delegated  file  (as  source)  or  into the delegated file (as target) recalls the
       delegation. In the case where the delegated file is the target of rename, the existing target is  removed
       before the rename occurs, therefore the server may or may not allow nay more writes from the client after
       the delegation has been removed just like in the case when removing the delegated file.

       Also, verify that a read delegation is not recalled when a different client is granted a read delegation.
       After  a delegation is recalled, the client may send an OPEN with CLAIM_DELEGATE_CUR before returning the
       delegation specially when there is a open pending on the client. In addition, the stateid returned by the
       new open should be the same as the original OPEN stateid. Also, a delegation should not be  granted  when
       re-opening  the  file  before  returning  the  delegation.   The client may flush all written data before
       returning the WRITE delegation.  The LOCK should be sent as well before returning a delegation which  has
       been  recalled. Finally, a delegation should not be granted on the second client who cause the delegation
       recall on the first 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: '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

   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]

   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 recall delegation 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                               [default:
              'nfsversion=3:proto=tcp:port=2049']

       --client-nfsvers=CLIENT_NFSVERS
              Comma separated list of valid NFS versions to use in the --client option. An NFS version from this
              list, which is different than that given by --nfsversion, is selected and included in the --client
              option [default: 4.0,4.1]

       --lock-offset=LOCK_OFFSET
              Starting offset for lock [default: 0]

       --lock-poffset=LOCK_POFFSET
              Starting offset for lock on pending open [default: 8192]

       --lock-len=LOCK_LEN
              Number of bytes to lock [default: 4096]

       --truncate
              Truncate file when writing from the second file for the recall tests

       --setup-delay=SETUP_DELAY
              Seconds to delay after setup so all opens are released [default: 4.0]

TESTS

   basic
       Run all basic delegation tests: basic01, basic02, basic03, basic04,
       basic05, basic06, basic07, basic08, basic09, basic10, basic11, basic12

   stat
       Run all basic delegation tests with file stat: basic03, basic04,
       basic09, basic10

   lock
       Run all basic delegation tests with file lock: basic05, basic06,
       basic11, basic12

   basic01
       Basic read delegation test

   basic02
       Basic write delegation test

   basic03
       Basic read delegation test with file stat

   basic04
       Basic write delegation test with file stat

   basic05
       Basic read delegation test with file lock

   basic06
       Basic write delegation test with file lock

   basic07
       Basic write delegation test using RDWR open while reading

   basic08
       Basic write delegation test using RDWR open while writing

   basic09
       Basic write delegation test using RDWR open while reading with file stat

   basic10
       Basic write delegation test using RDWR open while writing with file stat

   basic11
       Basic write delegation test using RDWR open while reading with file lock

   basic12
       Basic write delegation test using RDWR open while writing with file lock

   recall
       Run all recall delegation tests: recall01, recall02, recall03, recall04,
       recall05, recall06, recall07, recall08, recall09, recall10, recall11,
       recall12, recall13, recall14, recall15, recall16, recall17, recall18,
       recall19, recall20, recall21, recall22, recall23, recall24, recall25,
       recall26, recall27, recall28, recall29, recall30, recall31, recall32,
       recall33, recall34, recall35, recall36, recall37, recall38, recall39,
       recall40, recall41, recall42, recall43, recall44, recall45, recall46,
       recall47, recall48, recall49, recall50, recall51, recall52, recall53,
       recall54

   setattr
       Run all tests using SETATTR to recall the delegation: recall07,
       recall08, recall09, recall10, recall35, recall36, recall37, recall38

   remove
       Run all tests recalling the delegation by removing the delegated file:
       recall11, recall12, recall13, recall14, recall39, recall40, recall41,
       recall42

   rename
       Run all tests recalling the delegation by renaming the delegated file:
       recall15, recall16, recall17, recall18, recall19, recall20, recall21,
       recall22, recall43, recall44, recall45, recall46, recall47, recall48,
       recall49, recall50

   pending
       Run all recall delegation tests having a pending open: recall23,
       recall24, recall25, recall26, recall51, recall52, recall53, recall54

   recall01
       Recall read delegation by writing from a second client

   recall02
       Recall write delegation by writing from a second client

   recall03
       Recall read delegation by writing from a second client with file lock

   recall04
       Recall write delegation by writing from a second client with file lock

   recall05
       Recall write delegation by reading from a second client

   recall06
       Recall write delegation by reading from a second client with file lock

   recall07
       Recall read delegation by changing the permissions to the file

   recall08
       Recall write delegation by changing the permissions to the file

   recall09
       Recall read delegation by changing the permissions to the file with file lock

   recall10
       Recall write delegation by changing the permissions to the file with file lock

   recall11
       Recall read delegation by removing the file

   recall12
       Recall write delegation by removing the file

   recall13
       Recall read delegation by removing the file with file lock

   recall14
       Recall write delegation by removing the file with file lock

   recall15
       Recall read delegation by renaming the file

   recall16
       Recall write delegation by renaming the file

   recall17
       Recall read delegation by renaming the file with file lock

   recall18
       Recall write delegation by renaming the file with file lock

   recall19
       Recall read delegation by renaming into the file

   recall20
       Recall write delegation by renaming into the file

   recall21
       Recall read delegation by renaming into the file with file lock

   recall22
       Recall write delegation by renaming into the file with file lock

   recall23
       Recall read delegation by writing from a second client with file lock,
       having a pending read open

   recall24
       Recall read delegation by writing from a second client with file lock,
       having a pending write open.
       Delegation is returned by the client when the second open is done so
       there is no delegation recall

   recall25
       Recall write delegation by writing from a second client with file lock,
       having a pending read open

   recall26
       Recall write delegation by writing from a second client with file lock,
       having a pending write open

   recall27
       Recall write delegation by reading from a second client using RDWR
       open while reading

   recall28
       Recall write delegation by reading from a second client using RDWR
       open while writing

   recall29
       Recall write delegation by writing from a second client using RDWR
       open while reading

   recall30
       Recall write delegation by writing from a second client using RDWR
       open while writing

   recall31
       Recall write delegation by reading from a second client using RDWR
       open while reading with file lock

   recall32
       Recall write delegation by reading from a second client using RDWR
       open while writing with file lock

   recall33
       Recall write delegation by writing from a second client using RDWR
       open while reading with file lock

   recall34
       Recall write delegation by writing from a second client using RDWR
       open while writing with file lock

   recall35
       Recall write delegation by changing the permissions to the file
       from a second client using RDWR open while reading

   recall36
       Recall write delegation by changing the permissions to the file
       from a second client using RDWR open while writing

   recall37
       Recall write delegation by changing the permissions to the file
       from a second client using RDWR open while reading with file lock

   recall38
       Recall write delegation by changing the permissions to the file
       from a second client using RDWR open while writing with file lock

   recall39
       Recall write delegation by removing the file from a second client
       using RDWR open while reading

   recall40
       Recall write delegation by removing the file from a second client
       using RDWR open while writing

   recall41
       Recall write delegation by removing the file from a second client
       using RDWR open while reading with file lock

   recall42
       Recall write delegation by removing the file from a second client
       using RDWR open while writing with file lock

   recall43
       Recall write delegation by renaming the file from a second client
       using RDWR open while reading

   recall44
       Recall write delegation by renaming the file from a second client
       using RDWR open while writing

   recall45
       Recall write delegation by renaming the file from a second client
       using RDWR open while reading with file lock

   recall46
       Recall write delegation by renaming the file from a second client
       using RDWR open while writing with file lock

   recall47
       Recall write delegation by renaming the file from a second client
       using RDWR open while reading

   recall48
       Recall write delegation by renaming the file from a second client
       using RDWR open while writing

   recall49
       Recall write delegation by renaming the file from a second client
       using RDWR open while reading with file lock

   recall50
       Recall write delegation by renaming the file from a second client
       using RDWR open while writing with file lock

   recall51
       Recall write delegation by writing from a second client using RDWR
       open while reading with file lock, having a pending read open

   recall52
       Recall write delegation by writing from a second client using RDWR
       open while reading with file lock, having a pending write open

   recall53
       Recall write delegation by writing from a second client using RDWR
       open while writing with file lock, having a pending read open

   recall54
       Recall write delegation by writing from a second client using RDWR
       open while writing with file lock, having a pending write open

   read_deleg
       Run all read delegation tests: basic01, basic03, basic05, recall01,
       recall03, recall07, recall09, recall11, recall13, recall15, recall17,
       recall19, recall21, recall23, recall24

   write_deleg
       Run all write delegation tests: basic02, basic04, basic06, basic07,
       basic08, basic09, basic10, basic11, basic12, recall02, recall04,
       recall05, recall06, recall08, recall10, recall12, recall14, recall16,
       recall18, recall20, recall22, recall25, recall26, recall27, recall28,
       recall29, recall30, recall31, recall32, recall33, recall34, recall35,
       recall36, recall37, recall38, recall39, recall40, recall41, recall42,
       recall43, recall44, recall45, recall46, recall47, recall48, recall49,
       recall50, recall51, recall52, recall53, recall54

   all
       Run all tests: basic01, basic02, basic03, basic04, basic05, basic06,
       basic07, basic08, basic09, basic10, basic11, basic12, recall01,
       recall02, recall03, recall04, recall05, recall06, recall07, recall08,
       recall09, recall10, recall11, recall12, recall13, recall14, recall15,
       recall16, recall17, recall18, recall19, recall20, recall21, recall22,
       recall23, recall24, recall25, recall26, recall27, recall28, recall29,
       recall30, recall31, recall32, recall33, recall34, recall35, recall36,
       recall37, recall38, recall39, recall40, recall41, recall42, recall43,
       recall44, recall45, recall46, recall47, recall48, recall49, recall50,
       recall51, recall52, recall53, recall54

EXAMPLES

       Run the basic delegation tests (no client option):
           nfstest_delegation --server 192.168.0.2 --export /exports

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

       Run both the basic and recall tests using positional arguments with nfsversion=3 for the second client:
           nfstest_delegation -s 192.168.0.2 -e /exports --client 192.168.0.10:::3

       Use named arguments instead:
           nfstest_delegation -s 192.168.0.2 -e /exports --client 192.168.0.10: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

       nfstest.test_util(3),    nfstest_alloc(1),     nfstest_cache(1),     nfstest_dio(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)

BUGS

       No known bugs.

AUTHOR

       Jorge Mora (mora@netapp.com)

NFStest 3.2                                       21 March 2023                            NFSTEST_DELEGATION(1)