linux-nvme.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH nvme-cli v2 0/2] auto generate hostnqn file on installation
@ 2016-11-17 12:54 Sagi Grimberg
  2016-11-17 12:54 ` [PATCH nvme-cli v2 1/2] nvme-cli: Add nvme hostnqn generation option Sagi Grimberg
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Sagi Grimberg @ 2016-11-17 12:54 UTC (permalink / raw)


This set is designed to help the user by auto-generating a hostnqn and
placing it in /etc/nvme/hostnqn file upon installation of nvme-cli (in
case such a file doesn't exist).

The user can re-generate different hostnqns on demand by running:
$ nvme gen-hostnqn

Only the deb package is tested.

Changes from v1:
- don't keep local hostnqn var for sprintf
- don't delete /etc/nvme if it contains other files other
  than what we installed (hostnqn)

Changes from v0 (rfc):
- Moved hostnqn generation to nvme with the command gen-hostnqn
- Cleanup hostnqn file only on purge in debian

Sagi Grimberg (2):
  nvme-cli: Add nvme hostnqn generation option
  nvme.spec/debian: Auto generate host nqn as part of install

 Makefile        |  1 +
 debian/postinst | 20 ++++++++++++++++++++
 debian/postrm   | 10 ++++++++++
 nvme-builtin.h  |  1 +
 nvme.c          | 12 ++++++++++++
 nvme.spec.in    | 17 +++++++++++++++++
 6 files changed, 61 insertions(+)
 create mode 100644 debian/postinst
 create mode 100644 debian/postrm

-- 
2.7.4

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH nvme-cli v2 1/2] nvme-cli: Add nvme hostnqn generation option
  2016-11-17 12:54 [PATCH nvme-cli v2 0/2] auto generate hostnqn file on installation Sagi Grimberg
@ 2016-11-17 12:54 ` Sagi Grimberg
  2016-11-17 13:34   ` Christoph Hellwig
  2016-11-17 12:54 ` [PATCH nvme-cli v2 2/2] nvme.spec/debian: Auto generate host nqn as part of install Sagi Grimberg
  2016-11-17 14:36 ` [PATCH nvme-cli v2 0/2] auto generate hostnqn file on installation Christoph Hellwig
  2 siblings, 1 reply; 9+ messages in thread
From: Sagi Grimberg @ 2016-11-17 12:54 UTC (permalink / raw)


Add option to generate a NVMe qualified name of a given host
(in the form of: nqn.2014-08.org.nvmexpress:NVMf:uuid:<some_uuid>).
This hostnqn will be used for fabrics discovery and connect functions.

Signed-off-by: Sagi Grimberg <sagi at grimberg.me>
---
 Makefile       |  1 +
 nvme-builtin.h |  1 +
 nvme.c         | 12 ++++++++++++
 3 files changed, 14 insertions(+)

diff --git a/Makefile b/Makefile
index 33c71902479a..2a946ce8cb61 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,6 @@
 CFLAGS += -std=gnu99 -O2 -g -Wall -Werror
 CPPFLAGS += -D_GNU_SOURCE -D__CHECK_ENDIAN__
+LDFLAGS += -luuid
 NVME = nvme
 INSTALL ?= install
 DESTDIR =
diff --git a/nvme-builtin.h b/nvme-builtin.h
index dc314cbbb371..b182b1e01f5b 100644
--- a/nvme-builtin.h
+++ b/nvme-builtin.h
@@ -49,6 +49,7 @@ COMMAND_LIST(
 	ENTRY("connect-all", "Discover and Connect to NVMeoF subsystems", connect_all_cmd)
 	ENTRY("connect", "Connect to NVMeoF subsystem", connect_cmd)
 	ENTRY("disconnect", "Disconnect from NVMeoF subsystem", disconnect_cmd)
+	ENTRY("gen-hostnqn", "Generate NVMeoF host NQN", gen_hostnqn_cmd)
 );
 
 #endif
diff --git a/nvme.c b/nvme.c
index 170fbec08d4c..82a958ca3f4c 100644
--- a/nvme.c
+++ b/nvme.c
@@ -44,6 +44,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/time.h>
+#include <uuid/uuid.h>
 
 #include "nvme-print.h"
 #include "nvme-ioctl.h"
@@ -2699,6 +2700,17 @@ static int admin_passthru(int argc, char **argv, struct command *cmd, struct plu
 	return passthru(argc, argv, NVME_IOCTL_ADMIN_CMD, desc, cmd);
 }
 
+static int gen_hostnqn_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
+{
+	uuid_t uuid;
+	char uuid_str[37]; /* e.g. 1b4e28ba-2fa1-11d2-883f-0016d3cca427 + \0 */
+
+	uuid_generate_random(uuid);
+	uuid_unparse_lower(uuid, uuid_str);
+	printf("nqn.2014-08.org.nvmexpress:NVMf:uuid:%s\n", uuid_str);
+	return 0;
+}
+
 static int discover_cmd(int argc, char **argv, struct command *command, struct plugin *plugin)
 {
 	const char *desc = "Send Get Log Page request to Discovery Controller.";
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH nvme-cli v2 2/2] nvme.spec/debian: Auto generate host nqn as part of install
  2016-11-17 12:54 [PATCH nvme-cli v2 0/2] auto generate hostnqn file on installation Sagi Grimberg
  2016-11-17 12:54 ` [PATCH nvme-cli v2 1/2] nvme-cli: Add nvme hostnqn generation option Sagi Grimberg
