by disabling DFS, prefixpath and ipc functions.
Signed-off-by: Pavel Shilovsky <[email protected]>
---
fs/cifs/connect.c | 29 +++++++++++++++++++++++++----
fs/cifs/inode.c | 16 +++++++++++++---
2 files changed, 38 insertions(+), 7 deletions(-)
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 77e6520..8a9bd44 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -523,7 +523,14 @@ cifs_echo_request(struct work_struct *work)
time_before(jiffies, server->lstrp + SMB_ECHO_INTERVAL - HZ))
goto requeue_echo;
- rc = CIFSSMBEcho(server);
+#ifdef CONFIG_CIFS_SMB2
+ if (server->is_smb2)
+ /* temporarilly disable echo requests for SMB2 */
+ rc = 0;
+ else
+#endif
+ rc = CIFSSMBEcho(server);
+
if (rc)
cFYI(1, "Unable to send echo request to server: %s",
server->hostname);
@@ -2940,6 +2947,12 @@ get_dfs_path(int xid, struct cifs_ses *pSesInfo, const
char *old_path,
char *temp_unc;
int rc = 0;
+#ifdef CONFIG_CIFS_SMB2
+ if (pSesInfo->server->is_smb2) {
+ /* add missing smb2 dfs code here */
+ return -EREMOTE;
+ }
+#endif
*pnum_referrals = 0;
*preferrals = NULL;
@@ -3846,10 +3859,18 @@ try_mount_again:
tcon->unix_ext = 0; /* server does not support them */
/* do not care if following two calls succeed - informational */
- if (!tcon->ipc) {
- CIFSSMBQFSDeviceInfo(xid, tcon);
- CIFSSMBQFSAttributeInfo(xid, tcon);
+#ifdef CONFIG_CIFS_SMB2
+ if (tcon->ses->server->is_smb2) {
+ /* add missing calls here */
+ } else {
+#endif
+ if (!tcon->ipc) {
+ CIFSSMBQFSDeviceInfo(xid, tcon);
+ CIFSSMBQFSAttributeInfo(xid, tcon);
+ }
+#ifdef CONFIG_CIFS_SMB2
}
+#endif
cifs_sb->wsize = cifs_negotiate_wsize(tcon, volume_info);
cifs_sb->rsize = cifs_negotiate_rsize(tcon, volume_info);
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index ad0b7b7..182adf2 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -780,12 +780,22 @@ char *cifs_build_path_to_root(struct smb_vol *vol, struct
cifs_sb_info *cifs_sb,
/* if no prefix path, simply set path to the root of share to "" */
if (pplen == 0) {
- full_path = kmalloc(1, GFP_KERNEL);
- if (full_path)
- full_path[0] = 0;
+ int len = 1;
+#ifdef CONFIG_CIFS_SMB2
+ if (vol->use_smb2)
+ len = 2;
+#endif
+ full_path = kzalloc(len, GFP_KERNEL);
return full_path;
}
+#ifdef CONFIG_CIFS_SMB2
+ if (vol->use_smb2) {
+ cERROR(1, "prefixpath is not supported for smb2 now");
+ return NULL;
+ }
+#endif
+
if (tcon->Flags & SMB_SHARE_IS_IN_DFS)
dfsplen = strnlen(tcon->treeName, MAX_TREE_SIZE + 1);
else
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html