Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit abfe1eed authored by Jeff Layton's avatar Jeff Layton Committed by Steve French
Browse files

cifs: eliminate the inode argument from cifs_new_fileinfo



It already takes a file pointer. The inode associated with that had damn
well better be the same one we're passing in anyway. Thus, there's no
need for a separate argument here.

Also, get rid of the bogus check for a null pCifsInode pointer. The
CIFS_I macro uses container_of(), and that will virtually never return a
NULL pointer anyway.

Finally, move the setting of the canCache* flags outside of the lock.
Other places in the code don't hold that lock when setting it, so I
assume it's not really needed here either.

Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
Reviewed-by: default avatarSuresh Jayaraman <sjayaraman@suse.de>
Acked-by: default avatarDave Kleikamp <shaggy@linux.vnet.ibm.com>
Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent f6a53460
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -105,8 +105,7 @@ extern u64 cifs_UnixTimeToNT(struct timespec);
extern struct timespec cnvrtDosUnixTm(__le16 le_date, __le16 le_time,
				      int offset);

extern struct cifsFileInfo *cifs_new_fileinfo(struct inode *newinode,
				__u16 fileHandle, struct file *file,
extern struct cifsFileInfo *cifs_new_fileinfo(__u16 fileHandle, struct file *file,
				struct tcon_link *tlink, __u32 oplock);
extern int cifs_posix_open(char *full_path, struct inode **pinode,
				struct super_block *sb,
+18 −22
Original line number Diff line number Diff line
@@ -131,12 +131,13 @@ cifs_bp_rename_retry:
}

struct cifsFileInfo *
cifs_new_fileinfo(struct inode *newinode, __u16 fileHandle, struct file *file,
cifs_new_fileinfo(__u16 fileHandle, struct file *file,
		  struct tcon_link *tlink, __u32 oplock)
{
	struct dentry *dentry = file->f_path.dentry;
	struct inode *inode = dentry->d_inode;
	struct cifsInodeInfo *pCifsInode = CIFS_I(inode);
	struct cifsFileInfo *pCifsFile;
	struct cifsInodeInfo *pCifsInode;

	pCifsFile = kzalloc(sizeof(struct cifsFileInfo), GFP_KERNEL);
	if (pCifsFile == NULL)
@@ -158,23 +159,19 @@ cifs_new_fileinfo(struct inode *newinode, __u16 fileHandle, struct file *file,

	write_lock(&GlobalSMBSeslock);
	list_add(&pCifsFile->tlist, &(tlink_tcon(tlink)->openFileList));
	pCifsInode = CIFS_I(newinode);
	if (pCifsInode) {
	/* if readable file instance put first in list*/
	if (file->f_mode & FMODE_READ)
		list_add(&pCifsFile->flist, &pCifsInode->openFileList);
	else
			list_add_tail(&pCifsFile->flist,
				      &pCifsInode->openFileList);
		list_add_tail(&pCifsFile->flist, &pCifsInode->openFileList);
	write_unlock(&GlobalSMBSeslock);

	if ((oplock & 0xF) == OPLOCK_EXCLUSIVE) {
		pCifsInode->clientCanCacheAll = true;
		pCifsInode->clientCanCacheRead = true;
			cFYI(1, "Exclusive Oplock inode %p", newinode);
		cFYI(1, "Exclusive Oplock inode %p", inode);
	} else if ((oplock & 0xF) == OPLOCK_READ)
		pCifsInode->clientCanCacheRead = true;
	}
	write_unlock(&GlobalSMBSeslock);

	file->private_data = pCifsFile;

@@ -395,8 +392,7 @@ cifs_create_set_dentry:
			goto cifs_create_out;
		}

		pfile_info = cifs_new_fileinfo(newinode, fileHandle, filp,
						tlink, oplock);
		pfile_info = cifs_new_fileinfo(fileHandle, filp, tlink, oplock);
		if (pfile_info == NULL) {
			fput(filp);
			CIFSSMBClose(xid, tcon, fileHandle);
@@ -669,8 +665,8 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
				goto lookup_out;
			}

			cfile = cifs_new_fileinfo(newInode, fileHandle, filp,
						  tlink, oplock);
			cfile = cifs_new_fileinfo(fileHandle, filp, tlink,
						  oplock);
			if (cfile == NULL) {
				fput(filp);
				CIFSSMBClose(xid, pTcon, fileHandle);
+3 −3
Original line number Diff line number Diff line
@@ -272,8 +272,8 @@ int cifs_open(struct inode *inode, struct file *file)
		if (rc == 0) {
			cFYI(1, "posix open succeeded");

			pCifsFile = cifs_new_fileinfo(inode, netfid, file,
							tlink, oplock);
			pCifsFile = cifs_new_fileinfo(netfid, file, tlink,
						      oplock);
			if (pCifsFile == NULL) {
				CIFSSMBClose(xid, tcon, netfid);
				rc = -ENOMEM;
@@ -365,7 +365,7 @@ int cifs_open(struct inode *inode, struct file *file)
	if (rc != 0)
		goto out;

	pCifsFile = cifs_new_fileinfo(inode, netfid, file, tlink, oplock);
	pCifsFile = cifs_new_fileinfo(netfid, file, tlink, oplock);
	if (pCifsFile == NULL) {
		rc = -ENOMEM;
		goto out;