From: Ming Lei <ming.lei@redhat.com>
To: Daniel Wagner <dwagner@suse.de>
Cc: Wen Xiong <wenxiong@us.ibm.com>,
james.smart@broadcom.com, linux-kernel@vger.kernel.org,
sagi@grimberg.me, wenxiong@linux.vnet.ibm.com
Subject: Re: [PATCH 1/1] block: System crashes when cpu hotplug + bouncing port
Date: Tue, 29 Jun 2021 18:06:21 +0800 [thread overview]
Message-ID: <YNrwnWfsxf8cJcoe@T590> (raw)
In-Reply-To: <20210629094938.r3h5cb7wwu2v3r3m@beryllium.lan>
On Tue, Jun 29, 2021 at 11:49:38AM +0200, Daniel Wagner wrote:
> On Tue, Jun 29, 2021 at 05:35:51PM +0800, Ming Lei wrote:
> > With the two patches I posted, __nvme_submit_sync_cmd() shouldn't return
> > error, can you observe the error?
>
> There are still ways the allocation can fail:
>
> ret = blk_queue_enter(q, flags);
> if (ret)
> return ERR_PTR(ret);
>
> ret = -EXDEV;
> data.hctx = q->queue_hw_ctx[hctx_idx];
> if (!blk_mq_hw_queue_mapped(data.hctx))
> goto out_queue_exit;
The above failure is supposed to be handled as error, either queue is
frozen or hctx is unmapped.
>
> No, I don't see any errors. I am still trying to reproduce it on real
> hardware. The setup with blktests running in Qemu did work with all
> patches applied (the once from me and your patches).
>
> About the error argument: Later in the code path, e.g. in
> __nvme_submit_sync_cmd() transport errors (incl. canceled request) are
> handled as well, hence the upper layer will see errors during connection
> attempts. My point is, there is nothing special about the connection
> attempt failing. We have error handling code in place and the above
> state machine has to deal with it.
My two patches not only avoids the kernel panic, but also allow
request to be allocated successfully, then connect io queue request can
be submitted to driver even though all CPUs in hctx->cpumask is offline,
then nvmef can be setup well.
That is the difference with yours to fail the request allocation, then
connect io queues can't be done, and the whole host can't be setup
successfully, then become a brick. The point is that cpu offline shouldn't
fail to setup nvme fc/rdma/tcp/loop.
>
> Anyway, avoiding the if in the hotpath is a good thing. I just don't
> think your argument about no error can happen is correct.
Again, it isn't related with avoiding the if, and it isn't in hotpath
at all.
Thanks,
Ming
next prev parent reply other threads:[~2021-06-29 10:07 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-28 3:14 [PATCH 1/1] block: System crashes when cpu hotplug + bouncing port wenxiong
2021-06-28 9:07 ` Daniel Wagner
2021-06-28 9:59 ` Ming Lei
[not found] ` <71d1ce491ed5056bfa921f0e14fa646d@imap.linux.ibm.com>
2021-06-29 1:20 ` Ming Lei
[not found] ` <OFE573413D.44652DC5-ON00258703.000DB949-00258703.000EFCD4@ibm.com>
2021-06-29 2:56 ` Ming Lei
[not found] ` <OF8889275F.DC758B38-ON00258703.001297BC-00258703.00143502@ibm.com>
2021-06-29 3:47 ` Ming Lei
2021-06-29 8:25 ` Daniel Wagner
2021-06-29 8:35 ` Daniel Wagner
2021-06-29 9:01 ` Ming Lei
2021-06-29 9:27 ` Daniel Wagner
2021-06-29 9:35 ` Ming Lei
2021-06-29 9:49 ` Daniel Wagner
2021-06-29 10:06 ` Ming Lei [this message]
2021-06-29 11:50 ` Daniel Wagner
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=YNrwnWfsxf8cJcoe@T590 \
--to=ming.lei@redhat.com \
--cc=dwagner@suse.de \
--cc=james.smart@broadcom.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sagi@grimberg.me \
--cc=wenxiong@linux.vnet.ibm.com \
--cc=wenxiong@us.ibm.com \
/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