RAID superblock....
Hi,
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.
Signature · 4 lines
** [email protected] ** 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.