1. 22 9月, 2009 2 次提交
  2. 14 9月, 2009 4 次提交
    • R
      nilfs2: convert nilfs_bmap_lookup to an inline function · 0f3fe33b
      Ryusuke Konishi 提交于
      The nilfs_bmap_lookup() is now a wrapper function of
      nilfs_bmap_lookup_at_level().
      
      This moves the nilfs_bmap_lookup() to a header file converting it to
      an inline function and gives an opportunity for optimization.
      Signed-off-by: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      0f3fe33b
    • R
      nilfs2: remove individual gfp constants for each metadata file · 7a102b09
      Ryusuke Konishi 提交于
      This gets rid of NILFS_CPFILE_GFP, NILFS_SUFILE_GFP, NILFS_DAT_GFP,
      and NILFS_IFILE_GFP.  All of these constants refer to NILFS_MDT_GFP,
      and can be removed.
      Signed-off-by: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      7a102b09
    • R
      nilfs2: always lookup disk block address before reading metadata block · 14351104
      Ryusuke Konishi 提交于
      The current metadata file code skips disk address lookup for its data
      block if the buffer has a mapped flag.
      
      This has a potential risk to cause read request to be performed
      against the stale block address that GC moved, and it may lead to meta
      data corruption.  The mapped flag is safe if the buffer has an
      uptodate flag, otherwise it may prevent necessary update of disk
      address in the next read.
      
      This will avoid the potential problem by ensuring disk address lookup
      before reading metadata block even for buffers with the mapped flag.
      Signed-off-by: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      14351104
    • R
      nilfs2: use semaphore to protect pointer to a writable FS-instance · 027d6404
      Ryusuke Konishi 提交于
      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: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      027d6404
  3. 02 8月, 2009 1 次提交
  4. 10 6月, 2009 2 次提交
  5. 10 5月, 2009 1 次提交
  6. 09 5月, 2009 1 次提交
    • R
      nilfs2: fix circular locking dependency of writer mutex · 201913ed
      Ryusuke Konishi 提交于
      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: NRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      201913ed
  7. 07 4月, 2009 3 次提交