sysinstall dead in -CURRENT?
Pyun YongHyeon
yongari at kt-is.co.kr
Tue Dec 21 00:07:09 PST 2004
On Tue, Dec 21, 2004 at 06:43:17AM -0000, Ballance, Robert T wrote:
> > AFAIK, this has nothing to do with marius' zs(4) patch.
> > There is also PR72962 for the issue.
> >
> > Long ago, I made a patch for this issue. But it wasn't further
> > investigated due to lack of time. I sent a mail to one of
> > developer but got no reply. The following is the summary of
> > the mail.
> >
> > It seems that it happans on on systems with SCSI CDROM. In rev.
> > 1.90 of scsi_cd.c, phk changed to return 2k sectors when no media
> > inserted. But open_disk.c:Int_Open_Disk() just check sectorsize
> > against 0. So if we have no media in CDROM, we would bypass the
> > check and could generate division by zero exception. I guess we
> > need at least the following patch.
> >
> > It seems that there are two cases here.
> > 1. No media in CDROM -> sector = 2k, hd = 0
> > 2. media present in CDROM -> sector = 0, hd = 0
> >
> > --- open_disk.c.orig Mon Sep 20 11:22:10 2004
> > +++ open_disk.c Tue Oct 26 17:45:17 2004
> > @@ -94,6 +94,8 @@
> > return (NULL);
> > d->sector_size = s;
> > len /= s; /* media size in number of sectors. */
> > + if (len == 0)
> > + return (NULL);
> >
> > if (Add_Chunk(d, 0, len, name, whole, 0, 0, "-")) {
> > DPRINT(("Failed to add 'whole' chunk"));
> > @@ -123,6 +125,10 @@
> > */
> > o = d->bios_hd * d->bios_sect;
> > d->bios_cyl = (o != 0) ? len / o : 0;
> > + if (d->bios_cyl == 0) {
> > + /* XXX This may indicate it is not DISK. */
> > + return (NULL);
> > + }
> >
> > p = q;
> > lo[0] = 0;
> >
> > And another one to plug memory leak.
> >
> > --- disk.c.orig Mon May 17 07:08:16 2004
> > +++ disk.c Tue Oct 26 16:46:23 2004
> > @@ -77,6 +77,7 @@
> > struct disk *
> > Open_Disk(const char *name)
> > {
> > + struct disk *d;
> > char *conftxt;
> > size_t txtsize;
> > int error;
> > @@ -99,7 +100,10 @@
> > }
> > conftxt[txtsize] = ''; /* in case kernel bug is still there */
> >
> > - return Int_Open_Disk(name, conftxt);
> > + d = Int_Open_Disk(name, conftxt);
> > + free(conftxt);
> > +
> > + return (d);
> > }
> >
> > void
> >
> > BTW, I don't know why GEOM thinks SCSI CDROM as a disk. On systems
> > with IDE CDROM, it is not considered as a disk. So above problem
> > only happen on systems with SCSI CDROM. With above patches my U2
> > displayed install screen successfully with/without CD mdia in CDROM.
>
> Is there anything I can do to help get this into the tree/working, and does this problem affect SCSI
> cdrom's across the board, or just with sparc64?
>
I guess it happens only on sparc64 with SCSI CDROM.
The patch I posted would be just a work-around, not fix. Why sysinstall
thinks CDROM as a disk target would be the root cause.
> I'm off for a good while from University, and I got access today to another Ultra2 and an Ultra60, so I
> can test more stuff if needed ;)
>
I'd like to see real fix too.
> -R. Tyler Ballance
>
>
--
Regards,
Pyun YongHyeon
http://www.kr.freebsd.org/~yongari | yongari at freebsd.org
More information about the freebsd-sparc64
mailing list