• W
    ocfs2: make direntry invalid when deleting it · 82985248
    Wengang Wang 提交于
    When we deleting a direntry from a directory, if it's the first in a block we
    invalid it by setting inode to 0; otherwise, we merge the deleted one to the
    prior and contiguous direntry. And we don't truncate directories.
    
    There is a problem for the later case since inode is not set to 0.
    This problem happens when the caller passes a file position as parameter to
    ocfs2_dir_foreach_blk(). If the position happens to point to a stale(not
    the first, deleted in betweens of ocfs2_dir_foreach_blk()s) direntry, we are
    not able to recognize its staleness. So that we treat it as a live one wrongly.
    
    The fix is to set inode to 0 in both cases indicating the direntry is stale.
    This won't introduce additional IOs.
    Signed-off-by: NWengang Wang <wen.gang.wang@oracle.com>
    Signed-off-by: NJoel Becker <jlbec@evilplan.org>
    82985248
dir.c 115.7 KB