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