All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sagi Grimberg <sagi@grimberg.me>
To: James Smart <james.smart@broadcom.com>, Christoph Hellwig <hch@lst.de>
Cc: Keith Busch <kbusch@kernel.org>, linux-nvme@lists.infradead.org
Subject: Re: [PATCH v3 2/9] nvme-fabrics: allow to queue requests for live queues
Date: Thu, 20 Aug 2020 15:13:33 -0700	[thread overview]
Message-ID: <a867e0e9-c4ee-26fd-cd09-ee323d23def2@grimberg.me> (raw)
In-Reply-To: <bdd4f4b8-be68-2edc-5378-32c97eb3f1ae@broadcom.com>


>>> I'm still rather bothered with the admin queue exception.  And given 
>>> that
>>> the q_usage_counter problem should only really be an issue for file 
>>> system
>>> requests, as passthrough requests do not automatically get retried why
>>> can't we just reject all user command to be symetric and straight 
>>> forward?
>>> The callers in userspace need to be able to cope with retryable errors
>>> anyway.
>>
>> Looking at the code again, I think we can kill it as well.
>>
>> The concern is we may issue user generated admin commands before
>> the controller is enabled (generating an unforced error just because
>> we queued to early). That used to be the case when the admin connect
>> used the admin_q which meant we needed to unquiesce before, but
>> now that the admin connect uses the fabrics_q, that should no
>> longer be an issue.
>>
>> in nvme-tcp we unquiesce after we enable the ctrl:
>> ...
>>
>> James, can you please have a look if this is still an issue?
> 
> I still dislike any random ioctls coming in while we're still 
> initializing the controller.  Looking at the flow - I wouldn't want them 
> to be allowed until after nvme_init_identify() is complete. Especially 
> if the ioctls are doing subsystem or controller dumping or using 
> commands that should be capped by values set by nvme_queue_limits(). 
> But, if we're going to allow nvme_init_identify the admin_q needs to be 
> unquiesced.
> 
> So I'm still voting for the admin queue exception.

I think that if the controller is enabled, it should be able to accept
commands. For your specific concern, I don't think that the right place
to protect against it is __nvmf_check_ready, because from that
standpoint the controller _is_ ready.

Perhaps if this is a real concern we should have passthru commands
to check the controller state before executing?

Christoph, Keith, WDYT?

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

  reply	other threads:[~2020-08-20 22:13 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-20  5:36 [PATCH v3 0/9] fix possible controller reset hangs in nvme-tcp/nvme-rdma Sagi Grimberg
2020-08-20  5:36 ` [PATCH v3 1/9] nvme-fabrics: don't check state NVME_CTRL_NEW for request acceptance Sagi Grimberg
2020-08-20  6:02   ` Christoph Hellwig
2020-08-20 20:49   ` James Smart
2020-08-20  5:36 ` [PATCH v3 2/9] nvme-fabrics: allow to queue requests for live queues Sagi Grimberg
2020-08-20  6:09   ` Christoph Hellwig
2020-08-20 16:58     ` Sagi Grimberg
2020-08-20 20:45       ` James Smart
2020-08-20 22:13         ` Sagi Grimberg [this message]
2020-08-20 22:17           ` James Smart
2020-08-21  6:22         ` Christoph Hellwig
2020-08-21 15:22           ` James Smart
2020-08-21 19:44           ` Sagi Grimberg
2020-08-23 15:19             ` James Smart
2020-08-24  8:06               ` Sagi Grimberg
2020-08-24  8:02           ` Sagi Grimberg
2020-08-25  7:13             ` Christoph Hellwig
2020-08-25 15:00               ` Sagi Grimberg
2020-08-25 15:41                 ` James Smart
2020-08-25 17:35                   ` Sagi Grimberg
2020-09-04 20:26                     ` Sagi Grimberg
2020-09-08  9:05                       ` Christoph Hellwig
2020-09-08 16:47                         ` Sagi Grimberg
2020-09-08 16:48                           ` Christoph Hellwig
2020-09-08 19:56                             ` Sagi Grimberg
2020-08-20 20:54   ` James Smart
2020-08-20 20:56   ` James Smart
2020-08-20  5:36 ` [PATCH v3 3/9] nvme: have nvme_wait_freeze_timeout return if it timed out Sagi Grimberg
2020-08-20  6:09   ` Christoph Hellwig
2020-08-20  5:36 ` [PATCH v3 4/9] nvme-tcp: serialize controller teardown sequences Sagi Grimberg
2020-08-20  5:36 ` [PATCH v3 5/9] nvme-tcp: fix timeout handler Sagi Grimberg
2020-08-20  5:36 ` [PATCH v3 6/9] nvme-tcp: fix reset hang if controller died in the middle of a reset Sagi Grimberg
2020-08-20  5:36 ` [PATCH v3 7/9] nvme-rdma: serialize controller teardown sequences Sagi Grimberg
2020-08-20 21:04   ` James Smart
2020-08-20 22:16     ` Sagi Grimberg
2020-08-21 21:08   ` James Smart
2020-08-20  5:36 ` [PATCH v3 8/9] nvme-rdma: fix timeout handler Sagi Grimberg
2020-08-20  6:10   ` Christoph Hellwig
2020-08-20 21:37   ` James Smart
2020-08-20  5:36 ` [PATCH v3 9/9] nvme-rdma: fix reset hang if controller died in the middle of a reset Sagi Grimberg
2020-08-20  6:10   ` Christoph Hellwig
2020-08-24 18:29 ` [PATCH v3 0/9] fix possible controller reset hangs in nvme-tcp/nvme-rdma Sagi Grimberg
2020-08-25  7:16   ` Christoph Hellwig
2020-08-25 15:35     ` James Smart

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=a867e0e9-c4ee-26fd-cd09-ee323d23def2@grimberg.me \
    --to=sagi@grimberg.me \
    --cc=hch@lst.de \
    --cc=james.smart@broadcom.com \
    --cc=kbusch@kernel.org \
    --cc=linux-nvme@lists.infradead.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.