From: Mike Anderson <andmike@linux.vnet.ibm.com>
To: Jens Axboe <jens.axboe@oracle.com>,
James Bottomley <James.Bottomley@suse.de>
Cc: dm-devel@redhat.com, linux-scsi@vger.kernel.org
Subject: block_abort_queue (blk_abort_request) racing with scsi_request_fn
Date: Tue, 11 May 2010 22:23:37 -0700 [thread overview]
Message-ID: <20100512052336.GB15240@linux.vnet.ibm.com> (raw)
I was looking at a dump from a weekend run and I believe I am seeing a
case where blk_abort_request through blk_abort_queue picked up a request
for timeout that scsi_request_fn decided not to start. This test was under
error injection.
I assume the case in scsi_request_fn this is hitting is that a request has
been put on the timeout_list with blk_start_request and then one of the
not_ready checks is hit and the request is decided not to be started. I
believe the drop
It appears that my usage of walking the timeout_list in block_abort_queue
and using blk_mark_rq_complete in block_abort_request will not work in
this case.
While it would be good to have way to ensure a command is started, it is
unclear if even at a low timeout of 1 second that a user other than
blk_abort_queue would hit this race.
The dropping / acquiring of host_lock and queue_lock in scsi_request_fn
and scsi_dispatch_cmd make it unclear to me if usage of
blk_mark_rq_complete will cover all cases.
I looked at checking serial_number in scsi_times_out along with a couple
blk_mark_rq_complete additions, but unclear if this would be good and / or
work in all cases.
I looked at just accelerating deadline by some default value but unclear
if that would be acceptable.
I also looked at just using just the mark interface I previously posted
and not calling blk_abort_request at all, but that would change current
behavior that has been in use for a while.
Looking for suggestions.
Thanks,
-andmike
--
Michael Anderson
andmike@linux.vnet.ibm.com
next reply other threads:[~2010-05-12 5:23 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-12 5:23 Mike Anderson [this message]
2010-11-10 7:09 ` [dm-devel] block_abort_queue (blk_abort_request) racing with scsi_request_fn Mike Christie
2010-11-10 7:30 ` Mike Christie
2010-11-10 16:30 ` Mike Anderson
2010-11-10 21:16 ` Mike Christie
2010-11-12 17:54 ` Mike Anderson
2010-11-16 21:39 ` Mike Snitzer
2010-11-17 17:49 ` [dm-devel] " Mike Anderson
2010-11-17 21:55 ` Mike Snitzer
2010-11-18 4:40 ` [PATCH v2] dm mpath: add feature flag to control call to blk_abort_queue Mike Snitzer
2010-11-18 7:20 ` Mike Anderson
2010-11-18 15:48 ` Mike Snitzer
2010-11-18 15:48 ` [PATCH v3] " Mike Snitzer
2010-11-18 19:16 ` (unknown), Mike Snitzer
2010-11-18 19:21 ` Mike Snitzer
2010-11-18 19:19 ` [PATCH v4] dm mpath: avoid call to blk_abort_queue by default Mike Snitzer
2010-11-18 20:07 ` [PATCH v5] " Mike Snitzer
2010-11-18 20:18 ` [dm-devel] " Alasdair G Kergon
2010-11-18 20:39 ` Mike Anderson
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=20100512052336.GB15240@linux.vnet.ibm.com \
--to=andmike@linux.vnet.ibm.com \
--cc=James.Bottomley@suse.de \
--cc=dm-devel@redhat.com \
--cc=jens.axboe@oracle.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).