import nvme-cli-1.14-2.el8

This commit is contained in:
CentOS Sources 2021-07-29 04:19:10 +00:00 committed by Andrew Lukoshko
parent 66dc547e54
commit 46f2c9be4c
6 changed files with 232 additions and 1 deletions

View File

@ -0,0 +1,46 @@
From 7c2833a047ad9754ccb9b26b863f3967b85aad57 Mon Sep 17 00:00:00 2001
From: Daniel Wagner <dwagner@suse.de>
Date: Wed, 2 Jun 2021 15:42:42 +0200
Subject: [PATCH] nvme-topology: no error message when openeing of controller
fails
scan_ctrl() tries to open the controller device but this operation is
expected to fail for fabric setups when a path is down. This can lead
to the situation where the subsystem is in a healthy state, e.g. at
least one path is in live state. In this scenario a failure is printed
although everything is fine.
This is especially a problem for NVMe/TCP configs where the controller
remains in 'connecting' state for 10 minutes following a path
down. All that time 'nvme list' ends up in errors and that's a major
irritant for end users. This also makes CI automation more complex
than needed.
Just drop the error message as we have other error paths in this
function where we just bail out if they fail without printing an
error message.
Signed-off-by: Daniel Wagner <dwagner@suse.de>
---
nvme-topology.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/nvme-topology.c b/nvme-topology.c
index 31cf7f9..47121e4 100644
--- a/nvme-topology.c
+++ b/nvme-topology.c
@@ -319,10 +319,8 @@ static int scan_ctrl(struct nvme_ctrl *c, char *p, __u32 ns_instance)
return ret;
fd = open(path, O_RDONLY);
- if (fd < 0) {
- fprintf(stderr, "Failed to open %s\n", path);
+ if (fd < 0)
goto free;
- }
ret = nvme_identify_ctrl(fd, &c->id);
if (ret < 0)
--
2.27.0

View File

@ -0,0 +1,40 @@
From edf0998f5a668b141c73a9648acf427105586372 Mon Sep 17 00:00:00 2001
From: Martin George <marting@netapp.com>
Date: Sat, 5 Jun 2021 15:16:26 +0530
Subject: [PATCH] fabrics: skip connect if transport type doesn't match
Discovery log page data may include records belonging to different
transport types. If during a nvme connect-all, a connect is attempted
on a record that doesn't match the transport type passed here, it
would end up in a connect failure for that record. For e.g. one would
see the below error if a connect is attempted on a tcp record but the
transport type passed here is 'fc' and its associated parameters:
nvme_tcp: malformed src address passed: nn-0xXXXX:pn-0xYYYY
Fix this by proceeding with the connect only if the appropriate
transport type matches a given record during the connect-all.
Signed-off-by: Martin George <marting@netapp.com>
---
fabrics.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/fabrics.c b/fabrics.c
index db42ddb..6cc142d 100644
--- a/fabrics.c
+++ b/fabrics.c
@@ -1354,6 +1354,10 @@ static bool should_connect(struct nvmf_disc_rsp_page_entry *entry)
if (cargs_match_found(entry))
return false;
+ /* skip connect if the transport type doesn't match */
+ if (strcmp(fabrics_cfg.transport, trtype_str(entry->trtype)))
+ return false;
+
if (!fabrics_cfg.matching_only || !fabrics_cfg.traddr)
return true;
--
2.27.0

View File

@ -0,0 +1,30 @@
From 22c19f6a5b58ad9ce99d2c2a95239eab911d908e Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare@suse.de>
Date: Tue, 22 Jun 2021 13:40:23 +0200
Subject: [PATCH] nvme-ioctl: return -1 on failure from nvme_get_nsid()
If the call to 'fstat' fails we should be returning '-1' (as the
errno is already set by fstat()) to be compliant with the return
values from 'ioctl()'.
Signed-off-by: Hannes Reinecke <hare@suse.de>
---
nvme-ioctl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/nvme-ioctl.c b/nvme-ioctl.c
index cc12ae6..64152b1 100644
--- a/nvme-ioctl.c
+++ b/nvme-ioctl.c
@@ -68,7 +68,7 @@ int nvme_get_nsid(int fd)
int err = fstat(fd, &nvme_stat);
if (err < 0)
- return -errno;
+ return err;
return ioctl(fd, NVME_IOCTL_ID);
}
--
2.27.0

View File

