import nvme-cli-2.0-3.el9

This commit is contained in:
CentOS Sources 2022-09-27 10:26:40 -04:00 committed by Stepan Oksanichenko
parent 20cec16ca9
commit 09c0553390
12 changed files with 134 additions and 335 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/v1.16.tar.gz SOURCES/nvme-cli-2.0.tar.gz

View File

@ -1 +1 @@
2706485a7adb8134943102ff3f1a087e003f2b1f SOURCES/v1.16.tar.gz ba824c8c79b2f5bbe77f3940481981ef02fa9787 SOURCES/nvme-cli-2.0.tar.gz

View File

@ -1,32 +0,0 @@
From f74ac1b841b0aae73969debaed0444f0ecb03dba Mon Sep 17 00:00:00 2001
From: Martin George <marting@netapp.com>
Date: Mon, 15 Nov 2021 16:00:47 +0530
Subject: [PATCH 1/3] fabrics: fix 'nvme connect' segfault if transport type is
omitted
Check if the transport type is available before dereferencing
it in discovery_trsvcid().
Fixes: 362c90f ("fabrics: add default port number for NVMe/TCP I/O
controllers")
Signed-off-by: Martin George <marting@netapp.com>
---
fabrics.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/fabrics.c b/fabrics.c
index d691191..adca89b 100644
--- a/fabrics.c
+++ b/fabrics.c
@@ -1070,6 +1070,8 @@ static void set_discovery_kato(struct fabrics_config *cfg)
static void discovery_trsvcid(struct fabrics_config *fabrics_cfg, bool discover)
{
+ if (!fabrics_cfg->transport)
+ return;
if (!strcmp(fabrics_cfg->transport, "tcp")) {
if (discover) {
/* Default port for NVMe/TCP discovery controllers */
--
2.27.0

View File

@ -0,0 +1,102 @@
From 43c1ac652b74182e483f2e8033a5f5fe417fb429 Mon Sep 17 00:00:00 2001
From: Daniel Wagner <dwagner@suse.de>
Date: Mon, 11 Jul 2022 13:39:39 +0200
Subject: [PATCH] nvme: Return status/error code for effects-log command
collect_effects_log eats up the return code from
nvme_get_log_cmd_effects. Forward it to the shell..
Fixes: 155fbebfe7b7 ("Update effects-log to handle multiple command sets")
Signed-off-by: Daniel Wagner <dwagner@suse.de>
---
nvme.c | 44 ++++++++++++++++++++++++--------------------
1 file changed, 24 insertions(+), 20 deletions(-)
diff --git a/nvme.c b/nvme.c
index a2a9996a..6df08d7e 100644
--- a/nvme.c
+++ b/nvme.c
@@ -587,18 +587,22 @@ ret:
return err;
}
-void collect_effects_log(int fd, enum nvme_csi csi, struct list_head *list, int flags)
+static int collect_effects_log(int fd, enum nvme_csi csi,
+ struct list_head *list, int flags)
{
+ nvme_effects_log_node_t *node;
int err;
- nvme_effects_log_node_t *node = malloc(sizeof(nvme_effects_log_node_t));
+
+ node = malloc(sizeof(nvme_effects_log_node_t));
if (!node)
- return;
+ return -ENOMEM;
+
node->csi = csi;
err = nvme_get_log_cmd_effects(fd, csi, &node->effects);
if (!err) {
list_add(list, &node->node);
- return;
+ return err;
}
else if (err > 0)
nvme_show_status(err);
@@ -606,6 +610,7 @@ void collect_effects_log(int fd, enum nvme_csi csi, struct list_head *list, int
fprintf(stderr, "effects log page: %s\n", nvme_strerror(errno));
free(node);
+ return err;
}
static int get_effects_log(int argc, char **argv, struct command *cmd, struct plugin *plugin)
@@ -676,29 +681,28 @@ static int get_effects_log(int argc, char **argv, struct command *cmd, struct pl
nvme_command_set_supported = NVME_CAP_CSS(cap) & NVME_CAP_CSS_NVM;
other_command_sets_supported = NVME_CAP_CSS(cap) & NVME_CAP_CSS_CSI;
+ if (nvme_command_set_supported)
+ err = collect_effects_log(fd, NVME_CSI_NVM,
+ &log_pages, flags);
- if (nvme_command_set_supported) {
- collect_effects_log(fd, NVME_CSI_NVM, &log_pages, flags);
- }
-
- if (other_command_sets_supported) {
- collect_effects_log(fd, NVME_CSI_ZNS, &log_pages, flags);
- }
-
- nvme_print_effects_log_pages(&log_pages, flags);
+ if (!err && other_command_sets_supported)
+ err = collect_effects_log(fd, NVME_CSI_ZNS,
+ &log_pages, flags);
- }
- else {
- collect_effects_log(fd, cfg.csi, &log_pages, flags);
- nvme_print_effects_log_pages(&log_pages, flags);
+ } else {
+ err = collect_effects_log(fd, cfg.csi, &log_pages, flags);
}
+ if (!err)
+ nvme_print_effects_log_pages(&log_pages, flags);
+ else if (err > 0)
+ nvme_show_status(err);
+ else
+ perror("effects log page");
close_fd:
- while ((node = list_pop(&log_pages, nvme_effects_log_node_t, node))) {
+ while ((node = list_pop(&log_pages, nvme_effects_log_node_t, node)))
free(node);
- }
-
close(fd);
ret:
return err;
--
2.31.1

View File

@ -1,29 +0,0 @@
From ff8f9b6f59b574fda24a071fb0af4381c0cc6d9f Mon Sep 17 00:00:00 2001
From: Maurizio Lombardi <mlombard@redhat.com>
Date: Thu, 9 Dec 2021 12:21:51 +0100
Subject: [PATCH 2/3] fabrics: fix a buffer overrun
the uuid buffer size must be at least 37 bytes to avoid
corrupting the memory
Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
---
fabrics.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fabrics.c b/fabrics.c
index adca89b..0766729 100644
--- a/fabrics.c
+++ b/fabrics.c
@@ -883,7 +883,7 @@ static char *hostnqn_generate_systemd(void)
static char *hostnqn_read_dmi(void)
{
- char uuid[16];
+ char uuid[37];
char *ret = NULL;
if (uuid_from_dmi(uuid) < 0)
--
2.27.0

View File

@ -1,36 +0,0 @@
From 821935cccfcad6b18da78d42f9ddf49f4cbe0b8e Mon Sep 17 00:00:00 2001
From: Daniel Wagner <dwagner@suse.de>
Date: Thu, 9 Dec 2021 15:40:26 +0100
Subject: [PATCH 3/3] bash: Fix nvme completion
Signed-off-by: Daniel Wagner <dwagner@suse.de>
---
completions/bash-nvme-completion.sh | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/completions/bash-nvme-completion.sh b/completions/bash-nvme-completion.sh
index 41938d7..902da01 100644
--- a/completions/bash-nvme-completion.sh
+++ b/completions/bash-nvme-completion.sh
@@ -101,8 +101,7 @@ _cmds="list list-subsys id-ctrl id-ns \
connect disconnect disconnect-all gen-hostnqn \
show-hostnqn dir-receive dir-send virt-mgmt \
rpmb boot-part-log fid-support-effects-log \
- supported-log-pages lockdown"
- supported-log-pages list-endgrp"
+ supported-log-pages lockdown list-endgrp"
# Add plugins:
for plugin in "${!_plugin_subcmds[@]}"; do
@@ -1368,7 +1367,7 @@ plugin_ymtc_opts () {
opts+=" --namespace-id= -n --raw-binary -b"
;;
"help")
- opts+=NO_OPTS
+ opts+=$NO_OPTS
;;
esac
--
2.27.0

View File

@ -1,39 +0,0 @@
From 45223fd3c5a13da9209c4f44d7593cb42cab94fb Mon Sep 17 00:00:00 2001
From: Maurizio Lombardi <mlombard@redhat.com>
Date: Tue, 14 Dec 2021 10:09:42 +0100
Subject: [PATCH 1/4] nvme: do not leak an open file handle
We performed a "sec_fd=open(cfg.file)" earlier, so we should not
overwrite the handle.
Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
---
nvme.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/nvme.c b/nvme.c
index 862f9b6..5beeac7 100644
--- a/nvme.c
+++ b/nvme.c
@@ -4379,17 +4379,10 @@ static int sec_send(int argc, char **argv, struct command *cmd, struct plugin *p
fprintf(stderr, "WARNING: --tl not dword aligned; unaligned bytes may be truncated\n");
if (strlen(cfg.file) == 0) {
+ close(sec_fd);
sec_fd = STDIN_FILENO;
sec_size = cfg.tl;
} else {
- sec_fd = open(cfg.file, O_RDONLY);
- if (sec_fd < 0) {
- fprintf(stderr, "Failed to open %s: %s\n",
- cfg.file, strerror(errno));
- err = -EINVAL;
- goto close_fd;
- }
-
err = fstat(sec_fd, &sb);
if (err < 0) {
perror("fstat");
--
2.27.0

View File

@ -1,35 +0,0 @@
From b580886dbc322b2a71d6c0c1b71f9fca7b750b02 Mon Sep 17 00:00:00 2001
From: Maurizio Lombardi <mlombard@redhat.com>
Date: Tue, 14 Dec 2021 09:58:09 +0100
Subject: [PATCH 2/4] nvme-topology: fix memory leaks in
nvme_logical_block_size_from_ns_char()
Free the allocated strings before returning from the function
Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
---
nvme-topology.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/nvme-topology.c b/nvme-topology.c
index 0a22f6b..6be2b09 100644
--- a/nvme-topology.c
+++ b/nvme-topology.c
@@ -686,10 +686,13 @@ int nvme_logical_block_size_from_ns_char(const char *dev)
return -EINVAL;
s = nvme_get_ctrl_attr(path, "logical_block_size");
+ free(path);
if (!s)
return -EINVAL;
- return atoi(s);
+ ret = atoi(s);
+ free(s);
+ return ret;
}
void *mmap_registers(const char *dev)
--
2.27.0

View File

@ -1,37 +0,0 @@
From 58c23ceb12d16756b2222a55d1d9dc5f34bb4fa4 Mon Sep 17 00:00:00 2001
From: James Smart <jsmart2021@gmail.com>
Date: Fri, 17 Dec 2021 11:32:32 -0800
Subject: [PATCH 3/4] nvme-cli: nvmf-connect@.service: Remove matching from
default syntax
commit 53aab69a0add added the "--matching" argument to the systemd
connect script that issues connect-all to a discovery controller. When
this argument is used, only discovery log entries whose target port
traddr's match the traddr of the discovery controller will be connected
to. This eliminates the ability to do referrals by the discovery
controller.
Revert the commit so that the "--matching" argument is not default
behavior.
Signed-off-by: James Smart <jsmart2021@gmail.com>
CC: Martin Wilck <mwilck@suse.com>
Signed-off-by: Daniel Wagner <dwagner@suse.de>
Link: https://lore.kernel.org/r/20211217193232.29034-1-jsmart2021@gmail.com
---
nvmf-autoconnect/systemd/nvmf-connect@.service | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/nvmf-autoconnect/systemd/nvmf-connect@.service b/nvmf-autoconnect/systemd/nvmf-connect@.service
index 5fbf081..c60f146 100644
--- a/nvmf-autoconnect/systemd/nvmf-connect@.service
+++ b/nvmf-autoconnect/systemd/nvmf-connect@.service
@@ -11,4 +11,4 @@ Requires=nvmf-connect.target
[Service]
Type=simple
Environment="CONNECT_ARGS=%i"
-ExecStart=/bin/sh -c "nvme connect-all --matching --quiet `/bin/echo -e '${CONNECT_ARGS}'`"
+ExecStart=/bin/sh -c "nvme connect-all --quiet `/bin/echo -e '${CONNECT_ARGS}'`"
--
2.27.0

View File

@ -1,86 +0,0 @@
From 1264c6323937c4a0342174fdd9be5a66ab1eaf24 Mon Sep 17 00:00:00 2001
From: James Smart <jsmart2021@gmail.com>
Date: Fri, 17 Dec 2021 14:20:22 -0800
Subject: [PATCH 4/4] nvme-cli: Make connect-all matching be case insensitive
The comparison routine that checks discovery controller traddr with a
discovery log traddr uses a simple strncmp. For FC, which kicks off
connect-all requests vay systemd, the nvme-fc transport will build
traddr strings with lower case hexadecimal. Some FC discovery
controllers return traddr strings with upper case hexadecimal. There
was is no rqmt in the NVME-FC spec that it be upper or lower case.
Given the case difference, the connect-all fails the match logic and
doesn't connect to storage.
Revise the traddr comparison routine to duplicate the strings and
convert them to lower case for comparison.
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Daniel Wagner <dwagner@suse.de>
Link: https://lore.kernel.org/r/20211217222022.30516-1-jsmart2021@gmail.com
---
fabrics.c | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/fabrics.c b/fabrics.c
index 0766729..a1e2593 100644
--- a/fabrics.c
+++ b/fabrics.c
@@ -34,6 +34,7 @@
#include <stddef.h>
#include <syslog.h>
#include <time.h>
+#include <ctype.h>
#include <sys/types.h>
#include <arpa/inet.h>
@@ -681,6 +682,12 @@ static int space_strip_len(int max, const char *str)
return i + 1;
}
+static void strtolower(char *str)
+{
+ for ( ; *str; str++)
+ *str = tolower(*str);
+}
+
static void print_discovery_log(struct nvmf_disc_rsp_page_hdr *log, int numrec,
int instance)
{
@@ -1385,7 +1392,9 @@ static bool cargs_match_found(struct nvmf_disc_rsp_page_entry *entry)
static bool should_connect(struct nvmf_disc_rsp_page_entry *entry)
{
+ char *dctrl_traddr, *log_traddr;
int len;
+ bool connect = true;
if (cargs_match_found(entry))
return false;
@@ -1398,7 +1407,22 @@ static bool should_connect(struct nvmf_disc_rsp_page_entry *entry)
return true;
len = space_strip_len(NVMF_TRADDR_SIZE, entry->traddr);
- return !strncmp(fabrics_cfg.traddr, entry->traddr, len);
+
+ dctrl_traddr = strdup(fabrics_cfg.traddr);
+ log_traddr = strndup(entry->traddr, len);
+ if (!dctrl_traddr || !log_traddr)
+ goto free_exit;
+
+ strtolower(dctrl_traddr);
+ strtolower(log_traddr);
+
+ connect = (strlen(dctrl_traddr) == len) &&
+ !strcmp(dctrl_traddr, log_traddr);
+
+free_exit:
+ free(log_traddr);
+ free(dctrl_traddr);
+ return connect;
}
static int connect_ctrls(struct nvmf_disc_rsp_page_hdr *log, int numrec)
--
2.27.0

View File

@ -1,13 +0,0 @@
--- nvme-cli-1.9/Makefile.orig 2020-05-27 14:04:56.259961135 -0400
+++ nvme-cli-1.9/Makefile 2020-05-27 14:05:22.796185371 -0400
@@ -125,8 +125,8 @@
$(INSTALL) -m 644 -T ./etc/discovery.conf.in $(DESTDIR)$(SYSCONFDIR)/nvme/discovery.conf; \
fi
-install-spec: install-bin install-man install-bash-completion install-zsh-completion install-etc install-systemd install-udev install-dracut
-install: install-spec install-hostparams
+install-spec: install-bin install-man install-bash-completion install-zsh-completion install-systemd install-udev install-dracut
+install: install-spec
nvme.spec: nvme.spec.in NVME-VERSION-FILE
sed -e 's/@@VERSION@@/$(NVME_VERSION)/g' < $< > $@+

View File

@ -2,26 +2,27 @@
#%%global shortcommit0 %%(c=%%{commit0}; echo ${c:0:7}) #%%global shortcommit0 %%(c=%%{commit0}; echo ${c:0:7})
Name: nvme-cli Name: nvme-cli
Version: 1.16 Version: 2.0
Release: 3%{?dist} Release: 3%{?dist}
Summary: NVMe management command line interface Summary: NVMe management command line interface
License: GPLv2+ License: GPLv2+
URL: https://github.com/linux-nvme/nvme-cli URL: https://github.com/linux-nvme/nvme-cli
Source0: https://github.com/linux-nvme/%{name}/archive/v%{version}.tar.gz Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
Patch0: nvme-cli-makefile-dont-install-host-params-patch #Patch0: nvme-cli-makefile-dont-install-host-params-patch
Patch1: 0001-fabrics-fix-nvme-connect-segfault-if-transport-type-.patch Patch0: 0001-nvme-Return-status-error-code-for-effects-log-comman.patch
Patch2: 0002-fabrics-fix-a-buffer-overrun.patch
Patch3: 0003-bash-Fix-nvme-completion.patch
Patch4: 0004-nvme-do-not-leak-an-open-file-handle.patch
Patch5: 0005-nvme-topology-fix-memory-leaks-in-nvme_logical_block.patch
Patch6: 0006-nvme-cli-nvmf-connect-.service-Remove-matching-from-.patch
Patch7: 0007-nvme-cli-Make-connect-all-matching-be-case-insensiti.patch
BuildRequires: meson >= 0.47.0
BuildRequires: gcc gcc-c++
BuildRequires: libuuid-devel BuildRequires: libuuid-devel
BuildRequires: gcc
BuildRequires: systemd-devel BuildRequires: systemd-devel
BuildRequires: zlib-devel
BuildRequires: libnvme-devel >= 1.0
BuildRequires: json-c-devel >= 0.14
BuildRequires: asciidoc
BuildRequires: xmlto
Requires: util-linux Requires: util-linux
%description %description
@ -30,27 +31,16 @@ nvme-cli provides NVM-Express user space tooling for Linux.
%prep %prep
#%%setup -qn %%{name}-%%{commit0} #%%setup -qn %%{name}-%%{commit0}
%setup -q %setup -q
%patch0 -p1 %patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%build %build
%meson -Dudevrulesdir=%{_udevrulesdir} -Dsystemddir=%{_unitdir} -Ddocs=all -Ddocs-build=true -Dhtmldir=%{_pkgdocdir}
# CFLAGS on the command line breaks the build. It works okay as an %meson_build
# environment variable, though. See:
# https://github.com/linux-nvme/nvme-cli/pull/480
CFLAGS="%{optflags}" make PREFIX=/usr LDFLAGS="%{__global_ldflags}" %{?_smp_mflags}
%install %install
%make_install PREFIX=/usr UDEVDIR="%{_udevrulesdir}/.." SYSTEMDDIR="%{_unitdir}/.." %meson_install
mkdir -p %{buildroot}%{_sysconfdir}/nvme
# hostid and hostnqn are supposed to be unique per machine. We obviously # hostid and hostnqn are supposed to be unique per machine. We obviously
# can't package them. # can't package them.
@ -60,15 +50,20 @@ mkdir -p %{buildroot}%{_sysconfdir}/nvme
# Do not install the dracut rule yet. See rhbz 1742764 # Do not install the dracut rule yet. See rhbz 1742764
rm -f %{buildroot}/usr/lib/dracut/dracut.conf.d/70-nvmf-autoconnect.conf rm -f %{buildroot}/usr/lib/dracut/dracut.conf.d/70-nvmf-autoconnect.conf
# Move html docs into the right place
mv %{buildroot}%{_pkgdocdir}/nvme %{buildroot}%{_pkgdocdir}/html
rm -rf %{buildroot}%{_pkgdocdir}/nvme
%files %files
%license LICENSE %license LICENSE
%doc README.md %doc README.md
%doc %{_pkgdocdir}
%{_sbindir}/nvme %{_sbindir}/nvme
%{_mandir}/man1/nvme*.gz %{_mandir}/man1/nvme*.gz
%{_datadir}/bash-completion/completions/nvme %{_datadir}/bash-completion/completions/nvme
%{_datadir}/zsh/site-functions/_nvme %{_datadir}/zsh/site-functions/_nvme
%dir %{_sysconfdir}/nvme %dir %{_sysconfdir}/nvme
%{_sysconfdir}/nvme/discovery.conf
%{_unitdir}/nvmefc-boot-connections.service %{_unitdir}/nvmefc-boot-connections.service
%{_unitdir}/nvmf-autoconnect.service %{_unitdir}/nvmf-autoconnect.service
%{_unitdir}/nvmf-connect.target %{_unitdir}/nvmf-connect.target
@ -95,6 +90,15 @@ if [ $1 -eq 1 ] || [ $1 -eq 2 ]; then
fi fi
%changelog %changelog
* Fri Jul 15 2022 Maurizio Lombardi <mlombard@redhat.com> - 2.0-3
- Fix BZ2105742
* Thu Jun 16 2022 Maurizio Lombardi <mlombard@redhat.com> - 2.0-2
- Fix the gating tests
* Wed Apr 27 2022 Maurizio Lombardi <mlombard@redhat.com> - 2.0-1
- Upgrade to version 2.0
* Mon Feb 07 2022 Maurizio Lombardi <mlombard@redhat.com> - 1.16-3 * Mon Feb 07 2022 Maurizio Lombardi <mlombard@redhat.com> - 1.16-3
- Add a few bugfixes - Add a few bugfixes