Re: [PATCH] Fix regression which breaks DFS mounting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux