Commit 22435dc5 authored by Steve French's avatar Steve French Committed by Steve French

fix remoting caching part 2

parent 97ec921f
......@@ -409,10 +409,12 @@ cifs_read_wrapper(struct file * file, char *read_data, size_t read_size,
else if(file->f_dentry->d_inode == NULL)
return -EIO;
if(CIFS_I(file->f_dentry->d_inode)->clientCanCacheRead)
if(CIFS_I(file->f_dentry->d_inode)->clientCanCacheRead) {
return generic_file_read(file,read_data,read_size,poffset);
else
return cifs_read(file,read_data,read_size,poffset);
} else {
invalidate_remote_inode(file->f_dentry->d_inode);
return generic_file_read(file,read_data,read_size,poffset);
}
}
static ssize_t
......@@ -430,18 +432,17 @@ cifs_write_wrapper(struct file * file, const char *write_data,
/* check whether we can cache writes locally */
/* if not then check whether we can use the page cache at all */
if(CIFS_I(file->f_dentry->d_inode)->clientCanCacheAll)
if(CIFS_I(file->f_dentry->d_inode)->clientCanCacheAll) {
return generic_file_write(file,write_data, write_size,poffset);
else if(CIFS_I(file->f_dentry->d_inode)->clientCanCacheRead) {
} else {
if(CIFS_I(file->f_dentry->d_inode)->clientCanCacheRead) {
/* no need to invalidate the local copy */
} else
invalidate_remote_inode(file->f_dentry->d_inode);
written = generic_file_write(file,write_data, write_size,poffset);
/* since we can not cache writes, need to sync the data */
if(file->f_dentry->d_inode->i_mapping == NULL)
return -EIO;
filemap_fdatawrite(file->f_dentry->d_inode->i_mapping);
return written;
} else {
return cifs_write(file,write_data,write_size,poffset);
}
}
......
......@@ -146,7 +146,7 @@ tconInfoFree(struct cifsTconInfo *buf_to_free)
struct smb_hdr *
cifs_buf_get(void)
{
struct smb_hdr *ret_buf;
struct smb_hdr *ret_buf = 0;
/* We could use negotiated size instead of max_msgsize -
but it may be more efficient to always alloc same size
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment