NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/38643: [dM] st tape drive loses data
On Mon, Sep 01, 2008 at 08:06:58PM +0200, Havard Eidnes wrote:
> I don't have any suggestions for a fix, but I may have an
> observation (which I'm sure you've thought of yourself as well,
> but it's good to have it written down anyway).
I think I've found the problem, and if so this is the fix:
Index: st.c
===================================================================
RCS file: /cvsroot/src/sys/dev/scsipi/st.c,v
retrieving revision 1.205
diff -u -p -r1.205 st.c
--- st.c 8 Jun 2008 18:18:34 -0000 1.205
+++ st.c 1 Sep 2008 18:24:12 -0000
@@ -1125,7 +1125,7 @@ done:
/*
* Correctly set the buf to indicate a completed xfer
*/
- bp->b_resid = bp->b_bcount;
+ bp->b_resid = 0;
biodone(bp);
return;
}
This has been this way ~forever, and AFAIK it's always been wrong, but
changes in kern_physio before 4.0 have changed the resulting behavior
so that it could easily be consistent with the observed phenomena.
There's also another maybe related issue: line 413 of kern_physio.c
1.87 has
/* uio->uio_offset = ps->ps_endoffset; */
which yamt added, commented out, when cleaning up some grossness prior
to 4.0. I am pretty sure it's why part of the data is getting skipped
over, and I think it should be uncommented. yamt?
On the other hand, I could be completely wrong here too...
--
David A. Holland
dholland%netbsd.org@localhost
Home |
Main Index |
Thread Index |
Old Index