Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2: nilfs2: fix false warning saying one of two super blocks is broken nilfs2: fix list corruption after ifile creation failure
This commit is contained in:
commit
351f13d708
2 changed files with 5 additions and 3 deletions
|
@ -400,9 +400,10 @@ int nilfs_attach_checkpoint(struct nilfs_sb_info *sbi, __u64 cno)
|
|||
list_add(&sbi->s_list, &nilfs->ns_supers);
|
||||
up_write(&nilfs->ns_super_sem);
|
||||
|
||||
err = -ENOMEM;
|
||||
sbi->s_ifile = nilfs_ifile_new(sbi, nilfs->ns_inode_size);
|
||||
if (!sbi->s_ifile)
|
||||
return -ENOMEM;
|
||||
goto delist;
|
||||
|
||||
down_read(&nilfs->ns_segctor_sem);
|
||||
err = nilfs_cpfile_get_checkpoint(nilfs->ns_cpfile, cno, 0, &raw_cp,
|
||||
|
@ -433,6 +434,7 @@ int nilfs_attach_checkpoint(struct nilfs_sb_info *sbi, __u64 cno)
|
|||
nilfs_mdt_destroy(sbi->s_ifile);
|
||||
sbi->s_ifile = NULL;
|
||||
|
||||
delist:
|
||||
down_write(&nilfs->ns_super_sem);
|
||||
list_del_init(&sbi->s_list);
|
||||
up_write(&nilfs->ns_super_sem);
|
||||
|
|
|
@ -608,11 +608,11 @@ static int nilfs_load_super_block(struct the_nilfs *nilfs,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (swp) {
|
||||
if (!valid[!swp])
|
||||
printk(KERN_WARNING "NILFS warning: broken superblock. "
|
||||
"using spare superblock.\n");
|
||||
if (swp)
|
||||
nilfs_swap_super_block(nilfs);
|
||||
}
|
||||
|
||||
nilfs->ns_sbwcount = 0;
|
||||
nilfs->ns_sbwtime = le64_to_cpu(sbp[0]->s_wtime);
|
||||
|
|
Reference in a new issue