• Steve French's avatar
    [CIFS] fixup prefixpaths which contain multiple path components · 03a143c9
    Steve French authored
    Currently, when we get a prefixpath as part of mount, the kernel only
    changes the first character to be a '/' or '\' depending on whether
    posix extensions are enabled. This is problematic as it expects
    mount.cifs to pass in the correct delimiter in the rest of the
    prefixpath. But, mount.cifs may not know *what* the correct delimiter
    is. It's a chicken and egg problem.
    
    Note that mount.cifs should not do conversion of the
    prefixpath - if we want posix behavior then '\' is legal in a path
    (and we have had bugs in the distant path to prove to me that
    customers sometimes have apps that require '\').  The kernel code
    assumes that the path passed in is posix (and current code will handle
    the first path component fine but was broken for Windows mounts
    for "deep" prefixpaths unless the user specified a prefixpath with '\'
    deep in it.   So e.g. with current kernel code:
    
    1) mount to //server/share/dir1 will work to all server types
    2) mount to //server/share/dir1/subdir1 will work to Samba
    3) mount to //server/share/dir1\\subdir1 will work to Windows
    
    But case two would fail to Windows without the fix.
    With the kernel cifs module fix case two now works.
    
    First analyzed by Jeff Layton and Simo Sorce
    
    CC: Jeff Layton <jlayton@redhat.com>
    CC: Simo Sorce <simo@samba.org>
    Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
    03a143c9
To find the state of this project's repository at the time of any of these versions, check out the tags.
CHANGES 39.2 KB