The following set of patches fix known issues with the 2.6.7 NFS client code, and significantly enhance the support for NFSv4.
VFS: Minimal fix to posix_same_owner() to only use the fl_owner_t field in all cases when the caller is not lockd
Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>
VFS: More extensive fix to locking code. Add file_lock_operations to deal with copy/release of private data in the file_lock->fl_u field. Add filesystem hooks for steal_locks(): changing the lockowner is hardly a supported concept in most file locking protocols.
Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>
NFSv4 server: Fix up nfs4state.c to support the file_lock_operations, and the lock_manager_operations.
Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>
NLM/lockd: Fix up lockd to make use of the new interface. In particular set up fl_compare_owner() methods for both client and server.
NLM/lockd: Make the client release all locks in a "steal_locks" situation.
NLM/lockd: Fix up copying/release of the file_lock->fl_u.nfs_fl private data.
Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>
NLM/lockd: set up a unique mapping between the fl_owner_t and a unique 32-bit "pid" on the client side. We can't use the real pid of the process/thread 'cos CLONE_FILES does not automatically imply CLONE_THREAD.
Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>
NLM/lockd: Move fl_insert, fl_remove, into struct file_lock_operations.
NLM/lockd: Move fl_notify, into struct lock_manager_operations.
Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>
NLM/lockd/NFSv3/CIFS: Make the filesystem responsible for calling posix_lock_file() if it needs to. This means it can be done under the correct atomicity locks.
Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>
All of the above.