This is the latest version of my series to clean up locking - particularly of directories - in preparation for proposed patches which change how directory locking works across the VFS. I've included Jeff's patches to validate the dentry after getting a delegation. The second patch has been changed quite a bit to use nfsd_lookup_dentry(). I've left Jeff's From: line in place - let me know if you'd rather I change it. Setting of ACLs and security labels has been moved from nfs4 code to nfsd_setattr() which allows quite a lot of code cleanup. I think I've addressed all the concerns that have been raised, though maybe not in the way that was suggested. I've tested this with cthon tests over v2, v3, v4.0, v4.1, and xfstests on v3 and v4.1, and pynfs 4.0, 4.1. No problems appeared. Thanks, NeilBrown --- Jeff Layton (2): NFSD: drop fh argument from alloc_init_deleg NFSD: verify the opened dentry after setting a delegation NeilBrown (11): NFSD: introduce struct nfsd_attrs NFSD: set attributes when creating symlinks NFSD: add security label to struct nfsd_attrs NFSD: add posix ACLs to struct nfsd_attrs NFSD: change nfsd_create()/nfsd_symlink() to unlock directory before returning. NFSD: always drop directory lock in nfsd_unlink() NFSD: only call fh_unlock() once in nfsd_link() NFSD: reduce locking in nfsd_lookup() NFSD: use explicit lock/unlock for directory ops NFSD: use (un)lock_inode instead of fh_(un)lock for file operations NFSD: discard fh_locked flag and fh_lock/fh_unlock fs/nfsd/acl.h | 6 +- fs/nfsd/nfs2acl.c | 6 +- fs/nfsd/nfs3acl.c | 4 +- fs/nfsd/nfs3proc.c | 25 ++--- fs/nfsd/nfs4acl.c | 46 ++------- fs/nfsd/nfs4proc.c | 153 ++++++++++++----------------- fs/nfsd/nfs4state.c | 71 +++++++++++--- fs/nfsd/nfsfh.c | 22 ++++- fs/nfsd/nfsfh.h | 58 +---------- fs/nfsd/nfsproc.c | 19 ++-- fs/nfsd/vfs.c | 230 +++++++++++++++++++++----------------------- fs/nfsd/vfs.h | 31 ++++-- fs/nfsd/xdr4.h | 1 + 13 files changed, 314 insertions(+), 358 deletions(-) -- Signature