diff options
Diffstat (limited to 'fs/cifs/cifsfs.c')
-rw-r--r-- | fs/cifs/cifsfs.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index 416dc9fe8961..093beaa3900d 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c | |||
@@ -266,6 +266,7 @@ cifs_alloc_inode(struct super_block *sb) | |||
266 | cifs_inode->cifsAttrs = 0x20; /* default */ | 266 | cifs_inode->cifsAttrs = 0x20; /* default */ |
267 | atomic_set(&cifs_inode->inUse, 0); | 267 | atomic_set(&cifs_inode->inUse, 0); |
268 | cifs_inode->time = 0; | 268 | cifs_inode->time = 0; |
269 | cifs_inode->write_behind_rc = 0; | ||
269 | /* Until the file is open and we have gotten oplock | 270 | /* Until the file is open and we have gotten oplock |
270 | info back from the server, can not assume caching of | 271 | info back from the server, can not assume caching of |
271 | file data or metadata */ | 272 | file data or metadata */ |
@@ -852,7 +853,7 @@ static int cifs_oplock_thread(void *dummyarg) | |||
852 | struct cifsTconInfo *pTcon; | 853 | struct cifsTconInfo *pTcon; |
853 | struct inode *inode; | 854 | struct inode *inode; |
854 | __u16 netfid; | 855 | __u16 netfid; |
855 | int rc; | 856 | int rc, waitrc = 0; |
856 | 857 | ||
857 | set_freezable(); | 858 | set_freezable(); |
858 | do { | 859 | do { |
@@ -884,9 +885,11 @@ static int cifs_oplock_thread(void *dummyarg) | |||
884 | filemap_fdatawrite(inode->i_mapping); | 885 | filemap_fdatawrite(inode->i_mapping); |
885 | if (CIFS_I(inode)->clientCanCacheRead | 886 | if (CIFS_I(inode)->clientCanCacheRead |
886 | == 0) { | 887 | == 0) { |
887 | filemap_fdatawait(inode->i_mapping); | 888 | waitrc = filemap_fdatawait(inode->i_mapping); |
888 | invalidate_remote_inode(inode); | 889 | invalidate_remote_inode(inode); |
889 | } | 890 | } |
891 | if (rc == 0) | ||
892 | rc = waitrc; | ||
890 | } else | 893 | } else |
891 | rc = 0; | 894 | rc = 0; |
892 | /* mutex_unlock(&inode->i_mutex);*/ | 895 | /* mutex_unlock(&inode->i_mutex);*/ |