From: Keith Busch <keith.busch@intel.com>
To: Bart Van Assche <bart.vanassche@wdc.com>
Cc: Jens Axboe <axboe@kernel.dk>,
linux-block@vger.kernel.org, Christoph Hellwig <hch@lst.de>,
Tejun Heo <tj@kernel.org>,
Jianchao Wang <jianchao.w.wang@oracle.com>,
Ming Lei <ming.lei@redhat.com>,
Sebastian Ott <sebott@linux.ibm.com>,
Sagi Grimberg <sagi@grimberg.me>,
Israel Rukshin <israelr@mellanox.com>,
Max Gurtovoy <maxg@mellanox.com>
Subject: Re: [PATCH v13] blk-mq: Rework blk-mq timeout handling again
Date: Tue, 22 May 2018 14:33:49 -0600 [thread overview]
Message-ID: <20180522203349.GB8961@localhost.localdomain> (raw)
In-Reply-To: <20180522162515.20650-1-bart.vanassche@wdc.com>
On Tue, May 22, 2018 at 09:25:15AM -0700, Bart Van Assche wrote:
> @@ -848,13 +843,22 @@ static void blk_mq_rq_timed_out(struct request *req, bool reserved)
> case BLK_EH_RESET_TIMER:
> + blk_mq_add_timer(req);
> /*
> + * The loop is for the unlikely case of a race with the
> + * completion code. There is no need to reset the deadline
> + * if the transition to the in-flight state fails because
> + * the deadline only matters in the in-flight state.
> */
> - blk_mq_rq_update_aborted_gstate(req, 0);
> - blk_add_timer(req);
> + while (true) {
> + if (blk_mq_change_rq_state(req, MQ_RQ_TIMED_OUT,
> + MQ_RQ_IN_FLIGHT))
> + break;
> + if (blk_mq_rq_state(req) == MQ_RQ_COMPLETE) {
> + __blk_mq_complete_request(req);
> + break;
> + }
> + }
I'm having some trouble triggering this case where the state is already
MQ_RQ_COMPLETE, so I'm just trying to figure this out through inspection.
It looks like the new blk_mq_complete_request() already called
__blk_mq_complete_request() when it gets the state to MQ_RQ_COMPLETE,
so doing that again completes it a second time.
next prev parent reply other threads:[~2018-05-22 20:33 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-22 16:25 [PATCH v13] blk-mq: Rework blk-mq timeout handling again Bart Van Assche
2018-05-22 16:44 ` Jens Axboe
2018-05-22 17:17 ` Jens Axboe
2018-05-22 18:47 ` Jens Axboe
2018-05-22 19:03 ` Jens Axboe
2018-05-22 19:38 ` Jens Axboe
2018-05-22 20:26 ` Keith Busch
2018-05-22 20:29 ` Jens Axboe
2018-05-22 21:02 ` Christoph Hellwig
2018-05-22 21:02 ` Jens Axboe
2018-05-22 20:33 ` Bart Van Assche
2018-05-22 20:38 ` Jens Axboe
2018-05-22 20:44 ` Bart Van Assche
2018-05-22 21:03 ` Jens Axboe
2018-05-23 2:35 ` Ming Lei
2018-05-22 20:33 ` Keith Busch [this message]
2018-05-22 20:36 ` Bart Van Assche
2018-05-22 20:40 ` Keith Busch
2018-05-22 20:44 ` Keith Busch
2018-05-22 20:47 ` Bart Van Assche
2018-05-23 14:02 ` Keith Busch
2018-05-23 14:08 ` Keith Busch
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=20180522203349.GB8961@localhost.localdomain \
--to=keith.busch@intel.com \
--cc=axboe@kernel.dk \
--cc=bart.vanassche@wdc.com \
--cc=hch@lst.de \
--cc=israelr@mellanox.com \
--cc=jianchao.w.wang@oracle.com \
--cc=linux-block@vger.kernel.org \
--cc=maxg@mellanox.com \
--cc=ming.lei@redhat.com \
--cc=sagi@grimberg.me \
--cc=sebott@linux.ibm.com \
--cc=tj@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.