From: Mike Christie <michaelc@cs.wisc.edu>
To: Hannes Reinecke <hare@suse.de>
Cc: James Bottomley <James.Bottomley@suse.de>, linux-scsi@vger.kernel.org
Subject: Re: [PATCH] qla2xxx: Drop srb reference before waiting for completion
Date: Fri, 01 Oct 2010 16:10:21 -0500 [thread overview]
Message-ID: <4CA64E3D.7080207@cs.wisc.edu> (raw)
In-Reply-To: <4CA64C35.6010506@cs.wisc.edu>
[-- Attachment #1: Type: text/plain, Size: 1219 bytes --]
On 10/01/2010 04:01 PM, Mike Christie wrote:
> On 10/01/2010 07:18 AM, Hannes Reinecke wrote:
>>
>> This patch fixes a regression introduced by commit
>> 083a469db4ecf3b286a96b5b722c37fc1affe0be
>>
>> qla2xxx_eh_wait_on_command() is waiting for an srb to
>> complete, which will never happen as the routine took
>> a reference to the srb previously and will only drop it
>> after this function. So every command abort will fail.
>>
>> Signed-off-by: Hannes Reinecke<hare@suse.de>
>> Cc: Andrew Vasquez<andrew.vasquez@qlogic.com>
>>
>> diff --git a/drivers/scsi/qla2xxx/qla_os.c
>> b/drivers/scsi/qla2xxx/qla_os.c
>> index 1e4bff6..0af7549 100644
>> --- a/drivers/scsi/qla2xxx/qla_os.c
>> +++ b/drivers/scsi/qla2xxx/qla_os.c
>> @@ -883,6 +883,9 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd)
>> }
>> spin_unlock_irqrestore(&ha->hardware_lock, flags);
>>
>> + if (got_ref)
>> + qla2x00_sp_compl(ha, sp);
>> +
>
> You can just get rid of got_ref, because if you just move the compl call
> up a little more you know that in that code path we always get a ref.
> And there is no need to hold the ref to where it is above. See attached
> patch.
>
Sorry. Last patch had some other iscsi dev loss stuff in there. See this
patch.
[-- Attachment #2: qla2xxx-rm-got-ref2.patch --]
[-- Type: text/plain, Size: 1517 bytes --]
qla2xxx: Drop srb reference before waiting for completion
This patch fixes a regression introduced by commit
083a469db4ecf3b286a96b5b722c37fc1affe0be
qla2xxx_eh_wait_on_command() is waiting for an srb to
complete, which will never happen as the routine took
a reference to the srb previously and will only drop it
after this function. So every command abort will fail.
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index bdd53f0..6ea314f 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -832,7 +832,6 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd)
struct qla_hw_data *ha = vha->hw;
struct req_que *req = vha->req;
srb_t *spt;
- int got_ref = 0;
fc_block_scsi_eh(cmd);
@@ -866,7 +865,6 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd)
/* Get a reference to the sp and drop the lock.*/
sp_get(sp);
- got_ref++;
spin_unlock_irqrestore(&ha->hardware_lock, flags);
if (ha->isp_ops->abort_command(sp)) {
@@ -879,6 +877,7 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd)
wait = 1;
}
spin_lock_irqsave(&ha->hardware_lock, flags);
+ qla2x00_sp_compl(ha, sp);
break;
}
spin_unlock_irqrestore(&ha->hardware_lock, flags);
@@ -893,9 +892,6 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd)
}
}
- if (got_ref)
- qla2x00_sp_compl(ha, sp);
-
qla_printk(KERN_INFO, ha,
"scsi(%ld:%d:%d): Abort command issued -- %d %lx %x.\n",
vha->host_no, id, lun, wait, serial, ret);
next prev parent reply other threads:[~2010-10-01 21:04 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-01 12:18 [PATCH] qla2xxx: Drop srb reference before waiting for completion Hannes Reinecke
2010-10-01 17:02 ` Giridhar Malavali
2010-10-01 21:01 ` Mike Christie
2010-10-01 21:10 ` Mike Christie [this message]
2010-10-05 15:42 ` Giridhar Malavali
2010-10-05 18:18 ` Mike Christie
2010-10-08 19:01 ` Giridhar Malavali
2010-10-08 21:44 ` Mike Christie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4CA64E3D.7080207@cs.wisc.edu \
--to=michaelc@cs.wisc.edu \
--cc=James.Bottomley@suse.de \
--cc=hare@suse.de \
--cc=linux-scsi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.