@ 2016-11-17 12:54 ` Sagi Grimberg
  2016-11-17 13:36   ` Christoph Hellwig
  2016-11-17 14:36 ` [PATCH nvme-cli v2 0/2] auto generate hostnqn file on installation Christoph Hellwig
  2 siblings, 1 reply; 9+ messages in thread
From: Sagi Grimberg @ 2016-11-17 12:54 UTC (permalink / raw)


The installation will generate a hostnqn and store it in
/etc/nvme/hostnqn file (in case it doesn't exist).
This file will be removed upon uninstallation (purge on for debian).

Signed-off-by: Sagi Grimberg <sagi at grimberg.me>
---
 debian/postinst | 20 ++++++++++++++++++++
 debian/postrm   | 10 ++++++++++
 nvme.spec.in    | 17 +++++++++++++++++
 3 files changed, 47 insertions(+)
 create mode 100644 debian/postinst
 create mode 100644 debian/postrm

diff --git a/debian/postinst b/debian/postinst
new file mode 100644
index 000000000000..b258cf569c3e
--- /dev/null
+++ b/debian/postinst
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+    configure|install)
+	if [ ! -f /etc/nvme/hostnqn ]; then
+		install -D /dev/null /etc/nvme/hostnqn
+		echo $(nvme gen-hostnqn) > /etc/nvme/hostnqn
+        fi
+        ;;
+
+    upgrade|abort-upgrade)
+        ;;
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 0
+        ;;
+esac
+exit 0
diff --git a/debian/postrm b/debian/postrm
new file mode 100644
index 000000000000..a7a724352327
--- /dev/null
+++ b/debian/postrm
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+if [ "$1" = "purge" ]; then
+	if [ -d /etc/nvme ]; then
+		rm -f /etc/nvme/hostnqn
+		if [ ! -n "$(ls -A /etc/nvme)" ]; then
+			rm -rf /etc/nvme
+		fi
+	fi
+fi
diff --git a/nvme.spec.in b/nvme.spec.in
index a4718773a962..6efb28847005 100644
--- a/nvme.spec.in
+++ b/nvme.spec.in
@@ -33,6 +33,23 @@ make install DESTDIR=%{buildroot} PREFIX=/usr
 %clean
 rm -rf $RPM_BUILD_ROOT
 
+%post
+if [ $1 = 1 ]; then # 1 : This package is being installed for the first time
+	if [ ! -f /etc/nvme/hostnqn ]; then
+		install -D /dev/null /etc/nvme/hostnqn
+		echo $(nvme gen-hostnqn) > /etc/nvme/hostnqn
+        fi
+fi
+
+%preun
+if [ "$1" = "remove" ]; then
+	if [ -d /etc/nvme ]; then
+		rm -f /etc/nvme/hostnqn
+		if [ ! -n "$(ls -A /etc/nvme)" ]; then
+			rm -rf /etc/nvme
+		fi
+	fi
+fi
 %changelog
 * Thu Oct 15 2015 Keith Busch <keith.busch at intel.com>
 - Initial RPM spec
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH nvme-cli v2 1/2] nvme-cli: Add nvme hostnqn generation option
  2016-11-17 12:54 ` [PATCH nvme-cli v2 1/2] nvme-cli: Add nvme hostnqn generation option Sagi Grimberg
