The following set of patches fix known issues with the 2.6.26-rc5 NFS client code, and significantly enhance the support for NFSv4.
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed, 11 Jun 2008 15:44:04 -0400
NFS: Protect inode->i_nlink updates using inode->i_lock
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed, 11 Jun 2008 12:21:19 -0400
NFS: Remove BKL requirement from attribute updates
The main problem is dealing with inode->i_size: we need to set the inode->i_lock on all attribute updates, and so vmtruncate won't cut it. Make an NFS-private version of vmtruncate that has the necessary locking semantics.
The result should be that the following inode attribute updates are protected by inode->i_lock nfsi->cache_validity nfsi->read_cache_jiffies nfsi->attrtimeo nfsi->attrtimeo_timestamp nfsi->change_attr nfsi->last_updated nfsi->cache_change_attribute nfsi->access_cache nfsi->access_cache_entry_lru nfsi->access_cache_inode_lru nfsi->acl_access nfsi->acl_default nfsi->nfs_page_tree nfsi->ncommit nfsi->npages nfsi->open_files nfsi->silly_list nfsi->acl nfsi->open_states inode->i_size inode->i_atime inode->i_mtime inode->i_ctime inode->i_nlink inode->i_uid inode->i_gid
The following is protected by dir->i_mutex nfsi->cookieverf
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed, 11 Jun 2008 13:26:14 -0400
NFS: Remove attribute update related BKL references
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed, 11 Jun 2008 15:44:18 -0400
NFS: Remove the BKL from the permission checking code
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed, 11 Jun 2008 13:26:16 -0400
NFS: Remove BKL usage from the write path
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed, 11 Jun 2008 13:26:23 -0400
NFS: Remove BKL usage from open()
All the NFSv4 stateful operations are already protected by other locks (in particular by the rpc_sequence locks.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed, 11 Jun 2008 15:50:50 -0400
NFS: Remove the BKL from the inode creation operations
nfs_instantiate() does not require the BKL, neither do the attribute updates or the RPC code.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed, 11 Jun 2008 15:52:40 -0400
NFS: Remove the BKL from nfs_link()
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed, 11 Jun 2008 15:44:20 -0400
NFS: Remove BKL from NFS lookup code
All dentry-related operations are already BKL-safe, since they are protected by the VFS locking. No extra locks should be needed in the NFS code.
In the case of nfs_revalidate_inode(), we're only doing an attribute update (protected by the inode->i_lock). In the case of nfs_lookup(), we're instantiating a new dentry, so there should be no contention possible until after we call d_materialise_unique.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed, 11 Jun 2008 16:09:59 -0400
NFS: Remove the BKL from the rename, rmdir and unlink operations
Attribute updates are safe, and dentry operations are protected using VFS level locks. Defer removing the BKL from sillyrename until a separate patch.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed, 11 Jun 2008 15:44:21 -0400
NFS: Remove BKL from the sillydelete operations
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed, 11 Jun 2008 15:44:22 -0400
NFS: Remove BKL from the symlink code
Page cache accesses are serialised using page locks, whereas attribute updates are serialised using inode->i_lock.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed, 11 Jun 2008 15:44:23 -0400
NFS: Remove BKL from the readdir code
Page accesses are serialised using the page locks, whereas all attribute updates are serialised using the inode->i_lock.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed, 11 Jun 2008 13:37:09 -0400
SUNRPC: Remove the BKL from the callback functions
Push it into those callback functions that actually need it.
Note that all the NFS operations use their own locking, so don't need the BKL. Ditto for the rpcbind client.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Wed, 11 Jun 2008 15:44:26 -0400
NFSv4: Remove BKL from the nfsv4 state recovery
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Name | Last modified | Size | Description | |
---|---|---|---|---|
Parent Directory | - | |||
linux-2.6.26-001-pro..> | 2008-06-12 19:41 | 1.3K | ||
linux-2.6.26-002-rem..> | 2008-06-12 19:41 | 5.4K | ||
linux-2.6.26-003-rem..> | 2008-06-12 19:41 | 1.9K | ||
linux-2.6.26-004-rem..> | 2008-06-12 19:41 | 1.0K | ||
linux-2.6.26-005-rem..> | 2008-06-12 19:41 | 682 | ||
linux-2.6.26-006-rem..> | 2008-06-12 19:41 | 2.2K | ||
linux-2.6.26-007-rem..> | 2008-06-12 19:41 | 1.6K | ||
linux-2.6.26-008-rem..> | 2008-06-12 19:41 | 815 | ||
linux-2.6.26-009-rem..> | 2008-06-12 19:41 | 2.3K | ||
linux-2.6.26-010-rem..> | 2008-06-12 19:41 | 2.6K | ||
linux-2.6.26-011-rem..> | 2008-06-12 19:41 | 1.3K | ||
linux-2.6.26-012-rem..> | 2008-06-12 19:41 | 1.2K | ||
linux-2.6.26-013-rem..> | 2008-06-12 19:41 | 1.0K | ||
linux-2.6.26-014-rem..> | 2008-06-12 19:41 | 4.3K | ||
linux-2.6.26-015-rem..> | 2008-06-12 19:41 | 898 | ||
series | 2008-06-12 19:41 | 705 | ||