nilfs2: fix false warning saying one of two super blocks is broken
authorRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Sun, 15 Aug 2010 11:16:11 +0000 (20:16 +0900)
committerRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Mon, 16 Aug 2010 02:08:36 +0000 (11:08 +0900)
After applying commit b2ac86e1, the following message got appeared
after unclean shutdown:

> NILFS warning: broken superblock. using spare superblock.

This turns out to be a false message due to the change which updates
two super blocks alternately.  The secondary super block now can be
selected if it's newer than the primary one.

This kills the false warning by suppressing it if another super block
is not actually broken.

Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
fs/nilfs2/the_nilfs.c

index 37de1f062d81146126e75870b04d03a7640e38d1..6af1c0073e9ec8a871a9fe51d42e69d1daaf6cf7 100644 (file)
@@ -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);