• OGAWA Hirofumi's avatar
    fat: Fix/Cleanup dcache handling for vfat · 1b524672
    OGAWA Hirofumi authored
    - Add comments for handling dcache of vfat.
    
    - Separate case-sensitive case and case-insensitive to
      vfat_revalidate() and vfat_ci_revalidate().
    
      vfat_revalidate() doesn't need to drop case-insensitive negative
      dentry on creation path.
    
    - Current code is missing to set ->d_revalidate to the negative dentry
      created by unlink/etc..
    
      This sets ->d_revalidate always, and returns 1 for positive
      dentry. Now, we don't need to change ->d_op dynamically anymore,
      so this just uses sb->s_root->d_op to set ->d_op.
    
    - d_find_alias() may return DCACHE_DISCONNECTED dentry. It's not
      the interesting dentry there. This checks it.
    
    - Add missing LOOKUP_PARENT check. We don't need to drop the valid
      negative dentry for (LOOKUP_CREATE | LOOKUP_PARENT) lookup.
    
    - For consistent filename on creation path, this drops negative dentry
      if we can't see intent.
    Signed-off-by: default avatarOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    1b524672
namei_vfat.c 25.2 KB