summaryrefslogtreecommitdiffstats
path: root/fs/cifs/cifs_fs_sb.h
diff options
context:
space:
mode:
authorPaulo Alcantara <pc@cjr.nz>2021-11-03 13:53:29 -0300
committerSteve French <stfrench@microsoft.com>2021-11-10 16:30:13 -0600
commitc88f7dcd6d6429197fc2fd87b54a894ffcd48e8e (patch)
tree136540ddd261ef46cfcfe87b3bc9e47417b45324 /fs/cifs/cifs_fs_sb.h
parent71e6864eacbef0b2645ca043cdfbac272cb6cea3 (diff)
downloadlinux-c88f7dcd6d6429197fc2fd87b54a894ffcd48e8e.tar.gz
linux-c88f7dcd6d6429197fc2fd87b54a894ffcd48e8e.tar.bz2
linux-c88f7dcd6d6429197fc2fd87b54a894ffcd48e8e.zip
cifs: support nested dfs links over reconnect
Mounting a dfs link that has nested links was already supported at mount(2), so make it work over reconnect as well. Make the following case work: * mount //root/dfs/link /mnt -o ... - final share: /server/share * in server settings - change target folder of /root/dfs/link3 to /server/share2 - change target folder of /root/dfs/link2 to /root/dfs/link3 - change target folder of /root/dfs/link to /root/dfs/link2 * mount -o remount,... /mnt - refresh all dfs referrals - mark current connection for failover - cifs_reconnect() reconnects to root server - tree_connect() * checks that /root/dfs/link2 is a link, then chase it * checks that root/dfs/link3 is a link, then chase it * finally tree connect to /server/share2 If the mounted share is no longer accessible and a reconnect had been triggered, the client will retry it from both last referral path (/root/dfs/link3) and original referral path (/root/dfs/link). Any new referral paths found while chasing dfs links over reconnect, it will be updated to TCP_Server_Info::leaf_fullpath, accordingly. Signed-off-by: Paulo Alcantara (SUSE) <pc@cjr.nz> Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs/cifs_fs_sb.h')
-rw-r--r--fs/cifs/cifs_fs_sb.h5
1 files changed, 0 insertions, 5 deletions
diff --git a/fs/cifs/cifs_fs_sb.h b/fs/cifs/cifs_fs_sb.h
index f97407520ea1..013a4bd65280 100644
--- a/fs/cifs/cifs_fs_sb.h
+++ b/fs/cifs/cifs_fs_sb.h
@@ -61,11 +61,6 @@ struct cifs_sb_info {
/* only used when CIFS_MOUNT_USE_PREFIX_PATH is set */
char *prepath;
- /*
- * Canonical DFS path initially provided by the mount call. We might connect to something
- * different via DFS but we want to keep it to do failover properly.
- */
- char *origin_fullpath; /* \\HOST\SHARE\[OPTIONAL PATH] */
/* randomly generated 128-bit number for indexing dfs mount groups in referral cache */
uuid_t dfs_mount_id;
/*