• Jan Kara's avatar
    writeback: Fix lock imbalance in writeback_sb_inodes() · ead188f9
    Jan Kara authored
    Fix bug introduced by 169ebd90.  We have to have wb_list_lock locked when
    restarting writeback loop after having waited for inode writeback.
    
    Bug description by Ted Tso:
    
      I can reproduce this fairly easily by using ext4 w/o a journal, running
      under KVM with 1024megs memory, with fsstress (xfstests #13):
    
      [   45.153294] =====================================
      [   45.154784] [ BUG: bad unlock balance detected! ]
      [   45.155591] 3.5.0-rc1-00002-gb22b1f17 #124 Not tainted
      [   45.155591] -------------------------------------
      [   45.155591] flush-254:16/2499 is trying to release lock (&(&wb->list_lock)->rlock) at:
      [   45.155591] [<c022c3da>] writeback_sb_inodes+0x160/0x327
      [   45.155591] but there are no more locks to release!
    Reported-by: Theodore Ts'o's avatarTheodore Ts'o <tytso@mit.edu>
    Tested-by: Theodore Ts'o's avatarTheodore Ts'o <tytso@mit.edu>
    Signed-off-by: 's avatarJan Kara <jack@suse.cz>
    Signed-off-by: 's avatarFengguang Wu <fengguang.wu@intel.com>
    ead188f9
fs-writeback.c 39.4 KB