home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.unix.bsd
- Path: sparky!uunet!mcsun!sunic!aun.uninett.no!barsoom!barsoom!tih
- From: tih@barsoom.nhh.no (Tom Ivar Helbekkmo)
- Subject: 386BSD: Better bad144 handling for my WD driver.
- Message-ID: <tih.715007389@barsoom>
- Sender: news@barsoom.nhh.no (USENET News System)
- Organization: Norwegian School of Economics
- Date: Fri, 28 Aug 1992 13:09:49 GMT
- Lines: 36
-
- For those of you who have picked up my modified wd driver and stuff
- from barsoom.nhh.no, here's a little change that should be put in
- there (and that's in the version now on barsoom):
-
- In wdstart(), where it scans for bad blocks, the scan through the
- bad block list is performed a bit too often -- I didn't consider
- the fact that wdstart() is called at interrupt-time for every
- sector in a multi-sector transfer. When this happens, the scan
- is not needed, and indeed can cause the driver to be too slow to
- handle the transfer properly, thus dropping into one sector per
- revolution mode. This is *slow*! The test at the top of the loop
- should be:
-
- #ifdef TIHBAD144
- /* Check for bad sectors if we have them, and not formatting */
- #ifdef B_FORMAT
- if ((du->dk_flags & DKFL_BADSECT) && !(bp->b_flags & B_FORMAT) &&
- ((du->dk_skip == 0) || (du->dk_flags & DKFL_SINGLE))) {
- #else
- if ((du->dk_flags & DKFL_BADSECT) &&
- ((du->dk_skip == 0) || (du->dk_flags & DKFL_SINGLE))) {
- #endif
-
- The point is, of course, that if du->dk_skip is nonzero, and we're
- not in single sector mode, then we've already checked these blocks.
-
- (I noticed this when I ran Jim Bevier's new bad144 with the -s
- option he added. The scan suddenly slowed to a crawl once it got
- past a bad track on one of my disks -- comparing with each of those
- 26 block numbers for each sector remaining in the transfer just took
- too much time... :-) Thanks, Jim -- good work!)
-
- -tih
- --
- Tom Ivar Helbekkmo, NHH, Bergen, Norway. Telephone: +47-5-959205
- Postmaster for domain nhh.no. Internet mail: tih@barsoom.nhh.no
-