All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sagi Grimberg <sagi@grimberg.me>
To: Logan Gunthorpe <logang@deltatee.com>,
	Hannes Reinecke <hare@suse.de>,
	linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org,
	linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org
Cc: Christoph Hellwig <hch@lst.de>, Keith Busch <kbusch@kernel.org>,
	Jens Axboe <axboe@fb.com>,
	Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com>,
	Max Gurtovoy <maxg@mellanox.com>,
	Stephen Bates <sbates@raithlin.com>
Subject: Re: [PATCH v6 00/16] nvmet: add target passthru commands support
Date: Fri, 26 Jul 2019 15:21:14 -0700	[thread overview]
Message-ID: <175fa142-4815-ee48-82a4-18eb411db1ae@grimberg.me> (raw)
In-Reply-To: <8fd8813f-f8e1-2139-13bf-b0635a03bc30@deltatee.com>


>> How do you handle subsystem naming?
>> If you enable the 'passthru' device, the (nvmet) subsystem (and its
>> name) is already created. Yet the passthru device will have its own
>> internal subsystem naming, so if you're not extra careful you'll end up
>> with a nvmet subsystem which doesn't have any relationship with the
>> passthru subsystem, making addressing etc ... tricky.
>> Any thoughts about that?
> 
> Well I can't say I have a great understanding of how multipath works, but...

Why is this related to multipath?

> I don't think it necessarily makes sense for the target subsynqn and the
> target's device nqn to be the same. It would be weird for a user to want
> to use the same device and a passed through device (through a loop) as
> part of the same subsystem. That being said, it's possible for the user
> to use the subsysnqn from the passed through device for the name of the
> subsys of the target. I tried this and it works except for the fact that
> the device I'm passing through doesn't set id->cmic.

I don't see why should the subsystem nqn should be the same name. Its
just like any other nvmet subsystem, just happens to have a nvme
controller in the backend (which it knows about). No reason to have
the same name IMO.

>> Similarly: how do you propose to handle multipath devices?
>> Any NVMe with several paths will be enabling NVMe multipathing
>> automatically, presenting you with a single multipathed namespace.
>> How will these devices be treated?
> 
> Well passthru works on the controller level not on the namespace level.
> So it can't make use of the multipath handling on the target system.

Why? if nvmet is capable, why shouldn't we support it?

> The one case that I think makes sense to me, but I don't know how if we
> can handle, is if the user had a couple multipath enabled controllers
> with the same subsynqn

That is usually the case, there is no multipathing defined across NVM
subsystems (at least for now).

> and wanted to passthru all of them to another
> system and use multipath on the host with both controllers. This would
> require having multiple target subsystems with the same name which I
> don't think will work too well.

Don't understand why this is the case?

AFAICT, all nvmet needs to do is:
1. override cimc
2. allow allocating multiple controllers to the pt ctrl as long as the
hostnqn match.
3. answer all the ana stuff.

What else is missing?

>> Will the multipathed namespace be used for passthru?
> 
> Nope.
> 
> Honestly, I think the answer is if someone wants to use multipathed
> controllers they should use regular NVMe-of as it doesn't really mesh
> well with the passthru approach.

Maybe I'm missing something, but they should be orthogonal.. I know that
its sort of not real passthru, but we are exposing an nvme device across
a fabric, I think its reasonable to have some adjustments on top.

WARNING: multiple messages have this Message-ID (diff)
From: sagi@grimberg.me (Sagi Grimberg)
Subject: [PATCH v6 00/16] nvmet: add target passthru commands support
Date: Fri, 26 Jul 2019 15:21:14 -0700	[thread overview]
Message-ID: <175fa142-4815-ee48-82a4-18eb411db1ae@grimberg.me> (raw)
In-Reply-To: <8fd8813f-f8e1-2139-13bf-b0635a03bc30@deltatee.com>


>> How do you handle subsystem naming?
>> If you enable the 'passthru' device, the (nvmet) subsystem (and its
>> name) is already created. Yet the passthru device will have its own
>> internal subsystem naming, so if you're not extra careful you'll end up
>> with a nvmet subsystem which doesn't have any relationship with the
>> passthru subsystem, making addressing etc ... tricky.
>> Any thoughts about that?
> 
> Well I can't say I have a great understanding of how multipath works, but...

Why is this related to multipath?

