diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f196bae --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/v1.8.1.tar.gz diff --git a/.nvme-cli.metadata b/.nvme-cli.metadata new file mode 100644 index 0000000..e375033 --- /dev/null +++ b/.nvme-cli.metadata @@ -0,0 +1 @@ +349affaf735fe14a8f8f4f48238d357d712aba40 SOURCES/v1.8.1.tar.gz diff --git a/SOURCES/nvme-cli-fix-typo-removing-dup-are-patch b/SOURCES/nvme-cli-fix-typo-removing-dup-are-patch new file mode 100644 index 0000000..c147705 --- /dev/null +++ b/SOURCES/nvme-cli-fix-typo-removing-dup-are-patch @@ -0,0 +1,21 @@ +commit 0c2fef91167a8a18b00a295cc6111fd874c8aa22 +Author: Simon Schricker +Date: Thu Apr 11 11:23:16 2019 +0200 + + nvme-cli: fix typo, removing the duplicate 'are' + + Signed-off-by: Simon Schricker + +diff --git a/Documentation/nvme-netapp-ontapdevices.txt b/Documentation/nvme-netapp-ontapdevices.txt +index 8eaa73f..c292758 100644 +--- a/Documentation/nvme-netapp-ontapdevices.txt ++++ b/Documentation/nvme-netapp-ontapdevices.txt +@@ -13,7 +13,7 @@ SYNOPSIS + DESCRIPTION + ----------- + Display information about ONTAP devices on the host. The ONTAP devices are +-are identified using the Identify Controller data. ++identified using the Identify Controller data. + + OPTIONS + ------- diff --git a/SOURCES/nvme-cli-regen-docs-patch b/SOURCES/nvme-cli-regen-docs-patch new file mode 100644 index 0000000..5c8ddd4 --- /dev/null +++ b/SOURCES/nvme-cli-regen-docs-patch @@ -0,0 +1,153 @@ +commit 87438229b1dbbbce599cf24a820665abc571a5dc +Author: Keith Busch +Date: Mon Apr 15 08:38:14 2019 -0600 + + Regen docs + + Signed-off-by: Keith Busch + +diff --git a/Documentation/nvme-connect-all.1 b/Documentation/nvme-connect-all.1 +index 07fa229..2d79d41 100644 +--- a/Documentation/nvme-connect-all.1 ++++ b/Documentation/nvme-connect-all.1 +@@ -2,12 +2,12 @@ + .\" Title: nvme-connect-all + .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] + .\" Generator: DocBook XSL Stylesheets vsnapshot +-.\" Date: 04/08/2019 ++.\" Date: 04/15/2019 + .\" Manual: NVMe Manual + .\" Source: NVMe + .\" Language: English + .\" +-.TH "NVME\-CONNECT\-ALL" "1" "04/08/2019" "NVMe" "NVMe Manual" ++.TH "NVME\-CONNECT\-ALL" "1" "04/15/2019" "NVMe" "NVMe Manual" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +diff --git a/Documentation/nvme-connect.1 b/Documentation/nvme-connect.1 +index 2b2b80d..2e20942 100644 +--- a/Documentation/nvme-connect.1 ++++ b/Documentation/nvme-connect.1 +@@ -2,12 +2,12 @@ + .\" Title: nvme-connect + .\" Author: [see the "AUTHORS" section] + .\" Generator: DocBook XSL Stylesheets vsnapshot +-.\" Date: 04/08/2019 ++.\" Date: 04/15/2019 + .\" Manual: NVMe Manual + .\" Source: NVMe + .\" Language: English + .\" +-.TH "NVME\-CONNECT" "1" "04/08/2019" "NVMe" "NVMe Manual" ++.TH "NVME\-CONNECT" "1" "04/15/2019" "NVMe" "NVMe Manual" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +diff --git a/Documentation/nvme-disconnect.1 b/Documentation/nvme-disconnect.1 +index 450484e..8ab10c8 100644 +--- a/Documentation/nvme-disconnect.1 ++++ b/Documentation/nvme-disconnect.1 +@@ -2,12 +2,12 @@ + .\" Title: nvme-disconnect + .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] + .\" Generator: DocBook XSL Stylesheets vsnapshot +-.\" Date: 04/08/2019 ++.\" Date: 04/15/2019 + .\" Manual: NVMe Manual + .\" Source: NVMe + .\" Language: English + .\" +-.TH "NVME\-DISCONNECT" "1" "04/08/2019" "NVMe" "NVMe Manual" ++.TH "NVME\-DISCONNECT" "1" "04/15/2019" "NVMe" "NVMe Manual" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +diff --git a/Documentation/nvme-discover.1 b/Documentation/nvme-discover.1 +index 57e0804..04f13a7 100644 +--- a/Documentation/nvme-discover.1 ++++ b/Documentation/nvme-discover.1 +@@ -2,12 +2,12 @@ + .\" Title: nvme-discover + .\" Author: [see the "AUTHORS" section] + .\" Generator: DocBook XSL Stylesheets vsnapshot +-.\" Date: 04/08/2019 ++.\" Date: 04/15/2019 + .\" Manual: NVMe Manual + .\" Source: NVMe + .\" Language: English + .\" +-.TH "NVME\-DISCOVER" "1" "04/08/2019" "NVMe" "NVMe Manual" ++.TH "NVME\-DISCOVER" "1" "04/15/2019" "NVMe" "NVMe Manual" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +diff --git a/Documentation/nvme-netapp-ontapdevices.1 b/Documentation/nvme-netapp-ontapdevices.1 +index 94c4ac2..b74b7db 100644 +--- a/Documentation/nvme-netapp-ontapdevices.1 ++++ b/Documentation/nvme-netapp-ontapdevices.1 +@@ -2,12 +2,12 @@ + .\" Title: nvme-netapp-ontapdevices + .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] + .\" Generator: DocBook XSL Stylesheets vsnapshot +-.\" Date: 04/08/2019 ++.\" Date: 04/15/2019 + .\" Manual: NVMe Manual + .\" Source: NVMe + .\" Language: English + .\" +-.TH "NVME\-NETAPP\-ONTAPD" "1" "04/08/2019" "NVMe" "NVMe Manual" ++.TH "NVME\-NETAPP\-ONTAPD" "1" "04/15/2019" "NVMe" "NVMe Manual" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -36,7 +36,7 @@ nvme-netapp-ontapdevices \- Display information about ONTAP devices + .fi + .SH "DESCRIPTION" + .sp +-Display information about ONTAP devices on the host\&. The ONTAP devices are are identified using the Identify Controller data\&. ++Display information about ONTAP devices on the host\&. The ONTAP devices are identified using the Identify Controller data\&. + .SH "OPTIONS" + .PP + \-o , \-\-output\-format= +diff --git a/Documentation/nvme-netapp-ontapdevices.html b/Documentation/nvme-netapp-ontapdevices.html +index 7bf1ca0..29f4bda 100644 +--- a/Documentation/nvme-netapp-ontapdevices.html ++++ b/Documentation/nvme-netapp-ontapdevices.html +@@ -755,7 +755,7 @@ nvme-netapp-ontapdevices(1) Manual Page +

