Skip to content
  • Ryusuke Konishi's avatar
    nilfs2: fix circular locking dependency of writer mutex · 201913ed
    Ryusuke Konishi authored
    
    
    This fixes the following circular locking dependency problem:
    
     =======================================================
     [ INFO: possible circular locking dependency detected ]
     2.6.30-rc3 #5
     -------------------------------------------------------
     segctord/3895 is trying to acquire lock:
      (&nilfs->ns_writer_mutex){+.+...}, at: [<d0d02172>]
       nilfs_mdt_get_block+0x89/0x20f [nilfs2]
    
     but task is already holding lock:
      (&bmap->b_sem){++++..}, at: [<d0d02d99>]
       nilfs_bmap_propagate+0x14/0x2e [nilfs2]
    
     which lock already depends on the new lock.
    
    The bugfix is done by replacing call sites of nilfs_get_writer() which
    are never called from read-only context with direct dereferencing of
    pointer to a writable FS-instance.
    
    Signed-off-by: default avatarRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
    201913ed