• M
    Btrfs: fix deadlock on metadata reservation when evicting a inode · aa38a711
    Miao Xie 提交于
    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: NMiao Xie <miaox@cn.fujitsu.com>
    aa38a711
ctree.h 90.6 KB