@ 2016-11-17 13:34   ` Christoph Hellwig
  2016-11-17 17:53     ` J Freyensee
  0 siblings, 1 reply; 9+ messages in thread
From: Christoph Hellwig @ 2016-11-17 13:34 UTC (permalink / raw)


Looks good,

Reviewed-by: Christoph Hellwig <hch at lst.de>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH nvme-cli v2 2/2] nvme.spec/debian: Auto generate host nqn as part of install
  2016-11-17 12:54 ` [PATCH nvme-cli v2 2/2] nvme.spec/debian: Auto generate host nqn as part of install Sagi Grimberg
@ 2016-11-17 13:36   ` Christoph Hellwig
  2016-11-17 17:51     ` J Freyensee
  0 siblings, 1 reply; 9+ messages in thread
From: Christoph Hellwig @ 2016-11-17 13:36 UTC (permalink / raw)


On Thu, Nov 17, 2016@02:54:48PM +0200, Sagi Grimberg wrote:
> The installation will generate a hostnqn and store it in
> /etc/nvme/hostnqn file (in case it doesn't exist).
> This file will be removed upon uninstallation (purge on for debian).
> 
> Signed-off-by: Sagi Grimberg <sagi at grimberg.me>
> ---
>  debian/postinst | 20 ++++++++++++++++++++
>  debian/postrm   | 10 ++++++++++
>  nvme.spec.in    | 17 +++++++++++++++++
>  3 files changed, 47 insertions(+)
>  create mode 100644 debian/postinst
>  create mode 100644 debian/postrm
> 
> diff --git a/debian/postinst b/debian/postinst
> new file mode 100644
> index 000000000000..b258cf569c3e
> --- /dev/null
> +++ b/debian/postinst
> @@ -0,0 +1,20 @@
> +#!/bin/sh
> +
> +set -e
> +
> +case "$1" in
> +    configure|install)
> +	if [ ! -f /etc/nvme/hostnqn ]; then
> +		install -D /dev/null /etc/nvme/hostnqn
> +		echo $(nvme gen-hostnqn) > /etc/nvme/hostnqn

The $() syntax is a bash-ish.  To work with a traditional bourne shell
it needs to be `nvme gen-hostnqn`

> +		if [ ! -n "$(ls -A /etc/nvme)" ]; then

Same here.

> +			rm -rf /etc/nvme
> +		fi

But maybe you should just do a

		rmdir /etc/nvme >/dev/null

instead?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH nvme-cli v2 0/2] auto generate hostnqn file on installation
  2016-11-17 12:54 [PATCH nvme-cli v2 0/2] auto generate hostnqn file on installation Sagi Grimberg
  2016-11-17 12:54 ` [PATCH nvme-cli v2 1/2] nvme-cli: Add nvme hostnqn generation option Sagi Grimberg
  2016-11-17 12:54 ` [PATCH nvme-cli v2 2/2] nvme.spec/debian: Auto generate host nqn as part of install Sagi Grimberg
@ 2016-11-17 14:36 ` Christoph Hellwig
  2 siblings, 0 replies; 9+ messages in thread
