
Fault Injection
===============
Fault injection is a method for forcing errors that may not normally occur, or
may be difficult to reproduce.  Forcing these errors in a controlled environment
can help the developer find and fix bugs before their code is shipped in a
production system.  Injecting an error on the Linux NFS server will allow us to
observe how the client reacts and if it manages to recover its state correctly.

NFSD_FAULT_INJECTION must be selected when configuring the kernel to use this
feature.


Using Fault Injection
=====================
On the client, mount the fault injection server through NFS v4.0+ and do some
work over NFS (open files, take locks, ...).

On the server, mount the debugfs filesystem to <debug_dir> and ls
<debug_dir>/nfsd.  This will show a list of files that will be used for
injecting faults on the NFS server.  As root, write a number n to the file
corresponding to the action you want the server to take.  The server will then
process the first n items it finds.  So if you want to forget 5 locks, echo '5'
to <debug_dir>/nfsd/forget_locks.  A value of 0 will tell the server to forget
all corresponding items.  A log message will be created containing the number
of items forgotten (check dmesg).

Go back to work on the client and check if the client recovered from the error
correctly.


Available Faults
================
forget_clients:
     The NFS server keeps a list of clients that have placed a mount call.  If
     this list is cleared, the server will have no knowledge of who the client
     is, forcing the client to reauthenticate with the server.

forget_openowners:
     The NFS server keeps a list of what files are currently opened and who
     they were opened by.  Clearing this list will force the client to reopen
     its files.

forget_locks:
     The NFS server keeps a list of what files are currently locked in the VFS.
     Clearing this list will force the client to reclaim its locks (files are
     unlocked through the VFS as they are cleared from this list).

forget_delegations:
     A delegation is used to assure the client that a file, or part of a file,
     has not changed since the delegation was awarded.  Clearing this list will
     force the client to reaquire its delegation before accessing the file
     again.

recall_delegations:
     Delegations can be recalled by the server when another client attempts to
     access a file.  This test will notify the client that its delegation has
     been revoked, forcing the client to reaquire the delegation before using
     the file again.


tools/nfs/inject_faults.sh script
=================================
This script has been created to ease the fault injection process.  This script
will detect the mounted debugfs directory and write to the files located there
based on the arguments passed by the user.  For example, running
`inject_faults.sh forget_locks 1` as root will instruct the server to forget
one lock.  Running `inject_faults forget_locks` will instruct the server to
forgetall locks.
