Skip to content
  • Ryusuke Konishi's avatar
    nilfs2: use semaphore to protect pointer to a writable FS-instance · 027d6404
    Ryusuke Konishi authored
    will get rid of nilfs_get_writer() and nilfs_put_writer() pair used to
    retain a writable FS-instance for a period.
    
    The pair functions were making up some kind of recursive lock with a
    mutex, but they became overkill since the commit
    201913ed
    
    .  Furthermore, they caused
    the following lockdep warning because the mutex can be released by a
    task which didn't lock it:
    
     =====================================
     [ BUG: bad unlock balance detected! ]
     -------------------------------------
     kswapd0/422 is trying to release lock (&nilfs->ns_writer_mutex) at:
     [<c1359ff5>] mutex_unlock+0x8/0xa
     but there are no more locks to release!
    
     other info that might help us debug this:
     no locks held by kswapd0/422.
    
     stack backtrace:
     Pid: 422, comm: kswapd0 Not tainted 2.6.31-rc4-nilfs #51
     Call Trace:
      [<c1358f97>] ? printk+0xf/0x18
      [<c104fea7>] print_unlock_inbalance_bug+0xcc/0xd7
      [<c11578de>] ? prop_put_global+0x3/0x35
      [<c1050195>] lock_release+0xed/0x1dc
      [<c1359ff5>] ? mutex_unlock+0x8/0xa
      [<c1359f83>] __mutex_unlock_slowpath+0xaf/0x119
      [<c1359ff5>] mutex_unlock+0x8/0xa
      [<d1284add>] nilfs_mdt_write_page+0xd8/0xe1 [nilfs2]
      [<c1092653>] shrink_page_list+0x379/0x68d
      [<c109171b>] ? isolate_pages_global+0xb4/0x18c
      [<c1092bd2>] shrink_list+0x26b/0x54b
      [<c10930be>] shrink_zone+0x20c/0x2a2
      [<c10936b7>] kswapd+0x407/0x591
      [<c1091667>] ? isolate_pages_global+0x0/0x18c
      [<c1040603>] ? autoremove_wake_function+0x0/0x33
      [<c10932b0>] ? kswapd+0x0/0x591
      [<c104033b>] kthread+0x69/0x6e
      [<c10402d2>] ? kthread+0x0/0x6e
      [<c1003e33>] kernel_thread_helper+0x7/0x1a
    
    This patch uses a reader/writer semaphore instead of the own lock and
    kills this warning.
    
    Signed-off-by: default avatarRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
    027d6404