Date: Fri, 04 Oct 2002 14:11:57 -0700 From: Peter Wemm <peter@wemm.org> To: Poul-Henning Kamp <phk@critter.freebsd.dk> Cc: n0go013 <ttz@blahdeblah.demon.co.uk>, current <freebsd-current@freebsd.org> Subject: Re: [ GEOM tests ] disklabel warnings and vinum drives lost Message-ID: <20021004211157.378592A896@canning.wemm.org> In-Reply-To: <35389.1033748850@critter.freebsd.dk>
next in thread | previous in thread | raw e-mail | index | archive | help
Poul-Henning Kamp wrote:
> In message <20021004161119.GA10830@pooh.blahdeblah.demon.co.uk>, n0go013 writ
es
> :
> >On 04.10-15:40, fergus wrote:
> >> On 04.10-14:20, Poul-Henning Kamp wrote:
> >> [...]
> >> > I suspect vinum uses this sysctl to get an inventory of disks in
> >> > the system, so can I get you to try again making sure you have
> >> > rev. 1.20 of src/sys/geom/geom_disk.c ?
> >[...]
> >> i'll let you know the test results when i have some.
> >
> >same results -- can't initialise any drives. i think the example below
> >points more directly to the issue but i'm pretty sure it is because the
> >direct read from the disk does not return a valid disklabel. without a
> >'vinum' partition entry vinum spews.
>
> I have no idea how vinum does this or something else, but clearly
> something is not done the right way in vinum...
vinum is so much unbelievable stuff in it. Consider this stuff:
sys/dev/vinum/vinumio.c:
/* Find the device */
if (bcmp(dname, "ad", 2) == 0) /* IDE disk */
devmajor = 116;
else if (bcmp(dname, "wd", 2) == 0) /* IDE disk */
devmajor = 3;
else if (bcmp(dname, "da", 2) == 0)
devmajor = 13;
else if (bcmp(dname, "vn", 2) == 0)
devmajor = 43;
else if (bcmp(dname, "md", 2) == 0)
devmajor = 95;
else if (bcmp(dname, "ar", 2) == 0)
devmajor = 157;
else if (bcmp(dname, "amrd", 4) == 0) {
devmajor = 133;
dname += 2;
} else if (bcmp(dname, "mlxd", 4) == 0) {
devmajor = 131;
dname += 2;
} else if (bcmp(dname, "idad", 4) == 0) {
devmajor = 109;
dname += 2;
} else if (bcmp(dname, "twed", 4) == 0) { /* 3ware raid */
devmajor = 147;
dname += 2;
} else
return ENODEV;
dname += 2; /* point past */
It goes *way* downhill from there. :-(
Guess what happens when a new driver is added to the kernel?
Guess what happens if somebody doesn't use the "official" naming in /dev?
This crud has *got* to be taken out and shot, then reworked to do it
properly.
Oh, and lets not talk about trying to run vinum on partition schemes that
do not even *have* disklabels.
Cheers,
-Peter
--
Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com
"All of this is for nothing if we don't go to the stars" - JMS/B5
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021004211157.378592A896>
