All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.