> I don't think it necessarily makes sense for the target subsynqn and the
> target's device nqn to be the same. It would be weird for a user to want
> to use the same device and a passed through device (through a loop) as
> part of the same subsystem. That being said, it's possible for the user
> to use the subsysnqn from the passed through device for the name of the
> subsys of the target. I tried this and it works except for the fact that
> the device I'm passing through doesn't set id->cmic.

I don't see why should the subsystem nqn should be the same name. Its
just like any other nvmet subsystem, just happens to have a nvme
controller in the backend (which it knows about). No reason to have
the same name IMO.

>> Similarly: how do you propose to handle multipath devices?
>> Any NVMe with several paths will be enabling NVMe multipathing
>> automatically, presenting you with a single multipathed namespace.
>> How will these devices be treated?
> 
> Well passthru works on the controller level not on the namespace level.
> So it can't make use of the multipath handling on the target system.

Why? if nvmet is capable, why shouldn't we support it?

> The one case that I think makes sense to me, but I don't know how if we
> can handle, is if the user had a couple multipath enabled controllers
> with the same subsynqn

That is usually the case, there is no multipathing defined across NVM
subsystems (at least for now).

> and wanted to passthru all of them to another
> system and use multipath on the host with both controllers. This would
> require having multiple target subsystems with the same name which I
> don't think will work too well.

Don't understand why this is the case?

AFAICT, all nvmet needs to do is:
1. override cimc
2. allow allocating multiple controllers to the pt ctrl as long as the
hostnqn match.
3. answer all the ana stuff.

What else is missing?

>> Will the multipathed namespace be used for passthru?
> 
> Nope.
> 
> Honestly, I think the answer is if someone wants to use multipathed
> controllers they should use regular NVMe-of as it doesn't really mesh
> well with the passthru approach.

Maybe I'm missing something, but they should be orthogonal.. I know that
its sort of not real passthru, but we are exposing an nvme device across
a fabric, I think its reasonable to have some adjustments on top.

  reply	other threads:[~2019-07-26 22:21 UTC|newest]

