• Tao Ma's avatar
    ocfs2: Add reflinked file's inode to inode hash eariler. · c7d260af
    Tao Ma authored
    We used to add reflinked file's inode to inode hash when
    we add it to the dest dir. But actually there is a race.
    Consider the following sequence.
    1. reflink happens and create the inode in orphan dir.
    2. reflink thread is scheduled out because of some io.
    3. recovery begins to work and calls ocfs2_recover_orphans.
       It calls ocfs2_iget and get a new inode and i_count = 1.
       It calls iput then and delete inode. the buffer's
       uptodate state is cleared.
    
    This patch move insert_inode_hash to the create function so
    that it can be found by step 3 and prevented from deleting
    because i_count > 1.
    
    This resolves the bug
    http://oss.oracle.com/bugzilla/show_bug.cgi?id=1183.
    Signed-off-by: default avatarTao Ma <tao.ma@oracle.com>
    Signed-off-by: default avatarJoel Becker <joel.becker@oracle.com>
    c7d260af
namei.c 54.8 KB