From: Jianchao Wang <jianchao.w.wang@oracle.com>
To: axboe@kernel.dk, hch@lst.de, martin.petersen@oracle.com,
keith.busch@intel.com, josef@toxicpanda.com,
ulf.hansson@linaro.org
Cc: linux-block@vger.kernel.org, linux-scsi@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: [PATCH 0/5]stop normal completion path entering a timeout req
Date: Wed, 20 Jun 2018 21:22:39 +0800 [thread overview]
Message-ID: <1529500964-28429-1-git-send-email-jianchao.w.wang@oracle.com> (raw)
Dear all
scsi timeout and error handler are based on an assumption that normal
completion mustn't do anything on an timeout request. After 12f5b931
(blk-mq: Remove generation seqeunce), we lost this. __blk_mq_complete
request could ensure a request won't be completed twice, but it can
still complete a timeout request.
scsi (even other drivers) have been working on this assumption for many
years, it is dangerous to discard it suddenly. This patch set is to regain this.
1st patch
- introduce blk_mq_mark_rq_complete in blk_mq_check_expired and blk_mq_complete_request
to avoid the race between them.
- blk_mq_complete_request cannot complete a timeout request anymore, so have to export
__blk_mq_complete_request for LLDD timeout path
2nd ~ 5th patches
replace the blk_mq_complete_request to __blk_mq_complete_request.
Jianchao Wang(5)
blk-mq: prevent normal completion from entering a timeout request
nbd: use __blk_mq_complete_request in timeout path
null_blk: use __blk_mq_complete_request in timeout path
mmc: use __blk_mq_complete_request in timeout path
nvme: use __blk_mq_complete_request in timeout path
block/blk-mq.c | 22 +++++++++++++++-------
drivers/block/nbd.c | 2 +-
drivers/block/null_blk.c | 2 +-
drivers/mmc/core/queue.c | 2 +-
drivers/nvme/host/pci.c | 8 ++++++++
drivers/nvme/host/rdma.c | 1 +
drivers/nvme/target/loop.c | 1 +
include/linux/blk-mq.h | 1 +
include/linux/blkdev.h | 6 ++++++
Thanks
Jianchao
next reply other threads:[~2018-06-20 13:22 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-20 13:22 Jianchao Wang [this message]
2018-06-20 13:22 ` [PATCH 1/5] blk-mq: prevent normal completion from entering a timeout request Jianchao Wang
2018-06-20 13:22 ` [PATCH 2/5] nbd: use __blk_mq_complete_request in timeout path Jianchao Wang
2018-06-20 14:13 ` Josef Bacik
2018-06-20 13:22 ` [PATCH 3/5] null_blk: " Jianchao Wang
2018-06-20 13:22 ` [PATCH 4/5] mmc: " Jianchao Wang
2018-06-20 13:22 ` [PATCH 5/5] nvme: " Jianchao Wang
2018-06-20 14:39 ` Christoph Hellwig
2018-06-21 2:09 ` jianchao.wang
2018-06-24 18:07 ` Sagi Grimberg
2018-06-25 1:40 ` jianchao.wang
2018-06-25 18:51 ` Sagi Grimberg
2018-06-20 18:16 ` [PATCH 0/5]stop normal completion path entering a timeout req Keith Busch
2018-06-21 1:43 ` jianchao.wang
2018-06-21 8:19 ` Christoph Hellwig
2018-06-21 8:22 ` jianchao.wang
2018-06-22 15:10 ` Christoph Hellwig
2018-06-25 1:29 ` jianchao.wang
2018-06-21 13:13 ` jianchao.wang
2018-06-21 15:01 ` Keith Busch
2018-06-21 18:21 ` Bart Van Assche
2018-06-21 21:15 ` Keith Busch
2018-06-21 21:30 ` Bart Van Assche
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=1529500964-28429-1-git-send-email-jianchao.w.wang@oracle.com \
--to=jianchao.w.wang@oracle.com \
--cc=axboe@kernel.dk \
--cc=hch@lst.de \
--cc=josef@toxicpanda.com \
--cc=keith.busch@intel.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=ulf.hansson@linaro.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).