Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 12 Oct 1995 11:33:36 -0700 (PDT)
From:      Julian Elischer <julian@ref.tfs.com>
To:        dufault@hda.com (Peter Dufault)
Cc:        julian@freefall.freebsd.org, CVS-commiters@freefall.freebsd.org, cvs-sys@freefall.freebsd.org
Subject:   Re: cvs commit: src/sys/scsi sd.c st.c
Message-ID:  <199510121833.LAA05479@ref.tfs.com>
In-Reply-To: <199510120945.FAA02078@hda.com> from "Peter Dufault" at Oct 12, 95 05:45:10 am

next in thread | previous in thread | raw e-mail | index | archive | help
> 
> > 
> > julian      95/10/11 19:02:06
> > 
> >   Modified:    sys/scsi  sd.c st.c
> >   Log:
> >   Ack!
> >   sometime around 1.51, the check for minphys dissappeared out of
> >   transfers for disks..
> >   we weren't hecking that the adapter could handle a transfer of
> >   the size we were requesting..
> >   Peter!?
> >    :)
> 
> (Yeah, change scsi_read and scsi_write.  Next time I'll look at
> the source before responding.)
> 
> The SCSI drivers use rawread and rawrite, which go through
> scsi_strategy and so should be calling scsi_minphys.  There may be
> a bug, but IMHO you addressed it in the wrong place.
> 
> --
> Peter Dufault               Real Time Machine Control and Simulation
> HD Associates, Inc.         Voice: 508 433 6936
> dufault@hda.com             Fax:   508 433 5267
> 

no the call for st.c needs to know if it's a variable of fixed tape,
because chopping a transfer in a variable tape is a nono but doing it on a
fixed-block tape is ok.. it has to be done AFTER physio, so that physio
can loop and do the rest of the transfer on a second try..
thus it must be in a strategy routine.. so by logic it must be in st_strategy.

As for sd.c
from the way I read it last night, scsi_strategy wasn't called
for the disk driver.  looking at it again, I see that conf.c references 
sdstrategy rather than sd_strategy. so sdstrategy calls scsi_strategy
which calls  scsi_minphys and sd_strategy. 

ok so if it was getting called, why are we getting all these
errors suddenly? (the reason I was in there looking is because people
are seeing  the "more than 33 DMA segs" errors from things such as dump
and newfs that do large io operations on raw devices.

of course I can't make it happen myself :)

the tape version won't work if physio is already called, and I notice that
physio itself does a minphys to 64K
(this needs further investigation)

I'll correct the commits today.

julian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199510121833.LAA05479>