|
@@ -52,7 +52,7 @@ static void cifs_set_ops(struct inode *inode, const bool is_dfs_referral)
|
|
|
|
|
|
|
|
|
/* check if server can support readpages */
|
|
|
- if (cifs_sb_tcon(cifs_sb)->ses->server->maxBuf <
|
|
|
+ if (cifs_sb_master_tcon(cifs_sb)->ses->server->maxBuf <
|
|
|
PAGE_CACHE_SIZE + MAX_CIFS_HDR_SIZE)
|
|
|
inode->i_data.a_ops = &cifs_addr_ops_smallbuf;
|
|
|
else
|
|
@@ -476,6 +476,8 @@ static void
|
|
|
cifs_all_info_to_fattr(struct cifs_fattr *fattr, FILE_ALL_INFO *info,
|
|
|
struct cifs_sb_info *cifs_sb, bool adjust_tz)
|
|
|
{
|
|
|
+ struct cifsTconInfo *tcon = cifs_sb_master_tcon(cifs_sb);
|
|
|
+
|
|
|
memset(fattr, 0, sizeof(*fattr));
|
|
|
fattr->cf_cifsattrs = le32_to_cpu(info->Attributes);
|
|
|
if (info->DeletePending)
|
|
@@ -490,8 +492,8 @@ cifs_all_info_to_fattr(struct cifs_fattr *fattr, FILE_ALL_INFO *info,
|
|
|
fattr->cf_mtime = cifs_NTtimeToUnix(info->LastWriteTime);
|
|
|
|
|
|
if (adjust_tz) {
|
|
|
- fattr->cf_ctime.tv_sec += cifs_sb_tcon(cifs_sb)->ses->server->timeAdj;
|
|
|
- fattr->cf_mtime.tv_sec += cifs_sb_tcon(cifs_sb)->ses->server->timeAdj;
|
|
|
+ fattr->cf_ctime.tv_sec += tcon->ses->server->timeAdj;
|
|
|
+ fattr->cf_mtime.tv_sec += tcon->ses->server->timeAdj;
|
|
|
}
|
|
|
|
|
|
fattr->cf_eof = le64_to_cpu(info->EndOfFile);
|
|
@@ -698,6 +700,7 @@ char *cifs_build_path_to_root(struct cifs_sb_info *cifs_sb)
|
|
|
int pplen = cifs_sb->prepathlen;
|
|
|
int dfsplen;
|
|
|
char *full_path = NULL;
|
|
|
+ struct cifsTconInfo *tcon = cifs_sb_master_tcon(cifs_sb);
|
|
|
|
|
|
/* if no prefix path, simply set path to the root of share to "" */
|
|
|
if (pplen == 0) {
|
|
@@ -707,8 +710,8 @@ char *cifs_build_path_to_root(struct cifs_sb_info *cifs_sb)
|
|
|
return full_path;
|
|
|
}
|
|
|
|
|
|
- if (cifs_sb_tcon(cifs_sb) && (cifs_sb_tcon(cifs_sb)->Flags & SMB_SHARE_IS_IN_DFS))
|
|
|
- dfsplen = strnlen(cifs_sb_tcon(cifs_sb)->treeName, MAX_TREE_SIZE + 1);
|
|
|
+ if (tcon->Flags & SMB_SHARE_IS_IN_DFS)
|
|
|
+ dfsplen = strnlen(tcon->treeName, MAX_TREE_SIZE + 1);
|
|
|
else
|
|
|
dfsplen = 0;
|
|
|
|
|
@@ -717,7 +720,7 @@ char *cifs_build_path_to_root(struct cifs_sb_info *cifs_sb)
|
|
|
return full_path;
|
|
|
|
|
|
if (dfsplen) {
|
|
|
- strncpy(full_path, cifs_sb_tcon(cifs_sb)->treeName, dfsplen);
|
|
|
+ strncpy(full_path, tcon->treeName, dfsplen);
|
|
|
/* switch slash direction in prepath depending on whether
|
|
|
* windows or posix style path names
|
|
|
*/
|
|
@@ -831,18 +834,18 @@ retry_iget5_locked:
|
|
|
struct inode *cifs_root_iget(struct super_block *sb, unsigned long ino)
|
|
|
{
|
|
|
int xid;
|
|
|
- struct cifs_sb_info *cifs_sb;
|
|
|
+ struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
|
|
|
struct inode *inode = NULL;
|
|
|
long rc;
|
|
|
char *full_path;
|
|
|
+ struct cifsTconInfo *tcon = cifs_sb_master_tcon(cifs_sb);
|
|
|
|
|
|
- cifs_sb = CIFS_SB(sb);
|
|
|
full_path = cifs_build_path_to_root(cifs_sb);
|
|
|
if (full_path == NULL)
|
|
|
return ERR_PTR(-ENOMEM);
|
|
|
|
|
|
xid = GetXid();
|
|
|
- if (cifs_sb_tcon(cifs_sb)->unix_ext)
|
|
|
+ if (tcon->unix_ext)
|
|
|
rc = cifs_get_inode_info_unix(&inode, full_path, sb, xid);
|
|
|
else
|
|
|
rc = cifs_get_inode_info(&inode, full_path, NULL, sb,
|
|
@@ -853,10 +856,10 @@ struct inode *cifs_root_iget(struct super_block *sb, unsigned long ino)
|
|
|
|
|
|
#ifdef CONFIG_CIFS_FSCACHE
|
|
|
/* populate tcon->resource_id */
|
|
|
- cifs_sb_tcon(cifs_sb)->resource_id = CIFS_I(inode)->uniqueid;
|
|
|
+ tcon->resource_id = CIFS_I(inode)->uniqueid;
|
|
|
#endif
|
|
|
|
|
|
- if (rc && cifs_sb_tcon(cifs_sb)->ipc) {
|
|
|
+ if (rc && tcon->ipc) {
|
|
|
cFYI(1, "ipc connection - fake read inode");
|
|
|
inode->i_mode |= S_IFDIR;
|
|
|
inode->i_nlink = 2;
|
|
@@ -1661,7 +1664,7 @@ int cifs_revalidate_dentry(struct dentry *dentry)
|
|
|
"jiffies %ld", full_path, inode, inode->i_count.counter,
|
|
|
dentry, dentry->d_time, jiffies);
|
|
|
|
|
|
- if (cifs_sb_tcon(CIFS_SB(sb))->unix_ext)
|
|
|
+ if (cifs_sb_master_tcon(CIFS_SB(sb))->unix_ext)
|
|
|
rc = cifs_get_inode_info_unix(&inode, full_path, sb, xid);
|
|
|
else
|
|
|
rc = cifs_get_inode_info(&inode, full_path, NULL, sb,
|
|
@@ -2087,7 +2090,7 @@ cifs_setattr(struct dentry *direntry, struct iattr *attrs)
|
|
|
{
|
|
|
struct inode *inode = direntry->d_inode;
|
|
|
struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
|
|
|
- struct cifsTconInfo *pTcon = cifs_sb_tcon(cifs_sb);
|
|
|
+ struct cifsTconInfo *pTcon = cifs_sb_master_tcon(cifs_sb);
|
|
|
|
|
|
if (pTcon->unix_ext)
|
|
|
return cifs_setattr_unix(direntry, attrs);
|