aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/nfs/inode.c21
-rw-r--r--include/linux/nfs_fs.h14
2 files changed, 7 insertions, 28 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index d722a0e84361..1d507a2a96d6 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -85,7 +85,6 @@ void nfs_clear_inode(struct inode *inode)
85 */ 85 */
86 BUG_ON(nfs_have_writebacks(inode)); 86 BUG_ON(nfs_have_writebacks(inode));
87 BUG_ON(!list_empty(&NFS_I(inode)->open_files)); 87 BUG_ON(!list_empty(&NFS_I(inode)->open_files));
88 BUG_ON(atomic_read(&NFS_I(inode)->data_updates) != 0);
89 nfs_zap_acl_cache(inode); 88 nfs_zap_acl_cache(inode);
90 nfs_access_zap_cache(inode); 89 nfs_access_zap_cache(inode);
91} 90}
@@ -757,16 +756,6 @@ out:
757} 756}
758 757
759/** 758/**
760 * nfs_begin_data_update
761 * @inode - pointer to inode
762 * Declare that a set of operations will update file data on the server
763 */
764void nfs_begin_data_update(struct inode *inode)
765{
766 atomic_inc(&NFS_I(inode)->data_updates);
767}
768
769/**
770 * nfs_end_data_update 759 * nfs_end_data_update
771 * @inode - pointer to inode 760 * @inode - pointer to inode
772 * Declare end of the operations that will update file data 761 * Declare end of the operations that will update file data
@@ -775,15 +764,12 @@ void nfs_begin_data_update(struct inode *inode)
775 */ 764 */
776void nfs_end_data_update(struct inode *inode) 765void nfs_end_data_update(struct inode *inode)
777{ 766{
778 struct nfs_inode *nfsi = NFS_I(inode);
779
780 /* Directories: invalidate page cache */ 767 /* Directories: invalidate page cache */
781 if (S_ISDIR(inode->i_mode)) { 768 if (S_ISDIR(inode->i_mode)) {
782 spin_lock(&inode->i_lock); 769 spin_lock(&inode->i_lock);
783 nfsi->cache_validity |= NFS_INO_INVALID_DATA; 770 NFS_I(inode)->cache_validity |= NFS_INO_INVALID_DATA;
784 spin_unlock(&inode->i_lock); 771 spin_unlock(&inode->i_lock);
785 } 772 }
786 atomic_dec(&nfsi->data_updates);
787} 773}
788 774
789static void nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr *fattr) 775static void nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr *fattr)
@@ -823,7 +809,6 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fat
823{ 809{
824 struct nfs_inode *nfsi = NFS_I(inode); 810 struct nfs_inode *nfsi = NFS_I(inode);
825 loff_t cur_size, new_isize; 811 loff_t cur_size, new_isize;
826 int data_unstable;
827 812
828 813
829 /* Has the inode gone and changed behind our back? */ 814 /* Has the inode gone and changed behind our back? */
@@ -832,9 +817,6 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fat
832 return -EIO; 817 return -EIO;
833 } 818 }
834 819
835 /* Are we in the process of updating data on the server? */
836 data_unstable = nfs_caches_unstable(inode);
837
838 /* Do atomic weak cache consistency updates */ 820 /* Do atomic weak cache consistency updates */
839 nfs_wcc_update_inode(inode, fattr); 821 nfs_wcc_update_inode(inode, fattr);
840 822
@@ -1162,7 +1144,6 @@ static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flag
1162 INIT_LIST_HEAD(&nfsi->access_cache_entry_lru); 1144 INIT_LIST_HEAD(&nfsi->access_cache_entry_lru);
1163 INIT_LIST_HEAD(&nfsi->access_cache_inode_lru); 1145 INIT_LIST_HEAD(&nfsi->access_cache_inode_lru);
1164 INIT_RADIX_TREE(&nfsi->nfs_page_tree, GFP_ATOMIC); 1146 INIT_RADIX_TREE(&nfsi->nfs_page_tree, GFP_ATOMIC);
1165 atomic_set(&nfsi->data_updates, 0);
1166 nfsi->ncommit = 0; 1147 nfsi->ncommit = 0;
1167 nfsi->npages = 0; 1148 nfsi->npages = 0;
1168 nfs4_init_once(nfsi); 1149 nfs4_init_once(nfsi);
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
index c947803a7ba4..1b4edc6f7fd7 100644
--- a/include/linux/nfs_fs.h
+++ b/include/linux/nfs_fs.h
@@ -136,11 +136,6 @@ struct nfs_inode {
136 * server. 136 * server.
137 */ 137 */
138 unsigned long cache_change_attribute; 138 unsigned long cache_change_attribute;
139 /*
140 * Counter indicating the number of outstanding requests that
141 * will cause a file data update.
142 */
143 atomic_t data_updates;
144 139
145 struct rb_root access_cache; 140 struct rb_root access_cache;
146 struct list_head access_cache_entry_lru; 141 struct list_head access_cache_entry_lru;
@@ -224,9 +219,13 @@ static inline struct nfs_inode *NFS_I(struct inode *inode)
224 219
225#define NFS_FILEID(inode) (NFS_I(inode)->fileid) 220#define NFS_FILEID(inode) (NFS_I(inode)->fileid)
226 221
227static inline int nfs_caches_unstable(struct inode *inode) 222/**
223 * nfs_begin_data_update
224 * @inode - pointer to inode
225 * Declare that a set of operations will update file data on the server
226 */
227static inline void nfs_begin_data_update(struct inode *inode)
228{ 228{
229 return atomic_read(&NFS_I(inode)->data_updates) != 0;
230} 229}
231 230
232static inline void nfs_mark_for_revalidate(struct inode *inode) 231static inline void nfs_mark_for_revalidate(struct inode *inode)
@@ -299,7 +298,6 @@ extern int nfs_setattr(struct dentry *, struct iattr *);
299extern void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr); 298extern void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr);
300extern void nfs_begin_attr_update(struct inode *); 299extern void nfs_begin_attr_update(struct inode *);
301extern void nfs_end_attr_update(struct inode *); 300extern void nfs_end_attr_update(struct inode *);
302extern void nfs_begin_data_update(struct inode *);
303extern void nfs_end_data_update(struct inode *); 301extern void nfs_end_data_update(struct inode *);
304extern struct nfs_open_context *get_nfs_open_context(struct nfs_open_context *ctx); 302extern struct nfs_open_context *get_nfs_open_context(struct nfs_open_context *ctx);
305extern void put_nfs_open_context(struct nfs_open_context *ctx); 303extern void put_nfs_open_context(struct nfs_open_context *ctx);