diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-31 18:39:07 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-31 18:39:07 -0500 |
commit | 8a1f006ad302ea178aefb1f8c67e679c696289e9 (patch) | |
tree | 8ba312b39070556d2062a9f90b1a7fa394041d78 /fs/nfs/write.c | |
parent | 14864a52cd8189e8567df8351d9fc7e435133abd (diff) | |
parent | a1800acaf7d1c2bf6d68b9a8f4ab8560cc66555a (diff) |
Merge tag 'nfs-for-3.14-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
Pull NFS client bugfixes from Trond Myklebust:
"Highlights:
- Fix several races in nfs_revalidate_mapping
- NFSv4.1 slot leakage in the pNFS files driver
- Stable fix for a slot leak in nfs40_sequence_done
- Don't reject NFSv4 servers that support ACLs with only ALLOW aces"
* tag 'nfs-for-3.14-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
nfs: initialize the ACL support bits to zero.
NFSv4.1: Cleanup
NFSv4.1: Clean up nfs41_sequence_done
NFSv4: Fix a slot leak in nfs40_sequence_done
NFSv4.1 free slot before resending I/O to MDS
nfs: add memory barriers around NFS_INO_INVALID_DATA and NFS_INO_INVALIDATING
NFS: Fix races in nfs_revalidate_mapping
sunrpc: turn warn_gssd() log message into a dprintk()
NFS: fix the handling of NFS_INO_INVALID_DATA flag in nfs_revalidate_mapping
nfs: handle servers that support only ALLOW ACE type.
Diffstat (limited to 'fs/nfs/write.c')
-rw-r--r-- | fs/nfs/write.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c index a44a87268a6e..9a3b6a4cd6b9 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c | |||
@@ -909,9 +909,14 @@ bool nfs_ctx_key_to_expire(struct nfs_open_context *ctx) | |||
909 | */ | 909 | */ |
910 | static bool nfs_write_pageuptodate(struct page *page, struct inode *inode) | 910 | static bool nfs_write_pageuptodate(struct page *page, struct inode *inode) |
911 | { | 911 | { |
912 | struct nfs_inode *nfsi = NFS_I(inode); | ||
913 | |||
912 | if (nfs_have_delegated_attributes(inode)) | 914 | if (nfs_have_delegated_attributes(inode)) |
913 | goto out; | 915 | goto out; |
914 | if (NFS_I(inode)->cache_validity & (NFS_INO_INVALID_DATA|NFS_INO_REVAL_PAGECACHE)) | 916 | if (nfsi->cache_validity & (NFS_INO_INVALID_DATA|NFS_INO_REVAL_PAGECACHE)) |
917 | return false; | ||
918 | smp_rmb(); | ||
919 | if (test_bit(NFS_INO_INVALIDATING, &nfsi->flags)) | ||
915 | return false; | 920 | return false; |
916 | out: | 921 | out: |
917 | return PageUptodate(page) != 0; | 922 | return PageUptodate(page) != 0; |