diff options
author | Zhu Yanhai <zhu.yanhai@gmail.com> | 2009-08-12 02:17:59 -0400 |
---|---|---|
committer | Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp> | 2009-09-14 05:27:14 -0400 |
commit | 43be0ec0387a5ccce2e064cb78502e7b2b4dd590 (patch) | |
tree | e412246fce3f999b46b960ef416f1f10653ca895 /fs/nilfs2/super.c | |
parent | a4f0b9c5b4ae83636dafde8f3a0e04b5e411a0f3 (diff) |
nilfs2: add more check routines in mount process
nilfs2: Add more safeguard routines and protections in mount process,
which also makes nilfs2 report consistency error messages when
checkpoint number is invalid.
Signed-off-by: Zhu Yanhai <zhu.yanhai@gmail.com>
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Diffstat (limited to 'fs/nilfs2/super.c')
-rw-r--r-- | fs/nilfs2/super.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c index 019752f7d2d..50284add788 100644 --- a/fs/nilfs2/super.c +++ b/fs/nilfs2/super.c | |||
@@ -792,10 +792,15 @@ nilfs_fill_super(struct super_block *sb, void *data, int silent, | |||
792 | 792 | ||
793 | if (sb->s_flags & MS_RDONLY) { | 793 | if (sb->s_flags & MS_RDONLY) { |
794 | if (nilfs_test_opt(sbi, SNAPSHOT)) { | 794 | if (nilfs_test_opt(sbi, SNAPSHOT)) { |
795 | down_read(&nilfs->ns_segctor_sem); | ||
795 | err = nilfs_cpfile_is_snapshot(nilfs->ns_cpfile, | 796 | err = nilfs_cpfile_is_snapshot(nilfs->ns_cpfile, |
796 | sbi->s_snapshot_cno); | 797 | sbi->s_snapshot_cno); |
797 | if (err < 0) | 798 | up_read(&nilfs->ns_segctor_sem); |
799 | if (err < 0) { | ||
800 | if (err == -ENOENT) | ||
801 | err = -EINVAL; | ||
798 | goto failed_sbi; | 802 | goto failed_sbi; |
803 | } | ||
799 | if (!err) { | 804 | if (!err) { |
800 | printk(KERN_ERR | 805 | printk(KERN_ERR |
801 | "NILFS: The specified checkpoint is " | 806 | "NILFS: The specified checkpoint is " |