mirror of https://gitee.com/openkylin/linux.git
nilfs2: fix lockdep warning between regular file and inode file
This will fix the following false positive of recursive locking which lockdep has detected: ============================================= [ INFO: possible recursive locking detected ] 2.6.30-nilfs #42 --------------------------------------------- nilfs_cleanerd/10607 is trying to acquire lock: (&bmap->b_sem){++++-.}, at: [<e0d025b7>] nilfs_bmap_lookup_at_level+0x1a/0x74 [nilfs2] but task is already holding lock: (&bmap->b_sem){++++-.}, at: [<e0d024e0>] nilfs_bmap_truncate+0x19/0x6a [nilfs2] other info that might help us debug this: 2 locks held by nilfs_cleanerd/10607: #0: (&nilfs->ns_segctor_sem){++++.+}, at: [<e0d0d75a>] nilfs_transaction_begin+0xb6/0x10c [nilfs2] #1: (&bmap->b_sem){++++-.}, at: [<e0d024e0>] nilfs_bmap_truncate+0x19/0x6a [nilfs2] Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
This commit is contained in:
parent
4a52df7797
commit
ff54de363a
|
@ -568,6 +568,7 @@ void nilfs_bmap_abort_update_v(struct nilfs_bmap *bmap,
|
|||
}
|
||||
|
||||
static struct lock_class_key nilfs_bmap_dat_lock_key;
|
||||
static struct lock_class_key nilfs_bmap_mdt_lock_key;
|
||||
|
||||
/**
|
||||
* nilfs_bmap_read - read a bmap from an inode
|
||||
|
@ -603,7 +604,11 @@ int nilfs_bmap_read(struct nilfs_bmap *bmap, struct nilfs_inode *raw_inode)
|
|||
bmap->b_ptr_type = NILFS_BMAP_PTR_VS;
|
||||
bmap->b_last_allocated_key = 0;
|
||||
bmap->b_last_allocated_ptr = NILFS_BMAP_INVALID_PTR;
|
||||
lockdep_set_class(&bmap->b_sem, &nilfs_bmap_mdt_lock_key);
|
||||
break;
|
||||
case NILFS_IFILE_INO:
|
||||
lockdep_set_class(&bmap->b_sem, &nilfs_bmap_mdt_lock_key);
|
||||
/* Fall through */
|
||||
default:
|
||||
bmap->b_ptr_type = NILFS_BMAP_PTR_VM;
|
||||
bmap->b_last_allocated_key = 0;
|
||||
|
|
Loading…
Reference in New Issue