Thread overview: 122+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-25 17:23 [PATCH v6 00/16] nvmet: add target passthru commands support Logan Gunthorpe
2019-07-25 17:23 ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 01/16] chardev: factor out cdev_lookup() helper Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 02/16] chardev: introduce cdev_get_by_path() Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:40   ` Greg Kroah-Hartman
2019-07-25 17:40     ` Greg Kroah-Hartman
2019-07-25 17:53     ` Logan Gunthorpe
2019-07-25 17:53       ` Logan Gunthorpe
2019-07-25 17:58       ` Matthew Wilcox
2019-07-25 17:58         ` Matthew Wilcox
2019-07-25 18:08         ` Logan Gunthorpe
2019-07-25 18:08           ` Logan Gunthorpe
2019-07-25 18:08       ` Greg Kroah-Hartman
2019-07-25 18:08         ` Greg Kroah-Hartman
2019-07-25 18:14         ` Logan Gunthorpe
2019-07-25 18:14           ` Logan Gunthorpe
2019-07-25 18:27           ` Greg Kroah-Hartman
2019-07-25 18:27             ` Greg Kroah-Hartman
2019-07-25 18:36             ` Logan Gunthorpe
2019-07-25 18:36               ` Logan Gunthorpe
2019-07-25 19:02               ` Sagi Grimberg
2019-07-25 19:02                 ` Sagi Grimberg
2019-07-25 19:34                 ` Greg Kroah-Hartman
2019-07-25 19:34                   ` Greg Kroah-Hartman
2019-07-25 19:37                   ` Sagi Grimberg
2019-07-25 19:37                     ` Sagi Grimberg
2019-07-25 19:43                     ` Greg Kroah-Hartman
2019-07-25 19:43                       ` Greg Kroah-Hartman
2019-07-25 19:45                       ` Sagi Grimberg
2019-07-25 19:45                         ` Sagi Grimberg
2019-07-25 19:43                     ` Sagi Grimberg
2019-07-25 19:43                       ` Sagi Grimberg
2019-07-25 19:41                   ` Logan Gunthorpe
2019-07-25 19:41                     ` Logan Gunthorpe
2019-07-25 19:00             ` Matthew Wilcox
2019-07-25 19:00               ` Matthew Wilcox
2019-07-25 19:05               ` Sagi Grimberg
2019-07-25 19:05                 ` Sagi Grimberg
2019-07-25 19:11                 ` Matthew Wilcox
2019-07-25 19:11                   ` Matthew Wilcox
2019-07-25 19:24                   ` Logan Gunthorpe
2019-07-25 19:24                     ` Logan Gunthorpe
2019-07-25 19:26                     ` Matthew Wilcox
2019-07-25 19:26                       ` Matthew Wilcox
2019-07-25 19:31                       ` Logan Gunthorpe
2019-07-25 19:31                         ` Logan Gunthorpe
2019-07-25 23:55                     ` Al Viro
2019-07-25 23:55                       ` Al Viro
2019-07-26  4:29                       ` Sagi Grimberg
2019-07-26  4:29                         ` Sagi Grimberg
2019-07-26  7:13                         ` Greg Kroah-Hartman
2019-07-26  7:13                           ` Greg Kroah-Hartman
2019-07-26 15:46                         ` Logan Gunthorpe
2019-07-26 15:46                           ` Logan Gunthorpe
2019-07-25 19:31                   ` Sagi Grimberg
2019-07-25 19:31                     ` Sagi Grimberg
2019-07-25 18:10       ` Greg Kroah-Hartman
2019-07-25 18:10         ` Greg Kroah-Hartman
2019-07-25 18:16         ` Logan Gunthorpe
2019-07-25 18:16           ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 03/16] chardev: export cdev_put() Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 04/16] nvme-core: introduce nvme_get_by_path() Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:50   ` Matthew Wilcox
2019-07-25 17:50     ` Matthew Wilcox
2019-07-25 17:54     ` Logan Gunthorpe
2019-07-25 17:54       ` Logan Gunthorpe
2019-07-25 19:58       ` Keith Busch
2019-07-25 19:58         ` Keith Busch
2019-07-25 20:12         ` Sagi Grimberg
2019-07-25 20:12           ` Sagi Grimberg
2019-07-25 20:28         ` Logan Gunthorpe
2019-07-25 20:28           ` Logan Gunthorpe
2019-07-25 20:31           ` Keith Busch
2019-07-25 20:31             ` Keith Busch
2019-07-25 20:37             ` Logan Gunthorpe
2019-07-25 20:37               ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 05/16] nvme-core: export existing ctrl and ns interfaces Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 06/16] nvmet: add return value to nvmet_add_async_event() Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 07/16] nvmet: make nvmet_copy_ns_identifier() non-static Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 08/16] nvmet-passthru: update KConfig with config passthru option Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 09/16] nvmet-passthru: add passthru code to process commands Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 10/16] nvmet-passthru: add enable/disable helpers Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 11/16] nvmet-core: allow one host per passthru-ctrl Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 12/16] nvmet-core: don't check the data len for pt-ctrl Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 13/16] nvmet-configfs: introduce passthru configfs interface Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 14/16] block: don't check blk_rq_is_passthrough() in blk_do_io_stat() Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 15/16] block: call blk_account_io_start() in blk_execute_rq_nowait() Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-25 17:23 ` [PATCH v6 16/16] nvmet-passthru: support block accounting Logan Gunthorpe
2019-07-25 17:23   ` Logan Gunthorpe
2019-07-26  6:23 ` [PATCH v6 00/16] nvmet: add target passthru commands support Hannes Reinecke
2019-07-26  6:23   ` Hannes Reinecke
2019-07-26 17:07   ` Logan Gunthorpe
2019-07-26 17:07     ` Logan Gunthorpe
2019-07-26 22:21     ` Sagi Grimberg [this message]
2019-07-26 22:21       ` Sagi Grimberg
2019-07-26 22:37       ` Logan Gunthorpe
2019-07-26 22:37         ` Logan Gunthorpe
2019-07-26 23:13         ` Sagi Grimberg
2019-07-26 23:13           ` Sagi Grimberg
2019-07-27  0:09           ` Logan Gunthorpe
2019-07-27  0:09             ` Logan Gunthorpe
2019-07-27  0:50             ` Stephen  Bates
2019-07-27  0:50               ` Stephen  Bates
2019-07-29 16:15               ` Sagi Grimberg
2019-07-29 16:15                 ` Sagi Grimberg
2019-07-29 16:17                 ` Logan Gunthorpe
2019-07-29 16:17                   ` Logan Gunthorpe

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=175fa142-4815-ee48-82a4-18eb411db1ae@grimberg.me \
    --to=sagi@grimberg.me \
    --cc=Chaitanya.Kulkarni@wdc.com \
    --cc=axboe@fb.com \
    --cc=hare@suse.de \
    --cc=hch@lst.de \
    --cc=kbusch@kernel.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    --cc=logang@deltatee.com \
    --cc=maxg@mellanox.com \
    --cc=sbates@raithlin.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.