Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Feb 1995 11:50:00 -0500 (EST)
From:      Mark Hittinger <bugs@warlock.win.net>
To:        freebsd-hackers@FreeBSD.org
Subject:   re: long DAT tape rewinds bit spray your disks
Message-ID:  <199502161650.LAA00531@warlock.win.net>

next in thread | raw e-mail | index | archive | help

Jordan I had no problems with DAT tape rewind this morning.  Below are diffs of
what I changed in my kernel.  Everything behaved like it should have, and no
disks got bit sprayed!

These adjustments are against the 2-10 snapshot sources.  I have just increased
some of the timeouts and touched up a few possibly cosmetic things.  

I tried to think of why a short rewind timeout would be usefull in st.c but 
couldn't come up with an important reason.  Anybody tell me if you know why
this 5 second thing was there.

I still have a reboot problem where the scsi_test_unit_ready call will hang
about half the time if there is no media in the DAT drive.  I get the printf
with the density code (x13) and it stops.  I am sure the timeout here is
really long so describing it as a hang is probably misleading.  I think I
will play with some combination of a shorter timeout there with a reset and
re-sense mode attempt.

Remember it is the second "abort timeout" within BT742A that bit sprays
your disk.  I always survived the first one.  If the rewind completed before
the second "abort timeout" then everything was ok.  I did not get any
"abort timeout" messages this morning.  Before they happened very quickly
and I suspected the "int count" might be a short.

sys/scsi/st.c
-------------
1831c1831
< 		immed ? 5000 : 300000,	/* 5 sec or 5 min */
---
> 		300000,      /* msh 2/15/95 always use 5 min */

sys/i386/isa/bt742a.c
---------------------
1580c1580
< 	int	count = xs->timeout;
---
> 	u_int32	count = xs->timeout;   /* msh use uns-long 2/15/95 */
1611,1612c1611,1613
< 		untimeout(bt_timeout, (caddr_t)ccb);
< 		count = 2000;
---
> /*		untimeout(bt_timeout, (caddr_t)ccb); msh 2/15/95 done in
>                                                      bt_timeout */
> 		count = 5000;       /* msh 2/15/95 give it more time */
1690c1691
< 		timeout(bt_timeout, (caddr_t)ccb, 2 * hz);
---
> 		timeout(bt_timeout, (caddr_t)ccb, 300 * hz); /* msh more time */


Fun,

Mark Hittinger
bugs@win.net



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