Commit 6e69f5a2 authored by Pavel Shilovsky's avatar Pavel Shilovsky

Update 3.1 sources from stable (v3.1.1)

parent 5a41aa04
...@@ -2812,10 +2812,10 @@ void cifs_setup_cifs_sb(struct smb_vol *pvolume_info, ...@@ -2812,10 +2812,10 @@ void cifs_setup_cifs_sb(struct smb_vol *pvolume_info,
/* /*
* When the server doesn't allow large posix writes, only allow a wsize of * When the server doesn't allow large posix writes, only allow a wsize of
* 128k minus the size of the WRITE_AND_X header. That allows for a write up * 2^17-1 minus the size of the WRITE_AND_X header. That allows for a write up
* to the maximum size described by RFC1002. * to the maximum size described by RFC1002.
*/ */
#define CIFS_MAX_RFC1002_WSIZE (128 * 1024 - sizeof(WRITE_REQ) + 4) #define CIFS_MAX_RFC1002_WSIZE ((1<<17) - 1 - sizeof(WRITE_REQ) + 4)
/* /*
* The default wsize is 1M. find_get_pages seems to return a maximum of 256 * The default wsize is 1M. find_get_pages seems to return a maximum of 256
......
...@@ -562,7 +562,16 @@ int cifs_get_file_info(struct file *filp) ...@@ -562,7 +562,16 @@ int cifs_get_file_info(struct file *filp)
xid = GetXid(); xid = GetXid();
rc = CIFSSMBQFileInfo(xid, tcon, cfile->netfid, &find_data); rc = CIFSSMBQFileInfo(xid, tcon, cfile->netfid, &find_data);
if (rc == -EOPNOTSUPP || rc == -EINVAL) { switch (rc) {
case 0:
cifs_all_info_to_fattr(&fattr, &find_data, cifs_sb, false);
break;
case -EREMOTE:
cifs_create_dfs_fattr(&fattr, inode->i_sb);
rc = 0;
break;
case -EOPNOTSUPP:
case -EINVAL:
/* /*
* FIXME: legacy server -- fall back to path-based call? * FIXME: legacy server -- fall back to path-based call?
* for now, just skip revalidating and mark inode for * for now, just skip revalidating and mark inode for
...@@ -570,18 +579,14 @@ int cifs_get_file_info(struct file *filp) ...@@ -570,18 +579,14 @@ int cifs_get_file_info(struct file *filp)
*/ */
rc = 0; rc = 0;
CIFS_I(inode)->time = 0; CIFS_I(inode)->time = 0;
default:
goto cgfi_exit; goto cgfi_exit;
} else if (rc == -EREMOTE) { }
cifs_create_dfs_fattr(&fattr, inode->i_sb);
rc = 0;
} else if (rc)
goto cgfi_exit;
/* /*
* don't bother with SFU junk here -- just mark inode as needing * don't bother with SFU junk here -- just mark inode as needing
* revalidation. * revalidation.
*/ */
cifs_all_info_to_fattr(&fattr, &find_data, cifs_sb, false);
fattr.cf_uniqueid = CIFS_I(inode)->uniqueid; fattr.cf_uniqueid = CIFS_I(inode)->uniqueid;
fattr.cf_flags |= CIFS_FATTR_NEED_REVAL; fattr.cf_flags |= CIFS_FATTR_NEED_REVAL;
cifs_fattr_to_inode(inode, &fattr); cifs_fattr_to_inode(inode, &fattr);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment