RAID superblock....

Rogier Wolff (R.E.Wolff@BitWizard.nl)
Sun, 10 Mar 2002 14:28:57 +0100 (MET)


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.

-- 
** 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/