提交 c6723628 编写于 作者: P Pavel Shilovsky 提交者: Steve French

cifs: make cifs_set_oplock_level() take a cifsInodeInfo pointer

All the callers already have a pointer to struct cifsInodeInfo. Use it.
Signed-off-by: NSuresh Jayaraman <sjayaraman@suse.de>
Signed-off-by: NPavel Shilovsky <piastryyy@gmail.com>
Signed-off-by: NSteve French <sfrench@us.ibm.com>
上级 d3892294
...@@ -321,8 +321,7 @@ cifs_alloc_inode(struct super_block *sb) ...@@ -321,8 +321,7 @@ cifs_alloc_inode(struct super_block *sb)
/* Until the file is open and we have gotten oplock /* Until the file is open and we have gotten oplock
info back from the server, can not assume caching of info back from the server, can not assume caching of
file data or metadata */ file data or metadata */
cifs_inode->clientCanCacheRead = false; cifs_set_oplock_level(cifs_inode, 0);
cifs_inode->clientCanCacheAll = false;
cifs_inode->delete_pending = false; cifs_inode->delete_pending = false;
cifs_inode->invalid_mapping = false; cifs_inode->invalid_mapping = false;
cifs_inode->vfs_inode.i_blkbits = 14; /* 2**14 = CIFS_MAX_MSGSIZE */ cifs_inode->vfs_inode.i_blkbits = 14; /* 2**14 = CIFS_MAX_MSGSIZE */
......
...@@ -104,7 +104,7 @@ extern struct timespec cifs_NTtimeToUnix(__le64 utc_nanoseconds_since_1601); ...@@ -104,7 +104,7 @@ extern struct timespec cifs_NTtimeToUnix(__le64 utc_nanoseconds_since_1601);
extern u64 cifs_UnixTimeToNT(struct timespec); extern u64 cifs_UnixTimeToNT(struct timespec);
extern struct timespec cnvrtDosUnixTm(__le16 le_date, __le16 le_time, extern struct timespec cnvrtDosUnixTm(__le16 le_date, __le16 le_time,
int offset); int offset);
extern void cifs_set_oplock_level(struct inode *inode, __u32 oplock); extern void cifs_set_oplock_level(struct cifsInodeInfo *cinode, __u32 oplock);
extern struct cifsFileInfo *cifs_new_fileinfo(__u16 fileHandle, extern struct cifsFileInfo *cifs_new_fileinfo(__u16 fileHandle,
struct file *file, struct tcon_link *tlink, struct file *file, struct tcon_link *tlink,
......
...@@ -146,7 +146,7 @@ static inline int cifs_open_inode_helper(struct inode *inode, ...@@ -146,7 +146,7 @@ static inline int cifs_open_inode_helper(struct inode *inode,
rc = cifs_get_inode_info(&inode, full_path, buf, inode->i_sb, rc = cifs_get_inode_info(&inode, full_path, buf, inode->i_sb,
xid, NULL); xid, NULL);
cifs_set_oplock_level(inode, oplock); cifs_set_oplock_level(pCifsInode, oplock);
return rc; return rc;
} }
...@@ -248,7 +248,7 @@ cifs_new_fileinfo(__u16 fileHandle, struct file *file, ...@@ -248,7 +248,7 @@ cifs_new_fileinfo(__u16 fileHandle, struct file *file,
list_add_tail(&pCifsFile->flist, &pCifsInode->openFileList); list_add_tail(&pCifsFile->flist, &pCifsInode->openFileList);
spin_unlock(&cifs_file_list_lock); spin_unlock(&cifs_file_list_lock);
cifs_set_oplock_level(inode, oplock); cifs_set_oplock_level(pCifsInode, oplock);
file->private_data = pCifsFile; file->private_data = pCifsFile;
return pCifsFile; return pCifsFile;
...@@ -279,7 +279,7 @@ void cifsFileInfo_put(struct cifsFileInfo *cifs_file) ...@@ -279,7 +279,7 @@ void cifsFileInfo_put(struct cifsFileInfo *cifs_file)
if (list_empty(&cifsi->openFileList)) { if (list_empty(&cifsi->openFileList)) {
cFYI(1, "closing last open instance for inode %p", cFYI(1, "closing last open instance for inode %p",
cifs_file->dentry->d_inode); cifs_file->dentry->d_inode);
cifs_set_oplock_level(inode, 0); cifs_set_oplock_level(cifsi, 0);
} }
spin_unlock(&cifs_file_list_lock); spin_unlock(&cifs_file_list_lock);
...@@ -611,7 +611,7 @@ static int cifs_reopen_file(struct cifsFileInfo *pCifsFile, bool can_flush) ...@@ -611,7 +611,7 @@ static int cifs_reopen_file(struct cifsFileInfo *pCifsFile, bool can_flush)
we can not go to the server to get the new inod we can not go to the server to get the new inod
info */ info */
cifs_set_oplock_level(inode, oplock); cifs_set_oplock_level(pCifsInode, oplock);
cifs_relock_file(pCifsFile); cifs_relock_file(pCifsFile);
......
...@@ -570,7 +570,7 @@ is_valid_oplock_break(struct smb_hdr *buf, struct TCP_Server_Info *srv) ...@@ -570,7 +570,7 @@ is_valid_oplock_break(struct smb_hdr *buf, struct TCP_Server_Info *srv)
cFYI(1, "file id match, oplock break"); cFYI(1, "file id match, oplock break");
pCifsInode = CIFS_I(netfile->dentry->d_inode); pCifsInode = CIFS_I(netfile->dentry->d_inode);
cifs_set_oplock_level(netfile->dentry->d_inode, cifs_set_oplock_level(pCifsInode,
pSMB->OplockLevel); pSMB->OplockLevel);
/* /*
* cifs_oplock_break_put() can't be called * cifs_oplock_break_put() can't be called
...@@ -722,18 +722,20 @@ cifs_autodisable_serverino(struct cifs_sb_info *cifs_sb) ...@@ -722,18 +722,20 @@ cifs_autodisable_serverino(struct cifs_sb_info *cifs_sb)
} }
} }
void cifs_set_oplock_level(struct inode *inode, __u32 oplock) void cifs_set_oplock_level(struct cifsInodeInfo *cinode, __u32 oplock)
{ {
struct cifsInodeInfo *cinode = CIFS_I(inode); oplock &= 0xF;
if ((oplock & 0xF) == OPLOCK_EXCLUSIVE) { if (oplock == OPLOCK_EXCLUSIVE) {
cinode->clientCanCacheAll = true; cinode->clientCanCacheAll = true;
cinode->clientCanCacheRead = true; cinode->clientCanCacheRead = true;
cFYI(1, "Exclusive Oplock granted on inode %p", inode); cFYI(1, "Exclusive Oplock granted on inode %p",
} else if ((oplock & 0xF) == OPLOCK_READ) { &cinode->vfs_inode);
} else if (oplock == OPLOCK_READ) {
cinode->clientCanCacheAll = false; cinode->clientCanCacheAll = false;
cinode->clientCanCacheRead = true; cinode->clientCanCacheRead = true;
cFYI(1, "Level II Oplock granted on inode %p", inode); cFYI(1, "Level II Oplock granted on inode %p",
&cinode->vfs_inode);
} else { } else {
cinode->clientCanCacheAll = false; cinode->clientCanCacheAll = false;
cinode->clientCanCacheRead = false; cinode->clientCanCacheRead = false;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册