commit 52cbdf18c2baa64b5a54f1281e8d1e231245ba91 Author: CentOS Sources Date: Tue Nov 15 02:02:35 2022 -0500 import nvme-cli-2.0-4.el9 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6afb700 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/nvme-cli-2.0.tar.gz diff --git a/.nvme-cli.metadata b/.nvme-cli.metadata new file mode 100644 index 0000000..3a55172 --- /dev/null +++ b/.nvme-cli.metadata @@ -0,0 +1 @@ +ba824c8c79b2f5bbe77f3940481981ef02fa9787 SOURCES/nvme-cli-2.0.tar.gz diff --git a/SOURCES/0001-nvme-Return-status-error-code-for-effects-log-comman.patch b/SOURCES/0001-nvme-Return-status-error-code-for-effects-log-comman.patch new file mode 100644 index 0000000..16b565c --- /dev/null +++ b/SOURCES/0001-nvme-Return-status-error-code-for-effects-log-comman.patch @@ -0,0 +1,102 @@ +From 43c1ac652b74182e483f2e8033a5f5fe417fb429 Mon Sep 17 00:00:00 2001 +From: Daniel Wagner +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 +--- + 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 + diff --git a/SOURCES/0002-completions-Collapse-declaration-and-attribute-assig.patch b/SOURCES/0002-completions-Collapse-declaration-and-attribute-assig.patch new file mode 100644 index 0000000..3640ba9 --- /dev/null +++ b/SOURCES/0002-completions-Collapse-declaration-and-attribute-assig.patch @@ -0,0 +1,69 @@ +From 25fd8c707b106ca0763402566ad657ef710bf09e Mon Sep 17 00:00:00 2001 +From: Brad Mouring +Date: Mon, 2 May 2022 22:38:24 -0500 +Subject: [PATCH] completions: Collapse declaration and attribute assignment + +Previously, the associative arrays for the vendor/subcommands and +vendor/functions listings were split into a declaration of type +(using "typeset") and attribute definition (using "readonly"). On +bash 5.1.16 (at least), this lead to the following error (reported +after enabling -xv to expand and print shell inputs) + + ... + + . /usr/share/bash-completion/completions/nvme + # bash tab completion for the nvme command line utility + # (unfortunately, bash won't let me add descriptions to cmds) + # Kelly Kaoudis kelly.n.kaoudis at intel.com, Aug. 2015 + + # Constant to indicate command has no options + readonly NO_OPTS="" + ++ readonly NO_OPTS= + ++ NO_OPTS= + + # Associative array of plugins and associated subcommands + # Order here is same as PLUGIN_OBJS in Makefile + typeset -A _plugin_subcmds + ++ typeset -A _plugin_subcmds + readonly _plugin_subcmds=( + [intel]="id-ctrl internal-log lat-stats \ + ... + ++ _plugin_subcmds=(['intel']='id-ctrl internal-log lat-stats... + bash: 'intel': syntax error: operand expected (error token is "'intel'") + ... + +Using the available flags for "typeset" to declare the variables as +readonly arrays resolved the issue (and allows for bash completion +to work as-expected) + +Signed-off-by: Brad Mouring +--- + completions/bash-nvme-completion.sh | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/completions/bash-nvme-completion.sh b/completions/bash-nvme-completion.sh +index 5e0eb23b..51931bc1 100644 +--- a/completions/bash-nvme-completion.sh ++++ b/completions/bash-nvme-completion.sh +@@ -7,8 +7,7 @@ readonly NO_OPTS="" + + # Associative array of plugins and associated subcommands + # Order here is same as PLUGIN_OBJS in Makefile +-typeset -A _plugin_subcmds +-readonly _plugin_subcmds=( ++typeset -Ar _plugin_subcmds=( + [intel]="id-ctrl internal-log lat-stats \ + set-bucket-thresholds lat-stats-tracking \ + market-name smart-log-add temp-stats" +@@ -55,8 +54,7 @@ readonly _plugin_subcmds=( + ) + + # Associative array mapping plugins to coresponding option completions +-typeset -A _plugin_funcs +-readonly _plugin_funcs=( ++typeset -Ar _plugin_funcs=( + [intel]="plugin_intel_opts" + [amzn]="plugin_amzn_opts" + [memblaze]="plugin_memblaze_opts" +-- +2.31.1 + diff --git a/SOURCES/0003-bash-nvme-completion.sh-fixed-error-when-sourced-twi.patch b/SOURCES/0003-bash-nvme-completion.sh-fixed-error-when-sourced-twi.patch new file mode 100644 index 0000000..54d30ef --- /dev/null +++ b/SOURCES/0003-bash-nvme-completion.sh-fixed-error-when-sourced-twi.patch @@ -0,0 +1,28 @@ +From eac9f9b70081ff2df2e2ea11efb8fc6ec3754f64 Mon Sep 17 00:00:00 2001 +From: Evgeny Grin +Date: Fri, 17 Jun 2022 15:00:39 +0300 +Subject: [PATCH] bash-nvme-completion.sh: fixed error when sourced twice + +One-line "readonly" with assignment produce error if completion file +is sourced for the second time (/etc/profile reload, su etc.) +--- + completions/bash-nvme-completion.sh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/completions/bash-nvme-completion.sh b/completions/bash-nvme-completion.sh +index e5d9ff19..7b8a2121 100644 +--- a/completions/bash-nvme-completion.sh ++++ b/completions/bash-nvme-completion.sh +@@ -5,7 +5,8 @@ + # Kelly Kaoudis kelly.n.kaoudis at intel.com, Aug. 2015 + + # Constant to indicate command has no options +-readonly NO_OPTS="" ++NO_OPTS="" ++readonly NO_OPTS + + # Associative array of plugins and associated subcommands + # Order here is same as PLUGIN_OBJS in Makefile +-- +2.31.1 + diff --git a/SOURCES/0004-bash-nvme-completion.sh-fixed-typo-with-seagate-plug.patch b/SOURCES/0004-bash-nvme-completion.sh-fixed-typo-with-seagate-plug.patch new file mode 100644 index 0000000..fea56be --- /dev/null +++ b/SOURCES/0004-bash-nvme-completion.sh-fixed-typo-with-seagate-plug.patch @@ -0,0 +1,26 @@ +From 4284d4cc299e8604f898856bdd38fc4979e56586 Mon Sep 17 00:00:00 2001 +From: Evgeny Grin +Date: Fri, 17 Jun 2022 15:08:02 +0300 +Subject: [PATCH] bash-nvme-completion.sh: fixed typo with seagate plugin + +Obvious typo resulted in broken completion for seagete plugin +--- + completions/bash-nvme-completion.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/completions/bash-nvme-completion.sh b/completions/bash-nvme-completion.sh +index 7b8a2121..00593b96 100644 +--- a/completions/bash-nvme-completion.sh ++++ b/completions/bash-nvme-completion.sh +@@ -940,7 +940,7 @@ plugin_micron_opts () { + return 0 + } + +-lugin_seagate_opts () { ++plugin_seagate_opts () { + local opts="" + local compargs="" + +-- +2.31.1 + diff --git a/SPECS/nvme-cli.spec b/SPECS/nvme-cli.spec new file mode 100644 index 0000000..5207252 --- /dev/null +++ b/SPECS/nvme-cli.spec @@ -0,0 +1,222 @@ +#%%global commit0 bdbb4da0979fbdc079cf98410cdb31cf799e83b3 +#%%global shortcommit0 %%(c=%%{commit0}; echo ${c:0:7}) + +Name: nvme-cli +Version: 2.0 +Release: 4%{?dist} +Summary: NVMe management command line interface + +License: GPLv2+ +URL: https://github.com/linux-nvme/nvme-cli +Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz + +#Patch0: nvme-cli-makefile-dont-install-host-params-patch +Patch0: 0001-nvme-Return-status-error-code-for-effects-log-comman.patch +Patch1: 0002-completions-Collapse-declaration-and-attribute-assig.patch +Patch2: 0003-bash-nvme-completion.sh-fixed-error-when-sourced-twi.patch +Patch3: 0004-bash-nvme-completion.sh-fixed-typo-with-seagate-plug.patch + +BuildRequires: meson >= 0.47.0 +BuildRequires: gcc gcc-c++ +BuildRequires: libuuid-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 + +%description +nvme-cli provides NVM-Express user space tooling for Linux. + +%prep +#%%setup -qn %%{name}-%%{commit0} +%setup -q + +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 + +%build +%meson -Dudevrulesdir=%{_udevrulesdir} -Dsystemddir=%{_unitdir} -Ddocs=all -Ddocs-build=true -Dhtmldir=%{_pkgdocdir} +%meson_build + +%install +%meson_install + +# hostid and hostnqn are supposed to be unique per machine. We obviously +# can't package them. +#rm -f %{buildroot}%{_sysconfdir}/nvme/hostid +#rm -f %{buildroot}%{_sysconfdir}/nvme/hostnqn + +# Do not install the dracut rule yet. See rhbz 1742764 +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 +%license LICENSE +%doc README.md +%doc %{_pkgdocdir} +%{_sbindir}/nvme +%{_mandir}/man1/nvme*.gz +%{_datadir}/bash-completion/completions/nvme +%{_datadir}/zsh/site-functions/_nvme +%dir %{_sysconfdir}/nvme +%{_sysconfdir}/nvme/discovery.conf +%{_unitdir}/nvmefc-boot-connections.service +%{_unitdir}/nvmf-autoconnect.service +%{_unitdir}/nvmf-connect.target +%{_unitdir}/nvmf-connect@.service +%{_udevrulesdir}/70-nvmf-autoconnect.rules +%{_udevrulesdir}/71-nvmf-iopolicy-netapp.rules +# Do not install the dracut rule yet. See rhbz 1742764 +# /usr/lib/dracut/dracut.conf.d/70-nvmf-autoconnect.conf + +%post +if [ $1 -eq 1 ] || [ $1 -eq 2 ]; then + if [ ! -s %{_sysconfdir}/nvme/hostnqn ]; then + echo $(nvme gen-hostnqn) > %{_sysconfdir}/nvme/hostnqn + fi + if [ ! -s %{_sysconfdir}/nvme/hostid ]; then + uuidgen > %{_sysconfdir}/nvme/hostid + fi + + # apply udev and systemd changes that we did + systemctl enable nvmefc-boot-connections + systemctl daemon-reload + udevadm control --reload-rules && udevadm trigger + exit 0 +fi + +%changelog +* Fri Aug 29 2022 Maurizio Lombardi - 2.0-4 +- Fix BZ2104945 + +* Fri Jul 15 2022 Maurizio Lombardi - 2.0-3 +- Fix BZ2105742 + +* Thu Jun 16 2022 Maurizio Lombardi - 2.0-2 +- Fix the gating tests + +* Wed Apr 27 2022 Maurizio Lombardi - 2.0-1 +- Upgrade to version 2.0 + +* Mon Feb 07 2022 Maurizio Lombardi - 1.16-3 +- Add a few bugfixes + +* Mon Dec 13 2021 Maurizio Lombardi - 1.16-2 +- Update to the latest version + +* Thu Dec 09 2021 Maurizio Lombardi - 1.14-4 +- Fix handling of the ctrl_loss_tmo parameter + +* Mon Aug 09 2021 Mohan Boddu +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Mon Jun 14 2021 Maurizio Lombardi - 1.14-2 +- Fix for bz1962422 (nvme flush failed from from v5.13-rc1) + +* Mon May 03 2021 Maurizio Lombardi - 1.14-1 +- Update to the latest upstream version + +* Fri Apr 16 2021 Mohan Boddu +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Fri Mar 19 2021 Maurizio Lombardi - 1.12-1 +- Update to 1.13 and add postin scriptlet + +* Sat Apr 25 2020 luto@kernel.org - 1.11.1-1 +- Update to 1.11 + +* Thu Mar 19 2020 luto@kernel.org - 1.10.1-1 +- Update to 1.10.1 + +* Wed Jan 29 2020 Fedora Release Engineering - 1.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Oct 02 2019 luto@kernel.org - 1.9-1 +- Update to 1.9 +- Certain fabric functionality may not work yet due to missing dracut + support and missing hostid and hostnqn configuration. + +* Thu Jul 25 2019 Fedora Release Engineering - 1.8.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* 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 + +* Fri Feb 01 2019 Fedora Release Engineering - 1.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* 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.