This is not enough to fix DFS. I believe we also need [1] to handle DFS links to subdirs. I have SERVER_A with a DFS link to //SERVER_B/sub/dir. cifs_are_all_path_accessible() and cifs_get_root() walk along the path components and do queries on them. But they are not skipping the initial host + share name on the UNC resulting in failed queries: CLIENT_A_____ -> SERVER_B____ SMB Trans2 Request, QUERY_PATH_INFO, Query File All Info, Path: //SERVER_B____ SERVER_B____ -> CLIENT_A_____ SMB Trans2 Response, QUERY_PATH_INFO, Error: STATUS_OBJECT_NAME_NOT_FOUND The QUERY_PATH_INFO request here is using the first path component which is not a file path but an incomplete UNC path. That path is made by cifs_build_path_to_root() which only makes a full UNC path when in a DFS. It is not necessary on the servers I've tested (cf [1]). Therefore the fix is to not make a full UNC path in cifs_build_path_to_root() or to add a flag to its parameters to decide whether to prefix the host+share or not. I've sent patches for both solution on the thread [1] (look at all the messages of the thread). 1: http://marc.info/?i=20160801143204.7377b5a4@aaptelpc -- Aurélien Aptel / SUSE Labs Samba Team GPG: 1839 CB5F 9F5B FB9B AA97 8C99 03C8 A49B 521B D5D3 SUSE Linux GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg)
Attachment:
signature.asc
Description: PGP signature