• Miao Xie's avatar
    Btrfs: fix deadlock on metadata reservation when evicting a inode · aa38a711
    Miao Xie authored
    When I ran the xfstests, I found the test tasks was blocked on meta-data
    reservation.
    
    By debugging, I found the reason of this bug:
       start transaction
            |
    	v
       reserve meta-data space
    	|
    	v
       flush delay allocation -> iput inode -> evict inode
    	^					|
    	|					v
       wait for delay allocation flush <- reserve meta-data space
    
    And besides that, the flush on evicting inode will block the thread, which
    is reclaiming the memory, and make oom happen easily.
    
    Fix this bug by skipping the flush step when evicting inode.
    Signed-off-by: default avatarMiao Xie <miaox@cn.fujitsu.com>
    aa38a711
inode.c 194 KB