* [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).