* [PATCH 06/15] qla4xxx: Do not wait for the outstanding commands to complete @ 2010-10-07 5:49 Vikas Chaudhary 2010-10-08 2:46 ` Mike Christie 0 siblings, 1 reply; 6+ messages in thread From: Vikas Chaudhary @ 2010-10-07 5:49 UTC (permalink / raw) To: James.Bottomley@suse.de, linux-scsi@vger.kernel.org Cc: Nilesh Javali, Vikas Chaudhary, Ravi Anand From: Nilesh Javali <nilesh.javali@qlogic.com> Do not wait for the outstanding commands to complete in case of firmware hang. Signed-off-by: Nilesh Javali <nilesh.javali@qlogic.com> Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com> Signed-off-by: Ravi Anand <ravi.anand@qlogic.com> --- drivers/scsi/qla4xxx/ql4_os.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c index 56962e5..a6455fb 100644 --- a/drivers/scsi/qla4xxx/ql4_os.c +++ b/drivers/scsi/qla4xxx/ql4_os.c @@ -1102,7 +1102,8 @@ static int qla4xxx_recover_adapter(struct scsi_qla_host *ha) ha->host_no, __func__)); status = ha->isp_ops->reset_firmware(ha); if (status == QLA_SUCCESS) { - qla4xxx_cmd_wait(ha); + if (!test_bit(AF_FW_RECOVERY, &ha->flags)) + qla4xxx_cmd_wait(ha); ha->isp_ops->disable_intrs(ha); qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS); qla4xxx_abort_active_cmds(ha, DID_RESET << 16); @@ -1119,7 +1120,8 @@ static int qla4xxx_recover_adapter(struct scsi_qla_host *ha) * or if stop_firmware fails for ISP-82xx. * This is the default case for ISP-4xxx */ if (!is_qla8022(ha) || reset_chip) { - qla4xxx_cmd_wait(ha); + if (!test_bit(AF_FW_RECOVERY, &ha->flags)) + qla4xxx_cmd_wait(ha); qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS); qla4xxx_abort_active_cmds(ha, DID_RESET << 16); DEBUG2(ql4_printk(KERN_INFO, ha, -- 1.6.6 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 06/15] qla4xxx: Do not wait for the outstanding commands to complete 2010-10-07 5:49 [PATCH 06/15] qla4xxx: Do not wait for the outstanding commands to complete Vikas Chaudhary @ 2010-10-08 2:46 ` Mike Christie 2010-10-11 9:24 ` Vikas Chaudhary 0 siblings, 1 reply; 6+ messages in thread From: Mike Christie @ 2010-10-08 2:46 UTC (permalink / raw) To: Vikas Chaudhary Cc: James.Bottomley@suse.de, linux-scsi@vger.kernel.org, Nilesh Javali, Ravi Anand [-- Attachment #1: Type: text/plain, Size: 2380 bytes --] On 10/07/2010 12:49 AM, Vikas Chaudhary wrote: > From: Nilesh Javali<nilesh.javali@qlogic.com> > > Do not wait for the outstanding commands to complete in case > of firmware hang. > > Signed-off-by: Nilesh Javali<nilesh.javali@qlogic.com> > Signed-off-by: Vikas Chaudhary<vikas.chaudhary@qlogic.com> > Signed-off-by: Ravi Anand<ravi.anand@qlogic.com> > --- > drivers/scsi/qla4xxx/ql4_os.c | 6 ++++-- > 1 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c > index 56962e5..a6455fb 100644 > --- a/drivers/scsi/qla4xxx/ql4_os.c > +++ b/drivers/scsi/qla4xxx/ql4_os.c > @@ -1102,7 +1102,8 @@ static int qla4xxx_recover_adapter(struct scsi_qla_host *ha) > ha->host_no, __func__)); > status = ha->isp_ops->reset_firmware(ha); > if (status == QLA_SUCCESS) { > - qla4xxx_cmd_wait(ha); > + if (!test_bit(AF_FW_RECOVERY,&ha->flags)) > + qla4xxx_cmd_wait(ha); > ha->isp_ops->disable_intrs(ha); > qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS); > qla4xxx_abort_active_cmds(ha, DID_RESET<< 16); > @@ -1119,7 +1120,8 @@ static int qla4xxx_recover_adapter(struct scsi_qla_host *ha) > * or if stop_firmware fails for ISP-82xx. > * This is the default case for ISP-4xxx */ > if (!is_qla8022(ha) || reset_chip) { > - qla4xxx_cmd_wait(ha); > + if (!test_bit(AF_FW_RECOVERY,&ha->flags)) > + qla4xxx_cmd_wait(ha); > qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS); > qla4xxx_abort_active_cmds(ha, DID_RESET<< 16); > DEBUG2(ql4_printk(KERN_INFO, ha, If we go from qla4xxx_eh_host_reset->qla4xxx_recover_adapter and you do not wait, is is possible for the driver to be accessing scsi commands after qla4xxx_eh_host_reset returns? If so I think there is a problem where the scsi eh will fail or retry the cmd so the memory for the scsi command could be reallocated/freed. On a related note, has qla4xxx_eh_host_reset ever returned SUCCESS? I think there is a problem in qla4xxx_cmd_wait when the scsi eh is running. At that time blk_finish_request->blk_queue_end_tag is not going to be run, because if the driver were to call scsi_done the block layer would do blk_complete_request and the blk_mark_rq_complete would fail (this is because the scsi/block eh timeout could has already marked it complete). I think you need the attached patch. [-- Attachment #2: qla4xxx-fix-cmd-wait-cmd-check.patch --] [-- Type: text/plain, Size: 1260 bytes --] qla4xxx: Fix cmd check in qla4xxx_cmd_wait If the command has timedout then the block layer has called blk_mark_rq_complete. If qla4xxx_cmd_wait is then called from qla4xxx_eh_host_reset, we will always fail, because if the driver calls scsi_done then the the block layer will fail at blk_complete_request's blk_mark_rq_complete call instead of calling the normal completion path including the function, blk_queue_end_tag, which releases the tag. Patch is not tested. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c index 370d40f..97f6d68 100644 --- a/drivers/scsi/qla4xxx/ql4_os.c +++ b/drivers/scsi/qla4xxx/ql4_os.c @@ -885,7 +885,13 @@ static int qla4xxx_cmd_wait(struct scsi_qla_host *ha) /* Find a command that hasn't completed. */ for (index = 0; index < ha->host->can_queue; index++) { cmd = scsi_host_find_tag(ha->host, index); - if (cmd != NULL) + /* + * We cannot just check if the index is valid, + * becase if we are run from the scsi eh, then + * the scsi/block layer is going to prevent + * the tag from being released. + */ + if (cmd != NULL && CMD_SP(cmd)) break; } spin_unlock_irqrestore(&ha->hardware_lock, flags); ^ permalink raw reply related [flat|nested] 6+ messages in thread
* RE: [PATCH 06/15] qla4xxx: Do not wait for the outstanding commands to complete 2010-10-08 2:46 ` Mike Christie @ 2010-10-11 9:24 ` Vikas Chaudhary 2010-10-25 19:56 ` James Bottomley 0 siblings, 1 reply; 6+ messages in thread From: Vikas Chaudhary @ 2010-10-11 9:24 UTC (permalink / raw) To: Mike Christie Cc: James.Bottomley@suse.de, linux-scsi@vger.kernel.org, Nilesh Javali, Ravi Anand >-----Original Message----- >From: Mike Christie [mailto:michaelc@cs.wisc.edu] >Sent: Friday, October 08, 2010 8:16 AM >To: Vikas Chaudhary >Cc: James.Bottomley@suse.de; linux-scsi@vger.kernel.org; Nilesh Javali; >Ravi Anand >Subject: Re: [PATCH 06/15] qla4xxx: Do not wait for the outstanding >commands to complete > >On 10/07/2010 12:49 AM, Vikas Chaudhary wrote: >> From: Nilesh Javali<nilesh.javali@qlogic.com> >> >> Do not wait for the outstanding commands to complete in case of >> firmware hang. >> >> Signed-off-by: Nilesh Javali<nilesh.javali@qlogic.com> >> Signed-off-by: Vikas Chaudhary<vikas.chaudhary@qlogic.com> >> Signed-off-by: Ravi Anand<ravi.anand@qlogic.com> >> --- >> drivers/scsi/qla4xxx/ql4_os.c | 6 ++++-- >> 1 files changed, 4 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/scsi/qla4xxx/ql4_os.c >> b/drivers/scsi/qla4xxx/ql4_os.c index 56962e5..a6455fb 100644 >> --- a/drivers/scsi/qla4xxx/ql4_os.c >> +++ b/drivers/scsi/qla4xxx/ql4_os.c >> @@ -1102,7 +1102,8 @@ static int qla4xxx_recover_adapter(struct >scsi_qla_host *ha) >> ha->host_no, __func__)); >> status = ha->isp_ops->reset_firmware(ha); >> if (status == QLA_SUCCESS) { >> - qla4xxx_cmd_wait(ha); >> + if (!test_bit(AF_FW_RECOVERY,&ha->flags)) >> + qla4xxx_cmd_wait(ha); >> ha->isp_ops->disable_intrs(ha); >> qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS); >> qla4xxx_abort_active_cmds(ha, DID_RESET<< 16); @@ - >1119,7 >> +1120,8 @@ static int qla4xxx_recover_adapter(struct scsi_qla_host *ha) >> * or if stop_firmware fails for ISP-82xx. >> * This is the default case for ISP-4xxx */ >> if (!is_qla8022(ha) || reset_chip) { >> - qla4xxx_cmd_wait(ha); >> + if (!test_bit(AF_FW_RECOVERY,&ha->flags)) >> + qla4xxx_cmd_wait(ha); >> qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS); >> qla4xxx_abort_active_cmds(ha, DID_RESET<< 16); >> DEBUG2(ql4_printk(KERN_INFO, ha, > >If we go from qla4xxx_eh_host_reset->qla4xxx_recover_adapter and you do not >wait, is is possible for the driver to be accessing scsi commands after >qla4xxx_eh_host_reset returns? If so I think there is a problem where the >scsi eh will fail or retry the cmd so the memory for the scsi command could >be reallocated/freed. > We do not access command after qla4xxx_eh_host_reset returns. >On a related note, has qla4xxx_eh_host_reset ever returned SUCCESS? I think >there is a problem in qla4xxx_cmd_wait when the scsi eh is running. At that >time blk_finish_request->blk_queue_end_tag is not going to be run, because >if the driver were to call scsi_done the block layer would do >blk_complete_request and the blk_mark_rq_complete would fail (this is >because the scsi/block eh timeout could has already marked it complete). > >I think you need the attached patch. Yes. We need attached patch. I am doing some testing with this patch. I will send out this patch for inclusion soon. ^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH 06/15] qla4xxx: Do not wait for the outstanding commands to complete 2010-10-11 9:24 ` Vikas Chaudhary @ 2010-10-25 19:56 ` James Bottomley 2010-10-25 23:22 ` Ravi Anand 2010-10-26 12:44 ` Vikas Chaudhary 0 siblings, 2 replies; 6+ messages in thread From: James Bottomley @ 2010-10-25 19:56 UTC (permalink / raw) To: Vikas Chaudhary Cc: Mike Christie, linux-scsi@vger.kernel.org, Nilesh Javali, Ravi Anand On Mon, 2010-10-11 at 02:24 -0700, Vikas Chaudhary wrote: > >-----Original Message----- > >From: Mike Christie [mailto:michaelc@cs.wisc.edu] > >Sent: Friday, October 08, 2010 8:16 AM > >To: Vikas Chaudhary > >Cc: James.Bottomley@suse.de; linux-scsi@vger.kernel.org; Nilesh Javali; > >Ravi Anand > >Subject: Re: [PATCH 06/15] qla4xxx: Do not wait for the outstanding > >commands to complete > > > >On 10/07/2010 12:49 AM, Vikas Chaudhary wrote: > >> From: Nilesh Javali<nilesh.javali@qlogic.com> > >> > >> Do not wait for the outstanding commands to complete in case of > >> firmware hang. > >> > >> Signed-off-by: Nilesh Javali<nilesh.javali@qlogic.com> > >> Signed-off-by: Vikas Chaudhary<vikas.chaudhary@qlogic.com> > >> Signed-off-by: Ravi Anand<ravi.anand@qlogic.com> > >> --- > >> drivers/scsi/qla4xxx/ql4_os.c | 6 ++++-- > >> 1 files changed, 4 insertions(+), 2 deletions(-) > >> > >> diff --git a/drivers/scsi/qla4xxx/ql4_os.c > >> b/drivers/scsi/qla4xxx/ql4_os.c index 56962e5..a6455fb 100644 > >> --- a/drivers/scsi/qla4xxx/ql4_os.c > >> +++ b/drivers/scsi/qla4xxx/ql4_os.c > >> @@ -1102,7 +1102,8 @@ static int qla4xxx_recover_adapter(struct > >scsi_qla_host *ha) > >> ha->host_no, __func__)); > >> status = ha->isp_ops->reset_firmware(ha); > >> if (status == QLA_SUCCESS) { > >> - qla4xxx_cmd_wait(ha); > >> + if (!test_bit(AF_FW_RECOVERY,&ha->flags)) > >> + qla4xxx_cmd_wait(ha); > >> ha->isp_ops->disable_intrs(ha); > >> qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS); > >> qla4xxx_abort_active_cmds(ha, DID_RESET<< 16); @@ - > >1119,7 > >> +1120,8 @@ static int qla4xxx_recover_adapter(struct scsi_qla_host *ha) > >> * or if stop_firmware fails for ISP-82xx. > >> * This is the default case for ISP-4xxx */ > >> if (!is_qla8022(ha) || reset_chip) { > >> - qla4xxx_cmd_wait(ha); > >> + if (!test_bit(AF_FW_RECOVERY,&ha->flags)) > >> + qla4xxx_cmd_wait(ha); > >> qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS); > >> qla4xxx_abort_active_cmds(ha, DID_RESET<< 16); > >> DEBUG2(ql4_printk(KERN_INFO, ha, > > > >If we go from qla4xxx_eh_host_reset->qla4xxx_recover_adapter and you do not > >wait, is is possible for the driver to be accessing scsi commands after > >qla4xxx_eh_host_reset returns? If so I think there is a problem where the > >scsi eh will fail or retry the cmd so the memory for the scsi command could > >be reallocated/freed. > > > > We do not access command after qla4xxx_eh_host_reset returns. > > >On a related note, has qla4xxx_eh_host_reset ever returned SUCCESS? I think > >there is a problem in qla4xxx_cmd_wait when the scsi eh is running. At that > >time blk_finish_request->blk_queue_end_tag is not going to be run, because > >if the driver were to call scsi_done the block layer would do > >blk_complete_request and the blk_mark_rq_complete would fail (this is > >because the scsi/block eh timeout could has already marked it complete). > > > >I think you need the attached patch. > > Yes. We need attached patch. I am doing some testing with this patch. > I will send out this patch for inclusion soon. Is there an update on this? It would be nice to include it before the merge window closes. James ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 06/15] qla4xxx: Do not wait for the outstanding commands to complete 2010-10-25 19:56 ` James Bottomley @ 2010-10-25 23:22 ` Ravi Anand 2010-10-26 12:44 ` Vikas Chaudhary 1 sibling, 0 replies; 6+ messages in thread From: Ravi Anand @ 2010-10-25 23:22 UTC (permalink / raw) To: James Bottomley Cc: Vikas Chaudhary, Mike Christie, linux-scsi@vger.kernel.org, Nilesh Javali On Oct 25, 2010, at 12:56 PM, James Bottomley wrote: > On Mon, 2010-10-11 at 02:24 -0700, Vikas Chaudhary wrote: >>> -----Original Message----- >>> From: Mike Christie [mailto:michaelc@cs.wisc.edu] >>> Sent: Friday, October 08, 2010 8:16 AM >>> To: Vikas Chaudhary >>> Cc: James.Bottomley@suse.de; linux-scsi@vger.kernel.org; Nilesh Javali; >>> Ravi Anand >>> Subject: Re: [PATCH 06/15] qla4xxx: Do not wait for the outstanding >>> commands to complete >>> >>> On 10/07/2010 12:49 AM, Vikas Chaudhary wrote: >>>> From: Nilesh Javali<nilesh.javali@qlogic.com> >>>> >>>> Do not wait for the outstanding commands to complete in case of >>>> firmware hang. >>>> >>>> Signed-off-by: Nilesh Javali<nilesh.javali@qlogic.com> >>>> Signed-off-by: Vikas Chaudhary<vikas.chaudhary@qlogic.com> >>>> Signed-off-by: Ravi Anand<ravi.anand@qlogic.com> >>>> --- >>>> drivers/scsi/qla4xxx/ql4_os.c | 6 ++++-- >>>> 1 files changed, 4 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/drivers/scsi/qla4xxx/ql4_os.c >>>> b/drivers/scsi/qla4xxx/ql4_os.c index 56962e5..a6455fb 100644 >>>> --- a/drivers/scsi/qla4xxx/ql4_os.c >>>> +++ b/drivers/scsi/qla4xxx/ql4_os.c >>>> @@ -1102,7 +1102,8 @@ static int qla4xxx_recover_adapter(struct >>> scsi_qla_host *ha) >>>> ha->host_no, __func__)); >>>> status = ha->isp_ops->reset_firmware(ha); >>>> if (status == QLA_SUCCESS) { >>>> - qla4xxx_cmd_wait(ha); >>>> + if (!test_bit(AF_FW_RECOVERY,&ha->flags)) >>>> + qla4xxx_cmd_wait(ha); >>>> ha->isp_ops->disable_intrs(ha); >>>> qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS); >>>> qla4xxx_abort_active_cmds(ha, DID_RESET<< 16); @@ - >>> 1119,7 >>>> +1120,8 @@ static int qla4xxx_recover_adapter(struct scsi_qla_host *ha) >>>> * or if stop_firmware fails for ISP-82xx. >>>> * This is the default case for ISP-4xxx */ >>>> if (!is_qla8022(ha) || reset_chip) { >>>> - qla4xxx_cmd_wait(ha); >>>> + if (!test_bit(AF_FW_RECOVERY,&ha->flags)) >>>> + qla4xxx_cmd_wait(ha); >>>> qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS); >>>> qla4xxx_abort_active_cmds(ha, DID_RESET<< 16); >>>> DEBUG2(ql4_printk(KERN_INFO, ha, >>> >>> If we go from qla4xxx_eh_host_reset->qla4xxx_recover_adapter and you do not >>> wait, is is possible for the driver to be accessing scsi commands after >>> qla4xxx_eh_host_reset returns? If so I think there is a problem where the >>> scsi eh will fail or retry the cmd so the memory for the scsi command could >>> be reallocated/freed. >>> >> >> We do not access command after qla4xxx_eh_host_reset returns. >> >>> On a related note, has qla4xxx_eh_host_reset ever returned SUCCESS? I think >>> there is a problem in qla4xxx_cmd_wait when the scsi eh is running. At that >>> time blk_finish_request->blk_queue_end_tag is not going to be run, because >>> if the driver were to call scsi_done the block layer would do >>> blk_complete_request and the blk_mark_rq_complete would fail (this is >>> because the scsi/block eh timeout could has already marked it complete). >>> >>> I think you need the attached patch. >> >> Yes. We need attached patch. I am doing some testing with this patch. >> I will send out this patch for inclusion soon. > > Is there an update on this? It would be nice to include it before the > merge window closes. > Make sense. We will close the loop internally and will have an update. Thanks ravi ^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH 06/15] qla4xxx: Do not wait for the outstanding commands to complete 2010-10-25 19:56 ` James Bottomley 2010-10-25 23:22 ` Ravi Anand @ 2010-10-26 12:44 ` Vikas Chaudhary 1 sibling, 0 replies; 6+ messages in thread From: Vikas Chaudhary @ 2010-10-26 12:44 UTC (permalink / raw) To: James Bottomley Cc: Mike Christie, linux-scsi@vger.kernel.org, Nilesh Javali, Ravi Anand >-----Original Message----- >From: James Bottomley [mailto:James.Bottomley@suse.de] >Sent: Tuesday, October 26, 2010 1:27 AM >To: Vikas Chaudhary >Cc: Mike Christie; linux-scsi@vger.kernel.org; Nilesh Javali; Ravi Anand >Subject: RE: [PATCH 06/15] qla4xxx: Do not wait for the outstanding >commands to complete > >On Mon, 2010-10-11 at 02:24 -0700, Vikas Chaudhary wrote: >> >-----Original Message----- >> >From: Mike Christie [mailto:michaelc@cs.wisc.edu] >> >Sent: Friday, October 08, 2010 8:16 AM >> >To: Vikas Chaudhary >> >Cc: James.Bottomley@suse.de; linux-scsi@vger.kernel.org; Nilesh Javali; >> >Ravi Anand >> >Subject: Re: [PATCH 06/15] qla4xxx: Do not wait for the outstanding >> >commands to complete >> > >> >On 10/07/2010 12:49 AM, Vikas Chaudhary wrote: >> >> From: Nilesh Javali<nilesh.javali@qlogic.com> >> >> >> >> Do not wait for the outstanding commands to complete in case of >> >> firmware hang. >> >> >> >> Signed-off-by: Nilesh Javali<nilesh.javali@qlogic.com> >> >> Signed-off-by: Vikas Chaudhary<vikas.chaudhary@qlogic.com> >> >> Signed-off-by: Ravi Anand<ravi.anand@qlogic.com> >> >> --- >> >> drivers/scsi/qla4xxx/ql4_os.c | 6 ++++-- >> >> 1 files changed, 4 insertions(+), 2 deletions(-) >> >> >> >> diff --git a/drivers/scsi/qla4xxx/ql4_os.c >> >> b/drivers/scsi/qla4xxx/ql4_os.c index 56962e5..a6455fb 100644 >> >> --- a/drivers/scsi/qla4xxx/ql4_os.c >> >> +++ b/drivers/scsi/qla4xxx/ql4_os.c >> >> @@ -1102,7 +1102,8 @@ static int qla4xxx_recover_adapter(struct >> >scsi_qla_host *ha) >> >> ha->host_no, __func__)); >> >> status = ha->isp_ops->reset_firmware(ha); >> >> if (status == QLA_SUCCESS) { >> >> - qla4xxx_cmd_wait(ha); >> >> + if (!test_bit(AF_FW_RECOVERY,&ha->flags)) >> >> + qla4xxx_cmd_wait(ha); >> >> ha->isp_ops->disable_intrs(ha); >> >> qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS); >> >> qla4xxx_abort_active_cmds(ha, DID_RESET<< 16); @@ >- >> >1119,7 >> >> +1120,8 @@ static int qla4xxx_recover_adapter(struct scsi_qla_host >*ha) >> >> * or if stop_firmware fails for ISP-82xx. >> >> * This is the default case for ISP-4xxx */ >> >> if (!is_qla8022(ha) || reset_chip) { >> >> - qla4xxx_cmd_wait(ha); >> >> + if (!test_bit(AF_FW_RECOVERY,&ha->flags)) >> >> + qla4xxx_cmd_wait(ha); >> >> qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS); >> >> qla4xxx_abort_active_cmds(ha, DID_RESET<< 16); >> >> DEBUG2(ql4_printk(KERN_INFO, ha, >> > >> >If we go from qla4xxx_eh_host_reset->qla4xxx_recover_adapter and you do >not >> >wait, is is possible for the driver to be accessing scsi commands after >> >qla4xxx_eh_host_reset returns? If so I think there is a problem where >the >> >scsi eh will fail or retry the cmd so the memory for the scsi command >could >> >be reallocated/freed. >> > >> >> We do not access command after qla4xxx_eh_host_reset returns. >> >> >On a related note, has qla4xxx_eh_host_reset ever returned SUCCESS? I >think >> >there is a problem in qla4xxx_cmd_wait when the scsi eh is running. At >that >> >time blk_finish_request->blk_queue_end_tag is not going to be run, >because >> >if the driver were to call scsi_done the block layer would do >> >blk_complete_request and the blk_mark_rq_complete would fail (this is >> >because the scsi/block eh timeout could has already marked it complete). >> > >> >I think you need the attached patch. >> >> Yes. We need attached patch. I am doing some testing with this patch. >> I will send out this patch for inclusion soon. > >Is there an update on this? It would be nice to include it before the >merge window closes. > I am sending update patch in next email. Thanks, Vikas. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-10-26 12:44 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-10-07 5:49 [PATCH 06/15] qla4xxx: Do not wait for the outstanding commands to complete Vikas Chaudhary 2010-10-08 2:46 ` Mike Christie 2010-10-11 9:24 ` Vikas Chaudhary 2010-10-25 19:56 ` James Bottomley 2010-10-25 23:22 ` Ravi Anand 2010-10-26 12:44 ` Vikas Chaudhary
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox