diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-10 18:13:13 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-10 18:13:13 -0500 |
commit | e20db597b6264de55ea6636fc79b1e4aaa89d129 (patch) | |
tree | fa650cb9cfad4b22598ae9867ca92baf57491a9d /fs/nfs/inode.c | |
parent | 3a5dc1fafb016560315fe45bb4ef8bde259dd1bc (diff) | |
parent | 388f0c776781fe64ce951701bfe712b2182a31f2 (diff) |
Merge tag 'nfs-for-3.19-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
Pull NFS client updates from Trond Myklebust:
"Highlights include:
Features:
- NFSv4.2 client support for hole punching and preallocation.
- Further RPC/RDMA client improvements.
- Add more RPC transport debugging tracepoints.
- Add RPC debugging tools in debugfs.
Bugfixes:
- Stable fix for layoutget error handling
- Fix a change in COMMIT behaviour resulting from the recent io code
updates"
* tag 'nfs-for-3.19-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (28 commits)
sunrpc: add a debugfs rpc_xprt directory with an info file in it
sunrpc: add debugfs file for displaying client rpc_task queue
nfs: Add DEALLOCATE support
nfs: Add ALLOCATE support
NFS: Clean up nfs4_init_callback()
NFS: SETCLIENTID XDR buffer sizes are incorrect
SUNRPC: serialize iostats updates
xprtrdma: Display async errors
xprtrdma: Enable pad optimization
xprtrdma: Re-write rpcrdma_flush_cqs()
xprtrdma: Refactor tasklet scheduling
xprtrdma: unmap all FMRs during transport disconnect
xprtrdma: Cap req_cqinit
xprtrdma: Return an errno from rpcrdma_register_external()
nfs: define nfs_inc_fscache_stats and using it as possible
nfs: replace nfs_add_stats with nfs_inc_stats when add one
NFS: Deletion of unnecessary checks before the function call "nfs_put_client"
sunrpc: eliminate RPC_TRACEPOINTS
sunrpc: eliminate RPC_DEBUG
lockd: eliminate LOCKD_DEBUG
...
Diffstat (limited to 'fs/nfs/inode.c')
-rw-r--r-- | fs/nfs/inode.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 00689a8a85e4..4bffe637ea32 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c | |||
@@ -192,6 +192,7 @@ void nfs_zap_caches(struct inode *inode) | |||
192 | nfs_zap_caches_locked(inode); | 192 | nfs_zap_caches_locked(inode); |
193 | spin_unlock(&inode->i_lock); | 193 | spin_unlock(&inode->i_lock); |
194 | } | 194 | } |
195 | EXPORT_SYMBOL_GPL(nfs_zap_caches); | ||
195 | 196 | ||
196 | void nfs_zap_mapping(struct inode *inode, struct address_space *mapping) | 197 | void nfs_zap_mapping(struct inode *inode, struct address_space *mapping) |
197 | { | 198 | { |
@@ -1149,7 +1150,7 @@ static unsigned long nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr | |||
1149 | if ((fattr->valid & NFS_ATTR_FATTR_PRESIZE) | 1150 | if ((fattr->valid & NFS_ATTR_FATTR_PRESIZE) |
1150 | && (fattr->valid & NFS_ATTR_FATTR_SIZE) | 1151 | && (fattr->valid & NFS_ATTR_FATTR_SIZE) |
1151 | && i_size_read(inode) == nfs_size_to_loff_t(fattr->pre_size) | 1152 | && i_size_read(inode) == nfs_size_to_loff_t(fattr->pre_size) |
1152 | && nfsi->npages == 0) { | 1153 | && nfsi->nrequests == 0) { |
1153 | i_size_write(inode, nfs_size_to_loff_t(fattr->size)); | 1154 | i_size_write(inode, nfs_size_to_loff_t(fattr->size)); |
1154 | ret |= NFS_INO_INVALID_ATTR; | 1155 | ret |= NFS_INO_INVALID_ATTR; |
1155 | } | 1156 | } |
@@ -1192,7 +1193,7 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fat | |||
1192 | if (fattr->valid & NFS_ATTR_FATTR_SIZE) { | 1193 | if (fattr->valid & NFS_ATTR_FATTR_SIZE) { |
1193 | cur_size = i_size_read(inode); | 1194 | cur_size = i_size_read(inode); |
1194 | new_isize = nfs_size_to_loff_t(fattr->size); | 1195 | new_isize = nfs_size_to_loff_t(fattr->size); |
1195 | if (cur_size != new_isize && nfsi->npages == 0) | 1196 | if (cur_size != new_isize && nfsi->nrequests == 0) |
1196 | invalid |= NFS_INO_INVALID_ATTR|NFS_INO_REVAL_PAGECACHE; | 1197 | invalid |= NFS_INO_INVALID_ATTR|NFS_INO_REVAL_PAGECACHE; |
1197 | } | 1198 | } |
1198 | 1199 | ||
@@ -1619,7 +1620,7 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) | |||
1619 | if (new_isize != cur_isize) { | 1620 | if (new_isize != cur_isize) { |
1620 | /* Do we perhaps have any outstanding writes, or has | 1621 | /* Do we perhaps have any outstanding writes, or has |
1621 | * the file grown beyond our last write? */ | 1622 | * the file grown beyond our last write? */ |
1622 | if ((nfsi->npages == 0) || new_isize > cur_isize) { | 1623 | if ((nfsi->nrequests == 0) || new_isize > cur_isize) { |
1623 | i_size_write(inode, new_isize); | 1624 | i_size_write(inode, new_isize); |
1624 | invalid |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA; | 1625 | invalid |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA; |
1625 | invalid &= ~NFS_INO_REVAL_PAGECACHE; | 1626 | invalid &= ~NFS_INO_REVAL_PAGECACHE; |
@@ -1784,7 +1785,7 @@ static void init_once(void *foo) | |||
1784 | INIT_LIST_HEAD(&nfsi->access_cache_entry_lru); | 1785 | INIT_LIST_HEAD(&nfsi->access_cache_entry_lru); |
1785 | INIT_LIST_HEAD(&nfsi->access_cache_inode_lru); | 1786 | INIT_LIST_HEAD(&nfsi->access_cache_inode_lru); |
1786 | INIT_LIST_HEAD(&nfsi->commit_info.list); | 1787 | INIT_LIST_HEAD(&nfsi->commit_info.list); |
1787 | nfsi->npages = 0; | 1788 | nfsi->nrequests = 0; |
1788 | nfsi->commit_info.ncommit = 0; | 1789 | nfsi->commit_info.ncommit = 0; |
1789 | atomic_set(&nfsi->commit_info.rpcs_out, 0); | 1790 | atomic_set(&nfsi->commit_info.rpcs_out, 0); |
1790 | atomic_set(&nfsi->silly_count, 1); | 1791 | atomic_set(&nfsi->silly_count, 1); |