• Aurelien Aptel's avatar
    cifs: plumb smb2 POSIX dir enumeration · 3d519bd1
    Aurelien Aptel authored
    * add code to request POSIX info level
    * parse dir entries and fill cifs_fattr to get correct inode data
    
    since the POSIX payload is variable size the number of entries in a
    FIND response needs to be computed differently.
    
    Dirs and regular files are properly reported along with mode bits,
    hardlink number, c/m/atime. No special files yet (see below).
    
    Current experimental version of Samba with the extension unfortunately
    has issues with wildcards and needs the following patch:
    
    > --- i/source3/smbd/smb2_query_directory.c
    > +++ w/source3/smbd/smb2_query_directory.c
    > @@ -397,9 +397,7 @@ smbd_smb2_query_directory_send(TALLOC_CTX
    > *mem_ctx,
    > 		}
    > 	}
    >
    > -       if (!state->smbreq->posix_pathnames) {
    > 		wcard_has_wild = ms_has_wild(state->in_file_name);
    > -       }
    >
    > 	/* Ensure we've canonicalized any search path if not a wildcard. */
    > 	if (!wcard_has_wild) {
    >
    
    Also for special files despite reporting them as reparse point samba
    doesn't set the reparse tag field. This patch will mark them as needing
    re-evaluation but the re-evaluate code doesn't deal with it yet.
    Signed-off-by: default avatarAurelien Aptel <aaptel@suse.com>
    Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
    3d519bd1
readdir.c 28.6 KB