my @SB; my $Temp; sysopen(DEV, $Device, O_RDWR | O_SYNC) || die("Error: $!\n"); sysseek(DEV,0,0) || die("$!\n"); sysread(DEV,$SB[0],512) || die("1 $!\n"); sysseek(DEV,0,0) || die("$!\n"); sysread(DEV,$SB[1],512) || die("2 $!\n"); sysseek(DEV,-1024,2) || die("$!\n"); sysread(DEV,$SB[2],512) || die("3 $!\n"); sysseek(DEV,-512,2) || die("$!\n"); sysread(DEV,$SB[3],512) || die("4 $!\n"); if (!($SB[0] eq $SB[1])) { my @Pair; warn("Error, First 2 superblocks do not match! Checking third..."); foreach my $I (0 .. 1) { @Pair = ($I,2) if ($SB[$I] eq $SB[2]); } if (!((@Pair[0]) && (@Pair[1]))) { warn("Error, First 3 superblocks do not match! Checking fourth and final..."); foreach my $I (0 .. 2) { @Pair = ($I,3) if ($SB[$I] eq $SB[3]); } if (!((@Pair[0]) && (@Pair[1]))) { die("All 4 superblock copies are different! This is majior corruption.\n"); } } $SB[0] = $Pair[1]; }