From: Christoph Hellwig @ 2016-11-17 14:36 UTC (permalink / raw)


Btw, while we're at it - can you add a trivial man page for the
command?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH nvme-cli v2 2/2] nvme.spec/debian: Auto generate host nqn as part of install
  2016-11-17 13:36   ` Christoph Hellwig
@ 2016-11-17 17:51     ` J Freyensee
  2016-11-17 17:58       ` J Freyensee
  0 siblings, 1 reply; 9+ messages in thread
From: J Freyensee @ 2016-11-17 17:51 UTC (permalink / raw)


On Thu, 2016-11-17@05:36 -0800, Christoph Hellwig wrote:
> On Thu, Nov 17, 2016@02:54:48PM +0200, Sagi Grimberg wrote:
> > 
> > The installation will generate a hostnqn and store it in
> > /etc/nvme/hostnqn file (in case it doesn't exist).
> > This file will be removed upon uninstallation (purge on for
> > debian).
> > 
> > Signed-off-by: Sagi Grimberg <sagi at grimberg.me>
> > ---
> > ?debian/postinst | 20 ++++++++++++++++++++
> > ?debian/postrm???| 10 ++++++++++
> > ?nvme.spec.in????| 17 +++++++++++++++++
> > ?3 files changed, 47 insertions(+)
> > ?create mode 100644 debian/postinst
> > ?create mode 100644 debian/postrm
> > 
> > diff --git a/debian/postinst b/debian/postinst
> > new file mode 100644
> > index 000000000000..b258cf569c3e
> > --- /dev/null
> > +++ b/debian/postinst
> > @@ -0,0 +1,20 @@
> > +#!/bin/sh
> > +
> > +set -e
> > +
> > +case "$1" in
> > +????configure|install)
> > +	if [ ! -f /etc/nvme/hostnqn ]; then
> > +		install -D /dev/null /etc/nvme/hostnqn
> > +		echo $(nvme gen-hostnqn) > /etc/nvme/hostnqn
> 
> The $() syntax is a bash-ish.??To work with a traditional bourne
> shell
> it needs to be `nvme gen-hostnqn`
> 
> > 
> > +		if [ ! -n "$(ls -A /etc/nvme)" ]; then
> 
> Same here.
> 
> > 
> > +			rm -rf /etc/nvme
> > +		fi
> 
> But maybe you should just do a
> 
> 		rmdir /etc/nvme >/dev/null

Please don't do a remove of the directory, just remove the files
created from this patch (/etc/nvme/hostnqn). ?As I mentioned earlier,
someone for example could have independently created a discovery.conf
file in /etc/nvme and might have not wanted that file removed when this
is uninstalled. ?If the directory was created from this patch then
either leave the directory /etc/nvme behind or test to see if /etc/nvme
is empty after removing /etc/nvme/hostnqn before attempting to remove
the directory /etc/nvme.


> 
> instead?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH nvme-cli v2 1/2] nvme-cli: Add nvme hostnqn generation option
  2016-11-17 13:34   ` Christoph Hellwig
@ 2016-11-17 17:53     ` J Freyensee
  0 siblings, 0 replies; 9+ messages in thread
From: J Freyensee @ 2016-11-17 17:53 UTC (permalink / raw)


On Thu, 2016-11-17@05:34 -0800, Christoph Hellwig wrote:
> Looks good,
> 
> Reviewed-by: Christoph Hellwig <hch at lst.de>

Dido,

Reviewed-by: Jay Freyensee <james_p_freyensee at linux.intel.com>

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

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH nvme-cli v2 2/2] nvme.spec/debian: Auto generate host nqn as part of install
  2016-11-17 17:51     ` J Freyensee
