Return to BSD News archive
Path: sserve!manuel.anu.edu.au!munnari.oz.au!news.hawaii.edu!ames!sun-barr!cs.utexas.edu!uunet!mcsun!fuug!kiae!demos!newsserv From: "Andrew A. Chernov, Black Mage" <ache@astral.msk.su> Newsgroups: comp.unix.bsd Subject: Patch for wd.c (partition offset, pcfs) Date: Wed, 25 Nov 92 11:17:28 +0300 Distribution: world Organization: Ha-oh-lahm Yetzirah Message-ID: <aEOQp4hiD0@astral.msk.su> Sender: news-service@newcom.kiae.su Reply-To: ache@astral.msk.su Keywords: offset partition pcfs Lines: 42 Hi, I found this bug when I try pcfs. wd.c driver don't compute partition offset correctly (it lost sectors). wd.c assumed, that any partition start only with cylinder boundary, but for MSDOS it is wrong. I looking for this bug in as.c driver, but everything is OK there. Fix are very simple and follows: *** wd.c.was Sun Nov 22 02:50:57 1992 --- wd.c Wed Nov 25 10:02:30 1992 *************** *** 397,408 **** lp = &du->dk_dd; secpertrk = lp->d_nsectors; secpercyl = lp->d_secpercyl; cylin = blknum / secpercyl; head = (blknum % secpercyl) / secpertrk; sector = blknum % secpertrk; - if ((du->dk_flags & DKFL_BSDLABEL) != 0 && wdpart(bp->b_dev) != WDRAW) - cylin += lp->d_partitions[wdpart(bp->b_dev)].p_offset - / secpercyl; /* * See if the current block is in the bad block list. --- 397,407 ---- lp = &du->dk_dd; secpertrk = lp->d_nsectors; secpercyl = lp->d_secpercyl; + if ((du->dk_flags & DKFL_BSDLABEL) != 0 && wdpart(bp->b_dev) != WDRAW) + blknum += lp->d_partitions[wdpart(bp->b_dev)].p_offset; cylin = blknum / secpercyl; head = (blknum % secpercyl) / secpertrk; sector = blknum % secpertrk; /* * See if the current block is in the bad block list. -- In-This-Life: Andrew A. Chernov | "Hay mas dicha, mas contento Internet: ache@astral.msk.su | "Que adorar una hermosura Organization: The RELCOM Corp., | "Brujuleada entre los lejos Moscow, Russia | "De lo imposible?!" (Calderon)