From: Keith Busch <keith.busch@linux.intel.com>
To: Ming Lei <tom.leiming@gmail.com>
Cc: Jens Axboe <axboe@kernel.dk>,
linux-block <linux-block@vger.kernel.org>,
linux-nvme <linux-nvme@lists.infradead.org>,
Ming Lei <ming.lei@redhat.com>,
Keith Busch <keith.busch@intel.com>,
Bart Van Assche <bart.vanassche@wdc.com>,
Christoph Hellwig <hch@lst.de>
Subject: Re: [RFC PATCH 3/3] blk-mq: Remove generation seqeunce
Date: Tue, 22 May 2018 08:46:36 -0600 [thread overview]
Message-ID: <20180522144636.GS5528@localhost.localdomain> (raw)
In-Reply-To: <CACVXFVNT5qiamN0ydXzNYDWE0szi2fTsAAmyG9Q884LEqUhSdQ@mail.gmail.com>
On Tue, May 22, 2018 at 10:37:32PM +0800, Ming Lei wrote:
> On Tue, May 22, 2018 at 10:20 PM, Keith Busch
> <keith.busch@linux.intel.com> wrote:
> > In the event the driver requests a normal completion, the timeout work
> > releasing the last reference doesn't do a second completion: it only
>
> The reference only covers request's lifetime, not related with completion.
>
> It isn't the last reference. When driver returns EH_HANDLED, blk-mq
> will complete this request on extra time.
>
> Yes, if driver's timeout code and normal completion code can sync
> about this completion, that should be fine, but the current behaviour
> doesn't depend driver's sync since the req is always completed atomically
> via the following way:
>
> 1) timeout
>
> if (mark_completed(rq))
> timed_out(rq)
>
> 2) normal completion
> if (mark_completed(rq))
> complete(rq)
>
> For example, before nvme_timeout() is trying to run nvme_dev_disable(),
> irq comes and this req is completed from normal completion path, but
> nvme_timeout() still returns EH_HANDLED, and blk-mq may complete
> the req one extra time since the normal completion path may not update
> req's state yet.
nvme_dev_disable tears down irq's, meaing their handling is already
sync'ed before nvme_dev_disable can proceed. Whether the completion
comes through nvme_irq, or through nvme_dev_disable, there is no way
possible for nvme's timeout to return EH_HANDLED if the state was not
updated prior to returning that status.
WARNING: multiple messages have this Message-ID (diff)
From: keith.busch@linux.intel.com (Keith Busch)
Subject: [RFC PATCH 3/3] blk-mq: Remove generation seqeunce
Date: Tue, 22 May 2018 08:46:36 -0600 [thread overview]
Message-ID: <20180522144636.GS5528@localhost.localdomain> (raw)
In-Reply-To: <CACVXFVNT5qiamN0ydXzNYDWE0szi2fTsAAmyG9Q884LEqUhSdQ@mail.gmail.com>
On Tue, May 22, 2018@10:37:32PM +0800, Ming Lei wrote:
> On Tue, May 22, 2018 at 10:20 PM, Keith Busch
> <keith.busch@linux.intel.com> wrote:
> > In the event the driver requests a normal completion, the timeout work
> > releasing the last reference doesn't do a second completion: it only
>
> The reference only covers request's lifetime, not related with completion.
>
> It isn't the last reference. When driver returns EH_HANDLED, blk-mq
> will complete this request on extra time.
>
> Yes, if driver's timeout code and normal completion code can sync
> about this completion, that should be fine, but the current behaviour
> doesn't depend driver's sync since the req is always completed atomically
> via the following way:
>
> 1) timeout
>
> if (mark_completed(rq))
> timed_out(rq)
>
> 2) normal completion
> if (mark_completed(rq))
> complete(rq)
>
> For example, before nvme_timeout() is trying to run nvme_dev_disable(),
> irq comes and this req is completed from normal completion path, but
> nvme_timeout() still returns EH_HANDLED, and blk-mq may complete
> the req one extra time since the normal completion path may not update
> req's state yet.
nvme_dev_disable tears down irq's, meaing their handling is already
sync'ed before nvme_dev_disable can proceed. Whether the completion
comes through nvme_irq, or through nvme_dev_disable, there is no way
possible for nvme's timeout to return EH_HANDLED if the state was not
updated prior to returning that status.
next prev parent reply other threads:[~2018-05-22 14:46 UTC|newest]
Thread overview: 128+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-21 23:11 [RFC PATCH 0/3] blk-mq: Timeout rework Keith Busch
2018-05-21 23:11 ` Keith Busch
2018-05-21 23:11 ` [RFC PATCH 1/3] blk-mq: Reference count request usage Keith Busch
2018-05-21 23:11 ` Keith Busch
2018-05-22 2:27 ` Ming Lei
2018-05-22 2:27 ` Ming Lei
2018-05-22 15:19 ` Christoph Hellwig
2018-05-22 15:19 ` Christoph Hellwig
2018-05-21 23:11 ` [RFC PATCH 2/3] blk-mq: Fix timeout and state order Keith Busch
2018-05-21 23:11 ` Keith Busch
2018-05-22 2:28 ` Ming Lei
2018-05-22 2:28 ` Ming Lei
2018-05-22 15:24 ` Christoph Hellwig
2018-05-22 15:24 ` Christoph Hellwig
2018-05-22 16:27 ` Bart Van Assche
2018-05-22 16:27 ` Bart Van Assche
2018-05-21 23:11 ` [RFC PATCH 3/3] blk-mq: Remove generation seqeunce Keith Busch
2018-05-21 23:11 ` Keith Busch
2018-05-21 23:29 ` Bart Van Assche
2018-05-21 23:29 ` Bart Van Assche
2018-05-22 14:15 ` Keith Busch
2018-05-22 14:15 ` Keith Busch
2018-05-22 16:29 ` Bart Van Assche
2018-05-22 16:29 ` Bart Van Assche
2018-05-22 16:34 ` Keith Busch
2018-05-22 16:34 ` Keith Busch
2018-05-22 16:48 ` Bart Van Assche
2018-05-22 16:48 ` Bart Van Assche
2018-05-22 2:49 ` Ming Lei
2018-05-22 2:49 ` Ming Lei
2018-05-22 3:16 ` Jens Axboe
2018-05-22 3:16 ` Jens Axboe
2018-05-22 3:47 ` Ming Lei
2018-05-22 3:47 ` Ming Lei
2018-05-22 3:51 ` Jens Axboe
2018-05-22 3:51 ` Jens Axboe
2018-05-22 8:51 ` Ming Lei
2018-05-22 8:51 ` Ming Lei
2018-05-22 14:35 ` Jens Axboe
2018-05-22 14:35 ` Jens Axboe
2018-05-22 14:20 ` Keith Busch
2018-05-22 14:20 ` Keith Busch
2018-05-22 14:37 ` Ming Lei
2018-05-22 14:37 ` Ming Lei
2018-05-22 14:46 ` Keith Busch [this message]
2018-05-22 14:46 ` Keith Busch
2018-05-22 14:57 ` Ming Lei
2018-05-22 14:57 ` Ming Lei
2018-05-22 15:01 ` Keith Busch
2018-05-22 15:01 ` Keith Busch
2018-05-22 15:07 ` Ming Lei
2018-05-22 15:07 ` Ming Lei
2018-05-22 15:17 ` Keith Busch
2018-05-22 15:17 ` Keith Busch
2018-05-22 15:23 ` Ming Lei
2018-05-22 15:23 ` Ming Lei
2018-05-22 16:17 ` Christoph Hellwig
2018-05-22 16:17 ` Christoph Hellwig
2018-05-23 0:34 ` Ming Lei
2018-05-23 0:34 ` Ming Lei
2018-05-23 14:35 ` Keith Busch
2018-05-23 14:35 ` Keith Busch
2018-05-24 1:52 ` Ming Lei
2018-05-24 1:52 ` Ming Lei
2018-05-23 5:48 ` Hannes Reinecke
2018-05-23 5:48 ` Hannes Reinecke
2018-07-12 18:16 ` Bart Van Assche
2018-07-12 18:16 ` Bart Van Assche
2018-07-12 19:24 ` Keith Busch
2018-07-12 19:24 ` Keith Busch
2018-07-12 22:24 ` Bart Van Assche
2018-07-12 22:24 ` Bart Van Assche
2018-07-13 1:12 ` jianchao.wang
2018-07-13 1:12 ` jianchao.wang
2018-07-13 2:40 ` jianchao.wang
2018-07-13 2:40 ` jianchao.wang
2018-07-13 15:43 ` Keith Busch
2018-07-13 15:43 ` Keith Busch
2018-07-13 15:52 ` Bart Van Assche
2018-07-13 15:52 ` Bart Van Assche
2018-07-13 18:47 ` Keith Busch
2018-07-13 18:47 ` Keith Busch
2018-07-13 23:03 ` Bart Van Assche
2018-07-13 23:03 ` Bart Van Assche
2018-07-13 23:58 ` Keith Busch
2018-07-13 23:58 ` Keith Busch
2018-07-18 19:56 ` hch
2018-07-18 19:56 ` hch
2018-07-18 20:39 ` hch
2018-07-18 20:39 ` hch
2018-07-18 21:05 ` Bart Van Assche
2018-07-18 21:05 ` Bart Van Assche
2018-07-18 22:53 ` Keith Busch
2018-07-18 22:53 ` Keith Busch
2018-07-18 20:53 ` Keith Busch
2018-07-18 20:53 ` Keith Busch
2018-07-18 20:58 ` Bart Van Assche
2018-07-18 20:58 ` Bart Van Assche
2018-07-18 21:17 ` Keith Busch
2018-07-18 21:17 ` Keith Busch
2018-07-18 21:30 ` Bart Van Assche
2018-07-18 21:30 ` Bart Van Assche
2018-07-18 21:33 ` Keith Busch
2018-07-18 21:33 ` Keith Busch
2018-07-19 13:19 ` hch
2018-07-19 13:19 ` hch
2018-07-19 14:59 ` Keith Busch
2018-07-19 14:59 ` Keith Busch
2018-07-19 15:56 ` Keith Busch
2018-07-19 15:56 ` Keith Busch
2018-07-19 16:04 ` Bart Van Assche
2018-07-19 16:04 ` Bart Van Assche
2018-07-19 16:22 ` Keith Busch
2018-07-19 16:22 ` Keith Busch
2018-07-19 16:29 ` hch
2018-07-19 16:29 ` hch
2018-07-19 20:18 ` Keith Busch
2018-07-19 20:18 ` Keith Busch
2018-07-19 13:22 ` hch
2018-07-19 13:22 ` hch
2018-05-21 23:29 ` [RFC PATCH 0/3] blk-mq: Timeout rework Bart Van Assche
2018-05-21 23:29 ` Bart Van Assche
2018-05-22 14:06 ` Keith Busch
2018-05-22 14:06 ` Keith Busch
2018-05-22 16:30 ` Bart Van Assche
2018-05-22 16:30 ` Bart Van Assche
2018-05-22 16:44 ` Keith Busch
2018-05-22 16:44 ` 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=20180522144636.GS5528@localhost.localdomain \
--to=keith.busch@linux.intel.com \
--cc=axboe@kernel.dk \
--cc=bart.vanassche@wdc.com \
--cc=hch@lst.de \
--cc=keith.busch@intel.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=ming.lei@redhat.com \
--cc=tom.leiming@gmail.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 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.