Commit c6723628 authored by Pavel Shilovsky's avatar Pavel Shilovsky Committed by Steve French
Browse files

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: default avatarSuresh Jayaraman <sjayaraman@suse.de>
Signed-off-by: default avatarPavel Shilovsky <piastryyy@gmail.com>
Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent d3892294
Loading
Loading
Loading
Loading
+1 −2
Original line number Original line Diff line number Diff line
@@ -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 */
+1 −1
Original line number Original line Diff line number Diff line
@@ -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,
+4 −4
Original line number Original line Diff line number Diff line
@@ -146,7 +146,7 @@ client_can_cache:
		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,
		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)
	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 @@ reopen_success:
	     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);


+9 −7
Original line number Original line Diff line number Diff line
@@ -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)
	}
	}
}
}


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;