nilfs2: fix lockdep recursive locking warning on meta data files
This fixes the following false detection of lockdep against nilfs meta data files: ============================================= [ INFO: possible recursive locking detected ] 2.6.29 #26 --------------------------------------------- mount.nilfs2/4185 is trying to acquire lock: (&mi->mi_sem){----}, at: [<d0c7925b>] nilfs_sufile_get_stat+0x1e/0x105 [nilfs2] but task is already holding lock: (&mi->mi_sem){----}, at: [<d0c72026>] nilfs_count_free_blocks+0x48/0x84 [nilfs2] Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
This commit is contained in:
parent
bcb48891b0
commit
c2698e50e3
|
@ -115,6 +115,7 @@ void put_nilfs(struct the_nilfs *nilfs)
|
||||||
static int nilfs_load_super_root(struct the_nilfs *nilfs,
|
static int nilfs_load_super_root(struct the_nilfs *nilfs,
|
||||||
struct nilfs_sb_info *sbi, sector_t sr_block)
|
struct nilfs_sb_info *sbi, sector_t sr_block)
|
||||||
{
|
{
|
||||||
|
static struct lock_class_key dat_lock_key;
|
||||||
struct buffer_head *bh_sr;
|
struct buffer_head *bh_sr;
|
||||||
struct nilfs_super_root *raw_sr;
|
struct nilfs_super_root *raw_sr;
|
||||||
struct nilfs_super_block **sbp = nilfs->ns_sbp;
|
struct nilfs_super_block **sbp = nilfs->ns_sbp;
|
||||||
|
@ -163,6 +164,9 @@ static int nilfs_load_super_root(struct the_nilfs *nilfs,
|
||||||
if (unlikely(err))
|
if (unlikely(err))
|
||||||
goto failed_sufile;
|
goto failed_sufile;
|
||||||
|
|
||||||
|
lockdep_set_class(&NILFS_MDT(nilfs->ns_dat)->mi_sem, &dat_lock_key);
|
||||||
|
lockdep_set_class(&NILFS_MDT(nilfs->ns_gc_dat)->mi_sem, &dat_lock_key);
|
||||||
|
|
||||||
nilfs_mdt_set_shadow(nilfs->ns_dat, nilfs->ns_gc_dat);
|
nilfs_mdt_set_shadow(nilfs->ns_dat, nilfs->ns_gc_dat);
|
||||||
nilfs_mdt_set_entry_size(nilfs->ns_cpfile, checkpoint_size,
|
nilfs_mdt_set_entry_size(nilfs->ns_cpfile, checkpoint_size,
|
||||||
sizeof(struct nilfs_cpfile_header));
|
sizeof(struct nilfs_cpfile_header));
|
||||||
|
|
Loading…
Reference in New Issue