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

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

cifs: add function to get a tcon from cifs_sb



When we convert cifs to do multiple sessions per mount, we'll need more
than one tcon per superblock. At that point "cifs_sb->tcon" will make
no sense. Add a new accessor function that gets a tcon given a cifs_sb.
For now, it just returns cifs_sb->tcon. Later it'll do more.

Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent ba00ba64
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -316,7 +316,7 @@ cifs_dfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd)
	nd->path.dentry = dget(dentry);
	nd->path.dentry = dget(dentry);


	cifs_sb = CIFS_SB(dentry->d_inode->i_sb);
	cifs_sb = CIFS_SB(dentry->d_inode->i_sb);
	ses = cifs_sb->tcon->ses;
	ses = cifs_sb_tcon(cifs_sb)->ses;


	if (!ses) {
	if (!ses) {
		rc = -EINVAL;
		rc = -EINVAL;
+8 −8
Original line number Original line Diff line number Diff line
@@ -559,7 +559,7 @@ static struct cifs_ntsd *get_cifs_acl_by_fid(struct cifs_sb_info *cifs_sb,
	int xid, rc;
	int xid, rc;


	xid = GetXid();
	xid = GetXid();
	rc = CIFSSMBGetCIFSACL(xid, cifs_sb->tcon, fid, &pntsd, pacllen);
	rc = CIFSSMBGetCIFSACL(xid, cifs_sb_tcon(cifs_sb), fid, &pntsd, pacllen);
	FreeXid(xid);
	FreeXid(xid);




@@ -577,7 +577,7 @@ static struct cifs_ntsd *get_cifs_acl_by_path(struct cifs_sb_info *cifs_sb,


	xid = GetXid();
	xid = GetXid();


	rc = CIFSSMBOpen(xid, cifs_sb->tcon, path, FILE_OPEN, READ_CONTROL, 0,
	rc = CIFSSMBOpen(xid, cifs_sb_tcon(cifs_sb), path, FILE_OPEN, READ_CONTROL, 0,
			 &fid, &oplock, NULL, cifs_sb->local_nls,
			 &fid, &oplock, NULL, cifs_sb->local_nls,
			 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
			 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
	if (rc) {
	if (rc) {
@@ -585,10 +585,10 @@ static struct cifs_ntsd *get_cifs_acl_by_path(struct cifs_sb_info *cifs_sb,
		goto out;
		goto out;
	}
	}


	rc = CIFSSMBGetCIFSACL(xid, cifs_sb->tcon, fid, &pntsd, pacllen);
	rc = CIFSSMBGetCIFSACL(xid, cifs_sb_tcon(cifs_sb), fid, &pntsd, pacllen);
	cFYI(1, "GetCIFSACL rc = %d ACL len %d", rc, *pacllen);
	cFYI(1, "GetCIFSACL rc = %d ACL len %d", rc, *pacllen);


	CIFSSMBClose(xid, cifs_sb->tcon, fid);
	CIFSSMBClose(xid, cifs_sb_tcon(cifs_sb), fid);
 out:
 out:
	FreeXid(xid);
	FreeXid(xid);
	return pntsd;
	return pntsd;
@@ -618,7 +618,7 @@ static int set_cifs_acl_by_fid(struct cifs_sb_info *cifs_sb, __u16 fid,
	int xid, rc;
	int xid, rc;


	xid = GetXid();
	xid = GetXid();
	rc = CIFSSMBSetCIFSACL(xid, cifs_sb->tcon, fid, pnntsd, acllen);
	rc = CIFSSMBSetCIFSACL(xid, cifs_sb_tcon(cifs_sb), fid, pnntsd, acllen);
	FreeXid(xid);
	FreeXid(xid);


	cFYI(DBG2, "SetCIFSACL rc = %d", rc);
	cFYI(DBG2, "SetCIFSACL rc = %d", rc);
@@ -634,7 +634,7 @@ static int set_cifs_acl_by_path(struct cifs_sb_info *cifs_sb, const char *path,


	xid = GetXid();
	xid = GetXid();


	rc = CIFSSMBOpen(xid, cifs_sb->tcon, path, FILE_OPEN, WRITE_DAC, 0,
	rc = CIFSSMBOpen(xid, cifs_sb_tcon(cifs_sb), path, FILE_OPEN, WRITE_DAC, 0,
			 &fid, &oplock, NULL, cifs_sb->local_nls,
			 &fid, &oplock, NULL, cifs_sb->local_nls,
			 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
			 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
	if (rc) {
	if (rc) {
@@ -642,10 +642,10 @@ static int set_cifs_acl_by_path(struct cifs_sb_info *cifs_sb, const char *path,
		goto out;
		goto out;
	}
	}


	rc = CIFSSMBSetCIFSACL(xid, cifs_sb->tcon, fid, pnntsd, acllen);
	rc = CIFSSMBSetCIFSACL(xid, cifs_sb_tcon(cifs_sb), fid, pnntsd, acllen);
	cFYI(DBG2, "SetCIFSACL rc = %d", rc);
	cFYI(DBG2, "SetCIFSACL rc = %d", rc);


	CIFSSMBClose(xid, cifs_sb->tcon, fid);
	CIFSSMBClose(xid, cifs_sb_tcon(cifs_sb), fid);
 out:
 out:
	FreeXid(xid);
	FreeXid(xid);
	return rc;
	return rc;
+3 −8
Original line number Original line Diff line number Diff line
@@ -137,9 +137,6 @@ cifs_read_super(struct super_block *sb, void *data,
	sb->s_magic = CIFS_MAGIC_NUMBER;
	sb->s_magic = CIFS_MAGIC_NUMBER;
	sb->s_op = &cifs_super_ops;
	sb->s_op = &cifs_super_ops;
	sb->s_bdi = &cifs_sb->bdi;
	sb->s_bdi = &cifs_sb->bdi;
/*	if (cifs_sb->tcon->ses->server->maxBuf > MAX_CIFS_HDR_SIZE + 512)
	    sb->s_blocksize =
		cifs_sb->tcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE; */
	sb->s_blocksize = CIFS_MAX_MSGSIZE;
	sb->s_blocksize = CIFS_MAX_MSGSIZE;
	sb->s_blocksize_bits = 14;	/* default 2**14 = CIFS_MAX_MSGSIZE */
	sb->s_blocksize_bits = 14;	/* default 2**14 = CIFS_MAX_MSGSIZE */
	inode = cifs_root_iget(sb, ROOT_I);
	inode = cifs_root_iget(sb, ROOT_I);
@@ -225,7 +222,7 @@ cifs_statfs(struct dentry *dentry, struct kstatfs *buf)
{
{
	struct super_block *sb = dentry->d_sb;
	struct super_block *sb = dentry->d_sb;
	struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
	struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
	struct cifsTconInfo *tcon = cifs_sb->tcon;
	struct cifsTconInfo *tcon = cifs_sb_tcon(cifs_sb);
	int rc = -EOPNOTSUPP;
	int rc = -EOPNOTSUPP;
	int xid;
	int xid;


@@ -367,7 +364,7 @@ static int
cifs_show_options(struct seq_file *s, struct vfsmount *m)
cifs_show_options(struct seq_file *s, struct vfsmount *m)
{
{
	struct cifs_sb_info *cifs_sb = CIFS_SB(m->mnt_sb);
	struct cifs_sb_info *cifs_sb = CIFS_SB(m->mnt_sb);
	struct cifsTconInfo *tcon = cifs_sb->tcon;
	struct cifsTconInfo *tcon = cifs_sb_tcon(cifs_sb);
	struct sockaddr *srcaddr;
	struct sockaddr *srcaddr;
	srcaddr = (struct sockaddr *)&tcon->ses->server->srcaddr;
	srcaddr = (struct sockaddr *)&tcon->ses->server->srcaddr;


@@ -458,9 +455,7 @@ static void cifs_umount_begin(struct super_block *sb)
	if (cifs_sb == NULL)
	if (cifs_sb == NULL)
		return;
		return;


	tcon = cifs_sb->tcon;
	tcon = cifs_sb_tcon(cifs_sb);
	if (tcon == NULL)
		return;


	read_lock(&cifs_tcp_ses_lock);
	read_lock(&cifs_tcp_ses_lock);
	if ((tcon->tc_count > 1) || (tcon->tidStatus == CifsExiting)) {
	if ((tcon->tc_count > 1) || (tcon->tidStatus == CifsExiting)) {
+6 −0
Original line number Original line Diff line number Diff line
@@ -413,6 +413,12 @@ CIFS_SB(struct super_block *sb)
	return sb->s_fs_info;
	return sb->s_fs_info;
}
}


static inline struct cifsTconInfo *
cifs_sb_tcon(struct cifs_sb_info *cifs_sb)
{
	return cifs_sb->tcon;
}

static inline char CIFS_DIR_SEP(const struct cifs_sb_info *cifs_sb)
static inline char CIFS_DIR_SEP(const struct cifs_sb_info *cifs_sb)
{
{
	if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS)
	if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS)
+2 −2
Original line number Original line Diff line number Diff line
@@ -3026,8 +3026,8 @@ cifs_umount(struct super_block *sb, struct cifs_sb_info *cifs_sb)
	int rc = 0;
	int rc = 0;
	char *tmp;
	char *tmp;


	if (cifs_sb->tcon)
	if (cifs_sb_tcon(cifs_sb))
		cifs_put_tcon(cifs_sb->tcon);
		cifs_put_tcon(cifs_sb_tcon(cifs_sb));


	cifs_sb->tcon = NULL;
	cifs_sb->tcon = NULL;
	tmp = cifs_sb->prepath;
	tmp = cifs_sb->prepath;
Loading