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 oopses with doubly mounted snapshots nilfs2: missing a read lock for segment writer in nilfs_attach_checkpoint()
This commit is contained in:
commit
6c30c53fd5
2 changed files with 3 additions and 1 deletions
|
@ -416,8 +416,10 @@ int nilfs_attach_checkpoint(struct nilfs_sb_info *sbi, __u64 cno)
|
||||||
if (unlikely(err))
|
if (unlikely(err))
|
||||||
goto failed;
|
goto failed;
|
||||||
|
|
||||||
|
down_read(&nilfs->ns_segctor_sem);
|
||||||
err = nilfs_cpfile_get_checkpoint(nilfs->ns_cpfile, cno, 0, &raw_cp,
|
err = nilfs_cpfile_get_checkpoint(nilfs->ns_cpfile, cno, 0, &raw_cp,
|
||||||
&bh_cp);
|
&bh_cp);
|
||||||
|
up_read(&nilfs->ns_segctor_sem);
|
||||||
if (unlikely(err)) {
|
if (unlikely(err)) {
|
||||||
if (err == -ENOENT || err == -EINVAL) {
|
if (err == -ENOENT || err == -EINVAL) {
|
||||||
printk(KERN_ERR
|
printk(KERN_ERR
|
||||||
|
|
|
@ -253,7 +253,7 @@ nilfs_detach_writer(struct the_nilfs *nilfs, struct nilfs_sb_info *sbi)
|
||||||
|
|
||||||
static inline void nilfs_put_sbinfo(struct nilfs_sb_info *sbi)
|
static inline void nilfs_put_sbinfo(struct nilfs_sb_info *sbi)
|
||||||
{
|
{
|
||||||
if (!atomic_dec_and_test(&sbi->s_count))
|
if (atomic_dec_and_test(&sbi->s_count))
|
||||||
kfree(sbi);
|
kfree(sbi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue