* [PATCH] nvme: print out valid arguments when reading from /dev/nvme-fabrics
@ 2021-11-19 8:39 Hannes Reinecke
2021-11-23 8:39 ` Chaitanya Kulkarni
2021-11-23 16:22 ` Christoph Hellwig
0 siblings, 2 replies; 6+ messages in thread
From: Hannes Reinecke @ 2021-11-19 8:39 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: Sagi Grimberg, Keith Busch, linux-nvme, Hannes Reinecke
Currently applications have a hard time figuring out which
nvme-over-fabrics arguments are supported for any given kernel;
the ioctl will return an error code on failure, and the application
has to guess whether this was due to an invalid argument or due
to a connection or controller error.
With this patch applications can read a list of supported
arguments by simply reading from /dev/nvme-fabrics, allowing
them to validate the connection string.
Signed-off-by: Hannes Reinecke <hare@suse.de>
---
drivers/nvme/host/fabrics.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/nvme/host/fabrics.c b/drivers/nvme/host/fabrics.c
index 0ac054f80a82..810bbc8c9b6b 100644
--- a/drivers/nvme/host/fabrics.c
+++ b/drivers/nvme/host/fabrics.c
@@ -1144,7 +1144,18 @@ static int nvmf_dev_show(struct seq_file *seq_file, void *private)
mutex_lock(&nvmf_dev_mutex);
ctrl = seq_file->private;
if (!ctrl) {
- ret = -EINVAL;
+ const struct match_token *tok;
+ int idx;
+
+ for (idx = 0; idx < ARRAY_SIZE(opt_tokens); idx++) {
+ tok = &opt_tokens[idx];
+ if (tok->token == NVMF_OPT_ERR)
+ continue;
+ if (idx)
+ seq_puts(seq_file, ",");
+ seq_puts(seq_file, tok->pattern);
+ }
+ seq_puts(seq_file, "\n");
goto out_unlock;
}
--
2.29.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] nvme: print out valid arguments when reading from /dev/nvme-fabrics
2021-11-19 8:39 [PATCH] nvme: print out valid arguments when reading from /dev/nvme-fabrics Hannes Reinecke
@ 2021-11-23 8:39 ` Chaitanya Kulkarni
2021-11-23 16:22 ` Christoph Hellwig
1 sibling, 0 replies; 6+ messages in thread
From: Chaitanya Kulkarni @ 2021-11-23 8:39 UTC (permalink / raw)
To: Hannes Reinecke; +Cc: Sagi Grimberg, Christoph Hellwig, Keith Busch, linux-nvme
On 11/19/21 00:39, Hannes Reinecke wrote:
> Currently applications have a hard time figuring out which
> nvme-over-fabrics arguments are supported for any given kernel;
> the ioctl will return an error code on failure, and the application
> has to guess whether this was due to an invalid argument or due
> to a connection or controller error.
> With this patch applications can read a list of supported
> arguments by simply reading from /dev/nvme-fabrics, allowing
> them to validate the connection string.
>
> Signed-off-by: Hannes Reinecke <hare@suse.de>
this seems useful and will avoid a trip to the source code.
Looks good.
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] nvme: print out valid arguments when reading from /dev/nvme-fabrics
2021-11-19 8:39 [PATCH] nvme: print out valid arguments when reading from /dev/nvme-fabrics Hannes Reinecke
2021-11-23 8:39 ` Chaitanya Kulkarni
@ 2021-11-23 16:22 ` Christoph Hellwig
2021-11-23 16:38 ` Hannes Reinecke
1 sibling, 1 reply; 6+ messages in thread
From: Christoph Hellwig @ 2021-11-23 16:22 UTC (permalink / raw)
To: Hannes Reinecke; +Cc: Christoph Hellwig, Sagi Grimberg, Keith Busch, linux-nvme
The subject should use a nvme-fabrics prefix.
> + const struct match_token *tok;
> + int idx;
> +
> + for (idx = 0; idx < ARRAY_SIZE(opt_tokens); idx++) {
> + tok = &opt_tokens[idx];
> + if (tok->token == NVMF_OPT_ERR)
> + continue;
> + if (idx)
> + seq_puts(seq_file, ",");
> + seq_puts(seq_file, tok->pattern);
> + }
> + seq_puts(seq_file, "\n");
A helper for this logic would be nice. Also shouldn't be there
some kind of token to distinguish from the case where a controller
has already been created?
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] nvme: print out valid arguments when reading from /dev/nvme-fabrics
2021-11-23 16:22 ` Christoph Hellwig
@ 2021-11-23 16:38 ` Hannes Reinecke
2021-11-23 16:42 ` Christoph Hellwig
0 siblings, 1 reply; 6+ messages in thread
From: Hannes Reinecke @ 2021-11-23 16:38 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: Sagi Grimberg, Keith Busch, linux-nvme
On 11/23/21 5:22 PM, Christoph Hellwig wrote:
> The subject should use a nvme-fabrics prefix.
>
>> + const struct match_token *tok;
>> + int idx;
>> +
>> + for (idx = 0; idx < ARRAY_SIZE(opt_tokens); idx++) {
>> + tok = &opt_tokens[idx];
>> + if (tok->token == NVMF_OPT_ERR)
>> + continue;
>> + if (idx)
>> + seq_puts(seq_file, ",");
>> + seq_puts(seq_file, tok->pattern);
>> + }
>> + seq_puts(seq_file, "\n");
>
> A helper for this logic would be nice. Also shouldn't be there
> some kind of token to distinguish from the case where a controller
> has already been created?
>
Helper: sure.
But we don't need to distinguish the case where the controller has
already been created as this is handled by the if condition further up.
Cheers,
Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
hare@suse.de +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] nvme: print out valid arguments when reading from /dev/nvme-fabrics
2021-11-23 16:38 ` Hannes Reinecke
@ 2021-11-23 16:42 ` Christoph Hellwig
2021-11-23 17:03 ` Hannes Reinecke
0 siblings, 1 reply; 6+ messages in thread
From: Christoph Hellwig @ 2021-11-23 16:42 UTC (permalink / raw)
To: Hannes Reinecke; +Cc: Christoph Hellwig, Sagi Grimberg, Keith Busch, linux-nvme
On Tue, Nov 23, 2021 at 05:38:22PM +0100, Hannes Reinecke wrote:
> Helper: sure.
> But we don't need to distinguish the case where the controller has already
> been created as this is handled by the if condition further up.
Well, a token that the reader clearly sees that there is no controller
yet
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] nvme: print out valid arguments when reading from /dev/nvme-fabrics
2021-11-23 16:42 ` Christoph Hellwig
@ 2021-11-23 17:03 ` Hannes Reinecke
0 siblings, 0 replies; 6+ messages in thread
From: Hannes Reinecke @ 2021-11-23 17:03 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: Sagi Grimberg, Keith Busch, linux-nvme
On 11/23/21 5:42 PM, Christoph Hellwig wrote:
> On Tue, Nov 23, 2021 at 05:38:22PM +0100, Hannes Reinecke wrote:
>> Helper: sure.
>> But we don't need to distinguish the case where the controller has already
>> been created as this is handled by the if condition further up.
>
> Well, a token that the reader clearly sees that there is no controller
> yet
>
Ah. That. Sure, can do.
Cheers,
Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
hare@suse.de +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-11-23 17:04 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-19 8:39 [PATCH] nvme: print out valid arguments when reading from /dev/nvme-fabrics Hannes Reinecke
2021-11-23 8:39 ` Chaitanya Kulkarni
2021-11-23 16:22 ` Christoph Hellwig
2021-11-23 16:38 ` Hannes Reinecke
2021-11-23 16:42 ` Christoph Hellwig
2021-11-23 17:03 ` Hannes Reinecke
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.