@ -0,0 +1,66 @@
From ce9d818f420af6be0801004a77e91915587fc02f Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare@suse.de>
Date: Tue, 22 Jun 2021 13:48:36 +0200
Subject: [PATCH] nvme-topology: scan all controllers in scan_subsystem()
When a controller is unavailable or resetting during scan_subsystem()
we should be checking all available controllers for this namespace
to avoid a spurious failure.
Signed-off-by: Hannes Reinecke <hare@suse.de>
---
nvme-topology.c | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/nvme-topology.c b/nvme-topology.c
index 47121e4..6d2edaa 100644
--- a/nvme-topology.c
+++ b/nvme-topology.c
@@ -155,23 +155,23 @@ static int scan_namespace(struct nvme_namespace *n)
return ret;
fd = open(path, O_RDONLY);
- if (fd < 0)
+ if (fd < 0) {
+ ret = fd;
goto free;
-
+ }
if (!n->nsid) {
- n->nsid = nvme_get_nsid(fd);
- if (n->nsid < 0)
+ ret = nvme_get_nsid(fd);
+ if (ret < 0)
goto close_fd;
+ n->nsid = ret;
}
ret = nvme_identify_ns(fd, n->nsid, 0, &n->ns);
- if (ret < 0)
- goto close_fd;
close_fd:
close(fd);
free:
free(path);
- return 0;
+ return ret;
}
static char *get_nvme_ctrl_path_ana_state(char *path, int nsid)
@@ -382,8 +382,11 @@ static int scan_subsystem(struct nvme_subsystem *s, __u32 ns_instance, int nsid)
for (i = 0; i < s->nr_namespaces; i++) {
n = &s->namespaces[i];
n->name = strdup(ns[i]->d_name);
- n->ctrl = &s->ctrls[0];
- scan_namespace(n);
+ for (j = 0; j < s->nr_ctrls; j++) {
+ n->ctrl = &s->ctrls[j];
+ if (!scan_namespace(n))
+ break;
+ }
}
} else {
i = s->nr_namespaces;
--
2.27.0

View File

@ -0,0 +1,36 @@
From bace574bbe55739a49e7fada5483b3d3a5ef361c Mon Sep 17 00:00:00 2001
From: Martin George <marting@netapp.com>
Date: Mon, 19 Jul 2021 10:07:48 -0700
Subject: [PATCH] nvme-topology: fix controller check in scan_subsystem()
Fix the current check in scan_subsystem() so that it iterates
through all the available controllers till it gets a 'live'
controller for that namespace.
Link: https://github.com/linux-nvme/nvme-cli/pull/1101
Fixes: ce9d818 ("nvme-topology: scan all controllers in scan_subsystem()")
Signed-off-by: Martin George <marting@netapp.com>
Reviewed-by: Daniel Wagner <dwagner@suse.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
---
nvme-topology.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/nvme-topology.c b/nvme-topology.c
index 6d2edaa..7a6baa0 100644
--- a/nvme-topology.c
+++ b/nvme-topology.c
@@ -384,7 +384,9 @@ static int scan_subsystem(struct nvme_subsystem *s, __u32 ns_instance, int nsid)
n->name = strdup(ns[i]->d_name);
for (j = 0; j < s->nr_ctrls; j++) {
n->ctrl = &s->ctrls[j];
- if (!scan_namespace(n))
+ if (!strcmp(n->ctrl->state, "live") &&
+ !scan_namespace(n))
+
break;
}
}
--
2.27.0

View File

@ -3,7 +3,7 @@
Name: nvme-cli
Version: 1.14
Release: 1%{?dist}
Release: 2%{?dist}
Summary: NVMe management command line interface
License: GPLv2+
@ -11,6 +11,11 @@ URL: https://github.com/linux-nvme/nvme-cli
Source0: https://github.com/linux-nvme/%{name}/archive/v%{version}.tar.gz
Patch0: nvme-cli-makefile-dont-install-host-params-patch
Patch1: 0001-nvme-topology-no-error-message-when-openeing-of-cont.patch
Patch2: 0002-fabrics-skip-connect-if-transport-type-doesn-t-match.patch
Patch3: 0003-nvme-ioctl-return-1-on-failure-from-nvme_get_nsid.patch
Patch4: 0004-nvme-topology-scan-all-controllers-in-scan_subsystem.patch
Patch5: 0005-nvme-topology-fix-controller-check-in-scan_subsystem.patch
BuildRequires: libuuid-devel
BuildRequires: gcc
@ -24,6 +29,11 @@ nvme-cli provides NVM-Express user space tooling for Linux.
#%%setup -qn %%{name}-%%{commit0}
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%build
@ -81,6 +91,9 @@ if [ $1 -eq 1 ] || [ $1 -eq 2 ]; then
fi
%changelog
* Thu Jul 22 2021 Maurizio Lombardi <mlombard@redhat.com> - 1.14-2
- Merge various bugfixes
* Wed Apr 28 2021 Maurizio Lombardi <mlombard@redhat.com> - 1.14-1
- Update to version v1.14