This patchset adds witness protocol support, enabling transparent client failover for clustered shares. Both, regular and scale-out clustered file servers are supported. In summary, the client side of the protocol is implemented in userspace, specifically in the samba's swnclient library, and a new daemon called swnd provides the interface for the cifs module via netlink. This reduces the kernel changes to just sending the commands to register and unregister to receive the notifications and process these notifications received from swnd. [PATCH 01/11] cifs: Make extract_hostname function public [PATCH 02/11] cifs: Make extract_sharename function public [PATCH 03/11] cifs: Register generic netlink family [PATCH 04/11] cifs: add witness mount option and data structs [PATCH 05/11] cifs: Send witness register and unregister commands to [PATCH 06/11] cifs: Set witness notification handler for messages [PATCH 07/11] cifs: Add witness information to debug data dump [PATCH 08/11] cifs: Send witness register messages to userspace [PATCH 09/11] cifs: Simplify reconnect code when dfs upcall is [PATCH 10/11] cifs: Handle witness client move notification [PATCH 11/11] cifs: Handle witness share moved notification fs/cifs/Kconfig | 11 + fs/cifs/Makefile | 2 + fs/cifs/cache.c | 24 - fs/cifs/cifs_debug.c | 13 + fs/cifs/cifs_swn.c | 723 +++++++++++++++++++++++++ fs/cifs/cifs_swn.h | 25 + fs/cifs/cifsfs.c | 22 +- fs/cifs/cifsglob.h | 8 + fs/cifs/cifsproto.h | 2 + fs/cifs/connect.c | 141 +++-- fs/cifs/fscache.c | 1 + fs/cifs/fscache.h | 1 - fs/cifs/misc.c | 56 ++ fs/cifs/netlink.c | 88 +++ fs/cifs/netlink.h | 16 + include/uapi/linux/cifs/cifs_netlink.h | 63 +++ 16 files changed, 1117 insertions(+), 79 deletions(-)