Subject: Re: bufcache cancer in -current?
To: None <frank@wins.uva.nl, smd@ebone.net>
From: Sean Doran <smd@ebone.net>
List: current-users
Date: 05/24/2000 20:15:27
FWIW, I still get the problem with the latest Atlas-III firmware from
Quantum.
I did a quick-and-dirty hack below just for fun, and see this:
sd1(ahc2:6:0): queue full
smd: sc_link->active = 4; setting sc_link->openings to that - 1
sd1(ahc2:6:0): queue full
smd: sc_link->active = 3; setting sc_link->openings to that - 1
So far I haven't gone below ...openings = 2.
Maybe it should work like TCP with a divide-by-two response to
a queue_full and a periodic increase-by-one when things are normal
when sc_link->active reaches sc_link->openings?
However, the queue is full, there is still the current problem that
there is a bad write to the affected disk; in this case the
first one happened during "make obj" and the second happened
during the creation of a normal file. The system wasn't happy
at all about the bad directly; the bad file was merely corrupted.
Sean.
RCS file: /cvsroot/syssrc/sys/dev/ic/aic7xxx.c,v
retrieving revision 1.50
diff -u -r1.50 aic7xxx.c
--- aic7xxx.c 2000/05/23 03:50:12 1.50
+++ aic7xxx.c 2000/05/24 18:08:07
@@ -1883,6 +1883,11 @@
case SCSI_STATUS_QUEUE_FULL:
scsi_print_addr(xs->sc_link);
printf("queue full\n");
+ printf("smd: sc_link->active = %d; setting sc_link->open
ings to that - 1\n",
+ xs->sc_link->active);
+ xs->sc_link->openings -= 1;
+ if((int)xs->sc_link->openings < (int)0)
+ panic("smd: sc_link->openings underflow");
case SCSI_STATUS_BUSY:
/*
* Requeue any transactions that haven't been