From mboxrd@z Thu Jan 1 00:00:00 1970 From: James Bottomley Subject: Re: 2.5.63/64 do not boot: loop in scsi_error Date: 06 Mar 2003 11:21:40 -0600 Sender: linux-scsi-owner@vger.kernel.org Message-ID: <1046971303.1998.23.camel@mulgrave> References: <20030306064921.GA1425@beaverton.ibm.com> <20030306083054.GB1503@beaverton.ibm.com> <20030306085506.GB2222@beaverton.ibm.com> <20030306091824.GA2577@beaverton.ibm.com> <1046968304.1746.20.camel@mulgrave> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Id: linux-scsi@vger.kernel.org To: Zwane Mwaikambo Cc: Mike Anderson , Andries.Brouwer@cwi.nl, torvalds@transmeta.com, linux-kernel@vger.kernel.org, SCSI Mailing List On Thu, 2003-03-06 at 11:15, Zwane Mwaikambo wrote: > On Thu, 6 Mar 2003, James Bottomley wrote: > > > This log implies the error handling finished after the BDR. That looks > > like the system doesn't have Mike's latest patch for the logic reversal > > problem in scsi_eh_ready_devs, could you check this? > > static void scsi_eh_ready_devs(struct Scsi_Host *shost, > struct list_head *work_q, > struct list_head *done_q) > { > if (scsi_eh_bus_device_reset(shost, work_q, done_q)) > if (scsi_eh_bus_reset(shost, work_q, done_q)) > if (scsi_eh_host_reset(work_q, done_q)) > scsi_eh_offline_sdevs(work_q, done_q); > } > > That is what i currently have, i'll try a boot with; > > - if (scsi_eh_bus_reset(shost, work_q, done_q)) > + if (!scsi_eh_bus_reset(shost, work_q, done_q)) > > Thanks, > Zwane Actually, all three if's need nots in front: diff -Nru a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c --- a/drivers/scsi/scsi_error.c Thu Mar 6 11:21:22 2003 +++ b/drivers/scsi/scsi_error.c Thu Mar 6 11:21:22 2003 @@ -1490,9 +1490,9 @@ struct list_head *work_q, struct list_head *done_q) { - if (scsi_eh_bus_device_reset(shost, work_q, done_q)) - if (scsi_eh_bus_reset(shost, work_q, done_q)) - if (scsi_eh_host_reset(work_q, done_q)) + if (!scsi_eh_bus_device_reset(shost, work_q, done_q)) + if (!scsi_eh_bus_reset(shost, work_q, done_q)) + if (!scsi_eh_host_reset(work_q, done_q)) scsi_eh_offline_sdevs(work_q, done_q); }