DESCRIPTION

+
+

Display information about ONTAP devices on the host. The ONTAP devices are +-are identified using the Identify Controller data.

++identified using the Identify Controller data.

+ + +
+@@ -803,7 +803,7 @@ Display information, in a column-based format, for ONTAP devices. +

+ + +diff --git a/Documentation/nvme-show-regs.1 b/Documentation/nvme-show-regs.1 +index 4372d82..327bf9d 100644 +--- a/Documentation/nvme-show-regs.1 ++++ b/Documentation/nvme-show-regs.1 +@@ -2,12 +2,12 @@ + .\" Title: nvme-id-ns + .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] + .\" Generator: DocBook XSL Stylesheets vsnapshot +-.\" Date: 04/08/2019 ++.\" Date: 04/15/2019 + .\" Manual: NVMe Manual + .\" Source: NVMe + .\" Language: English + .\" +-.TH "NVME\-ID\-NS" "1" "04/08/2019" "NVMe" "NVMe Manual" ++.TH "NVME\-ID\-NS" "1" "04/15/2019" "NVMe" "NVMe Manual" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- diff --git a/SOURCES/nvme-ioctl-fix-double-free-in-a-loop-of-get-property-patch b/SOURCES/nvme-ioctl-fix-double-free-in-a-loop-of-get-property-patch new file mode 100644 index 0000000..2a77544 --- /dev/null +++ b/SOURCES/nvme-ioctl-fix-double-free-in-a-loop-of-get-property-patch @@ -0,0 +1,30 @@ +commit d16e1d2784a48c9b25e58a0e821c737670c6cdc8 +Author: Minwoo Im +Date: Wed Apr 24 01:46:29 2019 +0100 + + ioctl: Fix double-free in a loop of get_property + + As it was reported, *pbar could be double-freed in case + get_property_helper() fails in the middle of the loop. + + This issue was reported by Ken Heitke on: + https://github.com/linux-nvme/nvme-cli/pull/471 + + Signed-off-by: Minwoo Im + +diff --git a/nvme-ioctl.c b/nvme-ioctl.c +index 4cf7aeb..16fdc66 100644 +--- a/nvme-ioctl.c ++++ b/nvme-ioctl.c +@@ -626,8 +626,10 @@ int nvme_get_properties(int fd, void **pbar) + err = get_property_helper(fd, offset, *pbar + offset, &advance); + if (!err) + ret = 0; +- else ++ else { + free(*pbar); ++ break; ++ } + } + + return ret; diff --git a/SOURCES/nvme-ioctl-fix-wrong-ret-case-of-get-prop-patch b/SOURCES/nvme-ioctl-fix-wrong-ret-case-of-get-prop-patch new file mode 100644 index 0000000..43ddfd0 --- /dev/null +++ b/SOURCES/nvme-ioctl-fix-wrong-ret-case-of-get-prop-patch @@ -0,0 +1,44 @@ +commit 5b7506198a6872764a51e32363e219916e1e592e +Author: Minwoo Im +Date: Wed Apr 24 01:48:58 2019 +0100 + + ioctl: Fix wrong return case of get_property + + If get_property_helper() succeeds in the first time, and then fails in + the next time, then the ret value will not be updated to an error value. + This patch removes 'ret' variable to make 'err' to return being updated + everytime get_property_helper() invoked. + + Signed-off-by: Minwoo Im + +diff --git a/nvme-ioctl.c b/nvme-ioctl.c +index 16fdc66..75bf9fa 100644 +--- a/nvme-ioctl.c ++++ b/nvme-ioctl.c +@@ -612,7 +612,7 @@ int nvme_get_property(int fd, int offset, uint64_t *value) + int nvme_get_properties(int fd, void **pbar) + { + int offset, advance; +- int err, ret = -EINVAL; ++ int err; + int size = getpagesize(); + + *pbar = malloc(size); +@@ -624,15 +624,13 @@ int nvme_get_properties(int fd, void **pbar) + memset(*pbar, 0xff, size); + for (offset = NVME_REG_CAP; offset <= NVME_REG_CMBSZ; offset += advance) { + err = get_property_helper(fd, offset, *pbar + offset, &advance); +- if (!err) +- ret = 0; +- else { ++ if (err) { + free(*pbar); + break; + } + } + +- return ret; ++ return err; + } + + int nvme_set_property(int fd, int offset, int value) diff --git a/SPECS/nvme-cli.spec b/SPECS/nvme-cli.spec new file mode 100644 index 0000000..b1b8b25 --- /dev/null +++ b/SPECS/nvme-cli.spec @@ -0,0 +1,155 @@ +#%global commit0 bdbb4da0979fbdc079cf98410cdb31cf799e83b3 +#%global shortcommit0 %(c=%{commit0}; echo ${c:0:7}) + +Name: nvme-cli +Version: 1.8.1 +Release: 3%{?dist} +Summary: NVMe management command line interface + +License: GPLv2+ +URL: https://github.com/linux-nvme/nvme-cli +#Source0: https://github.com/linux-nvme/%{name}/archive/%{commit0}.tar.gz +Source0: https://github.com/linux-nvme/%{name}/archive/v%{version}.tar.gz + +Patch0: nvme-cli-fix-typo-removing-dup-are-patch +Patch1: nvme-cli-regen-docs-patch +Patch2: nvme-ioctl-fix-double-free-in-a-loop-of-get-property-patch +Patch3: nvme-ioctl-fix-wrong-ret-case-of-get-prop-patch + +BuildRequires: libuuid-devel +BuildRequires: gcc + +%description +nvme-cli provides NVM-Express user space tooling for Linux. + +%prep +#%setup -qn %{name}-%{commit0} +%setup +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 + +%build +# NB: the -I. part works around a bug fixed up stream by commit 254bcd6b2343 +# ("Fix CFLAGS parameter"). Rather than patching the fix in, I just added +# an extra -I. In the next release, we should be able to drop this hack. +make PREFIX=/usr CFLAGS="%{optflags} -std=c99 -I." LDFLAGS="%{__global_ldflags}" %{?_smp_mflags} + + +%install +%make_install PREFIX=/usr +mkdir -p %{buildroot}%{_sysconfdir}/nvme + + +%files +%license LICENSE +%doc README.md +%{_sbindir}/nvme +%{_mandir}/man1/nvme*.gz +%{_datadir}/bash-completion/completions/nvme +%{_datadir}/zsh/site-functions/_nvme +%dir %{_sysconfdir}/nvme + +%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 + chmod 644 /etc/nvme/hostnqn + fi + if [ ! -f /etc/nvme/hostid ]; then + uuidgen > /etc/nvme/hostid + fi +fi + +%preun +if [ -d /etc/nvme ]; then + rm -f /etc/nvme/hostnqn + rm -f /etc/nvme/hostid + if [ ! -n "`ls -A /etc/nvme`" ]; then + rm -rf /etc/nvme + fi +fi + +%changelog +* Tue May 08 2019 dmilburn@redhat.com - 1.8.1-3 +- Fix show_regs over RDMA with get_prop fix. + +* Mon Apr 29 2019 dmilburn@redhat.com - 1.8.1-2 +- Fix show_regs with upstream ioctl fix. + +* Mon Apr 15 2019 luto@kernel.org - 1.8.1-1 +- Update to 1.8.1-1. +- Remove a build hack. + +* Sun Feb 24 2019 luto@kernel.org - 1.7-2 +- Create /etc/nvme + +* Sun Feb 24 2019 luto@kernel.org - 1.7-1 +- Bump to 1.7 +- Clean up some trivial rpmlint complaints + +* Tue Oct 16 2018 dmilburn@redhat.com - 1.6-2 +- Pull in upstream fixes + +* Tue Jul 24 2018 luto@kernel.org - 1.6-1 +- Update to 1.6 + +* Fri Jul 13 2018 Fedora Release Engineering - 1.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Thu Feb 08 2018 Fedora Release Engineering - 1.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Nov 22 2017 luto@kernel.org - 1.4-1 +- Update to 1.4 + +* Thu Aug 03 2017 Fedora Release Engineering - 1.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 1.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon May 22 2017 luto@kernel.org - 1.3-1 +- Update to 1.3 + +* Wed Apr 19 2017 luto@kernel.org - 1.2-2 +- Update to 1.2 +- 1.2-1 never existed + +* Sat Feb 11 2017 Fedora Release Engineering - 1.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Feb 01 2017 luto@kernel.org - 1.1-1 +- Update to 1.1 + +* Sun Nov 20 2016 luto@kernel.org - 1.0-1 +- Update to 1.0 + +* Mon Oct 31 2016 luto@kernel.org - 0.9-1 +- Update to 0.9 + +* Thu Jun 30 2016 luto@kernel.org - 0.8-1 +- Update to 0.8 + +* Tue May 31 2016 luto@kernel.org - 0.7-1 +- Update to 0.7 + +* Fri Mar 18 2016 luto@kernel.org - 0.5-1 +- Update to 0.5 + +* Sun Mar 06 2016 luto@kernel.org - 0.4-1 +- Update to 0.4 + +* Thu Feb 04 2016 Fedora Release Engineering - 0.2-3.20160112gitbdbb4da +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jan 20 2016 luto@kernel.org - 0.2-2.20160112gitbdbb4da +- Update to new upstream commit, fixing #49. "nvme list" now works. + +* Wed Jan 13 2016 luto@kernel.org - 0.2-1.20160112gitde3e0f1 +- Initial import.