• Darrick J. Wong's avatar
    xfs: reset child dir '..' entry when unlinking child · 5838d035
    Darrick J. Wong authored
    While running xfs/168, I noticed a second source of post-shrink
    corruption errors causing shutdowns.
    
    Let's say that directory B has a low inode number and is a child of
    directory A, which has a high number.  If B is empty but open, and
    unlinked from A, B's dotdot link continues to point to A.  If A is then
    unlinked and the filesystem shrunk so that A is no longer a valid inode,
    a subsequent AIL push of B will trip the inode verifiers because the
    dotdot entry points outside of the filesystem.
    
    To avoid this problem, reset B's dotdot entry to the root directory when
    unlinking directories, since the root directory cannot be removed.
    Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
    Reviewed-by: default avatarGao Xiang <hsiangkao@linux.alibaba.com>
    5838d035
xfs_inode.c 104 KB