• Paulo Alcantara's avatar
    cifs: fix dentry lookups in directory handle cache · be4fde79
    Paulo Alcantara authored
    Get rid of any prefix paths in @path before lookup_positive_unlocked()
    as it will call ->lookup() which already adds those prefix paths
    through build_path_from_dentry().
    
    This has caused a performance regression when mounting shares with a
    prefix path where readdir(2) would end up retrying several times to
    open bad directory names that contained duplicate prefix paths.
    
    Fix this by skipping any prefix paths in @path before calling
    lookup_positive_unlocked().
    
    Fixes: e4029e07 ("cifs: find and use the dentry for cached non-root directories also")
    Cc: stable@vger.kernel.org # 6.1+
    Signed-off-by: default avatarPaulo Alcantara (SUSE) <pc@manguebit.com>
    Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
    be4fde79
cached_dir.c 14.4 KB