@ 2016-11-17 17:58       ` J Freyensee
  0 siblings, 0 replies; 9+ messages in thread
From: J Freyensee @ 2016-11-17 17:58 UTC (permalink / raw)


On Thu, 2016-11-17@09:51 -0800, J Freyensee wrote:
> On Thu, 2016-11-17@05:36 -0800, Christoph Hellwig wrote:
> > 
> > On Thu, Nov 17, 2016@02:54:48PM +0200, Sagi Grimberg wrote:
> > > 
> > > 
> > > The installation will generate a hostnqn and store it in
> > > /etc/nvme/hostnqn file (in case it doesn't exist).
> > > This file will be removed upon uninstallation (purge on for
> > > debian).
> > > 
> > > Signed-off-by: Sagi Grimberg <sagi at grimberg.me>
> > > ---
> > > ?debian/postinst | 20 ++++++++++++++++++++
> > > ?debian/postrm???| 10 ++++++++++
> > > ?nvme.spec.in????| 17 +++++++++++++++++
> > > ?3 files changed, 47 insertions(+)
> > > ?create mode 100644 debian/postinst
> > > ?create mode 100644 debian/postrm
> > > 
> > > diff --git a/debian/postinst b/debian/postinst
> > > new file mode 100644
> > > index 000000000000..b258cf569c3e
> > > --- /dev/null
> > > +++ b/debian/postinst
> > > @@ -0,0 +1,20 @@
> > > +#!/bin/sh
> > > +
> > > +set -e
> > > +
> > > +case "$1" in
> > > +????configure|install)
> > > +	if [ ! -f /etc/nvme/hostnqn ]; then
> > > +		install -D /dev/null /etc/nvme/hostnqn
> > > +		echo $(nvme gen-hostnqn) > /etc/nvme/hostnqn
> > 
> > The $() syntax is a bash-ish.??To work with a traditional bourne
> > shell
> > it needs to be `nvme gen-hostnqn`
> > 
> > > 
> > > 
> > > +		if [ ! -n "$(ls -A /etc/nvme)" ]; then
> > 
> > Same here.
> > 
> > > 
> > > 
> > > +			rm -rf /etc/nvme
> > > +		fi
> > 
> > But maybe you should just do a
> > 
> > 		rmdir /etc/nvme >/dev/null
> 


Nevermind, I'm dumb, Nack the comment, I didn't read that right from
the comments and code separated...more coffee :-/



> Please don't do a remove of the directory, just remove the files
> created from this patch (/etc/nvme/hostnqn). ?As I mentioned earlier,
> someone for example could have independently created a discovery.conf
> file in /etc/nvme and might have not wanted that file removed when
> this
> is uninstalled. ?If the directory was created from this patch then
> either leave the directory /etc/nvme behind or test to see if
> /etc/nvme
> is empty after removing /etc/nvme/hostnqn before attempting to remove
> the directory /etc/nvme.
> 
> 
> > 
> > 
> > instead?
> 
> _______________________________________________
> Linux-nvme mailing list
> Linux-nvme at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-11-17 17:58 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-17 12:54 [PATCH nvme-cli v2 0/2] auto generate hostnqn file on installation Sagi Grimberg
2016-11-17 12:54 ` [PATCH nvme-cli v2 1/2] nvme-cli: Add nvme hostnqn generation option Sagi Grimberg
2016-11-17 13:34   ` Christoph Hellwig
2016-11-17 17:53     ` J Freyensee
2016-11-17 12:54 ` [PATCH nvme-cli v2 2/2] nvme.spec/debian: Auto generate host nqn as part of install Sagi Grimberg
2016-11-17 13:36   ` Christoph Hellwig
2016-11-17 17:51     ` J Freyensee
2016-11-17 17:58       ` J Freyensee
2016-11-17 14:36 ` [PATCH nvme-cli v2 0/2] auto generate hostnqn file on installation Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).