Return to BSD News archive
Newsgroups: comp.os.386bsd.bugs Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!elroy.jpl.nasa.gov!swrinde!cs.utexas.edu!uunet!world!mv!k8lt.ampr.org!k8lt.ampr.org!glg From: glg@k8lt.ampr.org (Gary L. Grebus) Subject: Re: NetBSD 0.9 won't read PTF CD-ROM Organization: Mostly disorganized References: <CEu567.2wI@festival.ed.ac.uk> <29ho9a$3ja@agate.berkeley.edu> Nntp-Posting-Host: localhost.k8lt.ampr.org Message-ID: <1993Oct17.033332.11627@k8lt.ampr.org> Sender: news@k8lt.ampr.org (USENET news) Date: Sun, 17 Oct 93 03:33:32 GMT Lines: 60 In article <29ho9a$3ja@agate.berkeley.edu>, cuccia@remarque.berkeley.edu (Nick Cuccia) writes: |> I've mentioned this a number of times on the net. It's not just with the PTF |> cd; it happens with the InfoMagic cd that FTP software gave out at last year's |> Interop. This problem dates back to 386bsd 0.1; since I don't have a FreeBSD |> system, so I'll leave it to somebody who does to determine whether the bug is |> still there. |> |> The problem is that files on ISO 9660 CDs can be accessed once mounted, |> provided their inode number is less than some limit (it appears to be 81920, |> but I can't tell for sure; doing an 'ls -iR' on a mounted CD's root should |> give you an idea of where that limit is--it will list some dirs with inodes |> > 81920, but not traverse them). |> I fixed a couple of problems in 386BSD 0.1 pk 0.2.4 which produced similar symptoms. Dunno if this applies to any of {Free|Net}BSD. Basically, the isofs code and vnode code didn't agree on the disk. Here are the diffs: *** cd.c.ORIG Tue Aug 3 22:28:35 1993 --- cd.c Thu Aug 5 22:31:33 1993 *************** *** 975,981 **** cd->disklabel.d_npartitions = 1; cd->disklabel.d_partitions[0].p_offset = 0; ! cd->disklabel.d_partitions[0].p_size = cd->params.disksize; cd->disklabel.d_partitions[0].p_fstype = 9; cd->disklabel.d_magic = DISKMAGIC; --- 975,983 ---- cd->disklabel.d_npartitions = 1; cd->disklabel.d_partitions[0].p_offset = 0; ! /* GLG - the fake partition size has to be in units of DEV_BSIZE */ ! cd->disklabel.d_partitions[0].p_size = ! cd->params.disksize * (cd->params.blksize / DEV_BSIZE); cd->disklabel.d_partitions[0].p_fstype = 9; cd->disklabel.d_magic = DISKMAGIC; *************** *** 1383,1388 **** --- 1385,1395 ---- printf("closing cd%d part %d\n",unit,part); cd_data[unit].partflags[part] &= ~CDOPEN; cd_data[unit].openparts &= ~(1 << part); + + /* Force reread of label after a a close. At minimum this + forces a re-read if the drive was empty at boot time. */ + /*GLG*/ cd_data[unit].flags &= ~(CDVALID | CDHAVELABEL); + cd_prevent_unit(unit,PR_ALLOW,SCSI_SILENT); return(0); } -- Gary L. Grebus, 16 North Mason Rd., Brookline, NH 03033-2452 Home: glg@k8lt.ampr.org (decvax!balrog!glg) Work: grebus@isis1.enet.dec.com Ham Packet: K8LT @ WA1PHY.MA