diff options
Diffstat (limited to 'fs/nilfs2')
-rw-r--r-- | fs/nilfs2/the_nilfs.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/nilfs2/the_nilfs.c b/fs/nilfs2/the_nilfs.c index 33871f7e4f01..a756168a21c2 100644 --- a/fs/nilfs2/the_nilfs.c +++ b/fs/nilfs2/the_nilfs.c | |||
@@ -486,11 +486,15 @@ static int nilfs_load_super_block(struct the_nilfs *nilfs, | |||
486 | printk(KERN_WARNING | 486 | printk(KERN_WARNING |
487 | "NILFS warning: unable to read secondary superblock\n"); | 487 | "NILFS warning: unable to read secondary superblock\n"); |
488 | 488 | ||
489 | /* | ||
490 | * Compare two super blocks and set 1 in swp if the secondary | ||
491 | * super block is valid and newer. Otherwise, set 0 in swp. | ||
492 | */ | ||
489 | valid[0] = nilfs_valid_sb(sbp[0]); | 493 | valid[0] = nilfs_valid_sb(sbp[0]); |
490 | valid[1] = nilfs_valid_sb(sbp[1]); | 494 | valid[1] = nilfs_valid_sb(sbp[1]); |
491 | swp = valid[1] && | 495 | swp = valid[1] && (!valid[0] || |
492 | (!valid[0] || | 496 | le64_to_cpu(sbp[1]->s_last_cno) > |
493 | le64_to_cpu(sbp[1]->s_wtime) > le64_to_cpu(sbp[0]->s_wtime)); | 497 | le64_to_cpu(sbp[0]->s_last_cno)); |
494 | 498 | ||
495 | if (valid[swp] && nilfs_sb2_bad_offset(sbp[swp], sb2off)) { | 499 | if (valid[swp] && nilfs_sb2_bad_offset(sbp[swp], sb2off)) { |
496 | brelse(sbh[1]); | 500 | brelse(sbh[1]); |