Linux-NVME Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: james.smart@broadcom.com (James Smart)
Subject: [PATCH 3/3] nvme-fabrics: fix and refine state checks in __nvmf_check_ready
Date: Fri, 15 Jun 2018 07:18:06 -0700	[thread overview]
Message-ID: <7996a4b1-a1e9-882d-13c9-d72ac45ea121@broadcom.com> (raw)
In-Reply-To: <20180615093234.GB21138@lst.de>

On 6/15/2018 2:32 AM, Christoph Hellwig wrote:
> On Thu, Jun 14, 2018@10:37:01AM -0700, James Smart wrote:
>> I like what's here and think it's pretty conclusive. Enough that I'm good
>> with a Reviewed-by for me to be added.
> Thanks.
>
>> In thinking this through: There's still the issue of queue_live being set
>> true when in a RESETTING/DELETING state as the workqueue element to enact
>> the reset/delete has yet to be run or is just starting to run. Since above
>> restricts it to kernel-generated commands only, the only things that should
>> get through in this case are:
>> 1) a property_set command to write CC.NE=0 is issued by the transport
>> reset/delete handler. Note: it's unclear whether the queue will be live or
>> not.
>> 2) controller was in a NEW/CONNECTING state and was sending a command used
>> to init the controller.
>> 3) a keep alive
>>
>> (1) is desired behavior, assuming queue is live to let it through.
>> (2) and (3) - I assume the transport reset/delete handler will freeze the
>> queues, cycle through any outstanding command and will terminate them. So
>> it should be ok.
> Yes.
>
>> I assume, based on the time needed to freeze the queues,
>> that there shouldn't be a possibility for the delete/reset handler queue
>> freeze code to race with an io allowed by the checks (it should be long
>> gone).?? If there's not agreement on that assumption, then a clause
>> should be added after the switch case that checks for RESETTING or DELETING
>> and if so, only allows a Property_Set for CC.EN=0 command.
> Note that in PCIe until recently we actually had other commands in
> the shutdown sequence, and at least for an oderly shutdown other commands
> might reappear.  So I'm not really sure adding additional restrictions
> is a good idea, as we'd need to update the state machine every time
> the shutdown sequence changes.  Especially given that the queue should
> be frozen for external I/O anyway.
>
>> -- james
> ---end quoted text---

Sounds good.

-- james

      reply	other threads:[~2018-06-15 14:18 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-14 12:22 queue ready fixes and cleanups v2 Christoph Hellwig
2018-06-14 12:22 ` [PATCH 1/3] nvme-fabrics: refactor queue ready check Christoph Hellwig
2018-06-14 17:37   ` James Smart
2018-06-14 12:22 ` [PATCH 2/3] nvme-fabrics: handle the admin-only case properly in nvmf_check_ready Christoph Hellwig
2018-06-14 12:22 ` [PATCH 3/3] nvme-fabrics: fix and refine state checks in __nvmf_check_ready Christoph Hellwig
2018-06-14 17:37   ` James Smart
2018-06-15  9:32     ` Christoph Hellwig
2018-06-15 14:18       ` James Smart [this message]

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=7996a4b1-a1e9-882d-13c9-d72ac45ea121@broadcom.com \
    --to=james.smart@broadcom.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