The MD code I see doing:
488 sb_offset = calc_dev_sboffset(rdev->dev, rdev->mddev, 1);
489 rdev->sb_offset = sb_offset;
490 fsync_dev(dev);
491 set_blocksize (dev, MD_SB_BYTES);
492 bh = bread (dev, sb_offset / MD_SB_BLOCKS, MD_SB_BYTES);
where sb_offset is calculated as:
290 if (blk_size[MAJOR(dev)])
291 size = blk_size[MAJOR(dev)][MINOR(dev)];
Now, for aguments sake, I have a 4k disk. I'd expect the size to be 4
(1k blocks, according to the comment near the definition of blk_size).
Thus the "bread" would effectively try to read the block at offset 4k.
That would be past the end of my mini-disk, right?
I would have expected a "-1" in there somewhere, to get the last block
of the dev, and not the block just past the end of the drive.
Anyway on the old machine, I still cannot find the raid superblock by
hand, but the drives now mount, so the kernel must have been able to
locate them somehow......
The machine is still running 2.4.16 + IDE patches for 48 bit
addressing.
The working machine is an 850MHz PIII w/384Mb RAM, the non-working
machine is an AMD 1800+ MP w/1G RAM (with another one of those
processors sitting idle close by)...
Roger.
-- ** R.E.Wolff@BitWizard.nl ** http://www.BitWizard.nl/ ** +31-15-2137555 ** *-- BitWizard writes Linux device drivers for any device you may have! --* * There are old pilots, and there are bold pilots. * There are also old, bald pilots. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/