• Darrick J. Wong's avatar
    xfs: ask the dentry cache if it knows the parent of a directory · 34c9382c
    Darrick J. Wong authored
    It's possible that the dentry cache can tell us the parent of a
    directory.  Therefore, when repairing directory dot dot entries, query
    the dcache as a last resort before scanning the entire filesystem.
    
    A reviewer asks:
    
    "How high is the chance that we actually have a valid dcache entry for a
    file in a corrupted directory?"
    
    There's a decent chance of this actually working.  Say you have a
    1000-block directory foo, and block 980 gets corrupted.  Let's further
    suppose that block 0 has a correct entry for ".." and "bar".  If someone
    accesses /mnt/foo/bar, that will cause the dcache to create a dentry
    from /mnt to /mnt/foo whose d_parent points back to /mnt.  If you then
    want to rebuild the directory, XFS can obtain the parent from the dcache
    without needing to wander into parent pointers or scan the filesystem to
    find /mnt's connection to foo.
    Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    34c9382c
dir_repair.c 34.7 KB