From daeb737b850f138566c1d562c63416b0771ba666 Mon Sep 17 00:00:00 2001 From: Maurizio Lombardi Date: Mon, 16 Sep 2024 15:31:08 +0200 Subject: [PATCH] Update to version 0.8 Resolves: RHEL-58733 Signed-off-by: Maurizio Lombardi --- .gitignore | 1 + ...li-don-t-remove-ANA-Group-1-on-clear.patch | 33 ---- ...README-Update-URL-for-configshell-fb.patch | 30 ---- ...-Improve-IOError-handling-on-restore.patch | 61 -------- ...-nvme.py-Explicit-close-is-redundant.patch | 29 ---- ...vme.py-Sync-the-containing-directory.patch | 40 ----- ...-Make-modprobe-work-for-kmod-lib-too.patch | 35 ----- ....py-test_invalid_input-fails-for-py3.patch | 48 ------ ...-nvmetcli-Report-save-name-correctly.patch | 50 ------ ...llow-different-devices-for-make-test.patch | 146 ------------------ ...vmetcli-Correct-xrange-usage-for-py3.patch | 57 ------- 0011-nvmetcli-add-a-tcp-example-json.patch | 99 ------------ 0012-Documentation-fix-typo.patch | 28 ---- nvmetcli.spec | 19 +-- sources | 2 +- 15 files changed, 7 insertions(+), 671 deletions(-) delete mode 100644 0001-nvmetcli-don-t-remove-ANA-Group-1-on-clear.patch delete mode 100644 0002-README-Update-URL-for-configshell-fb.patch delete mode 100644 0003-nvmetcli-Improve-IOError-handling-on-restore.patch delete mode 100644 0004-nvme.py-Explicit-close-is-redundant.patch delete mode 100644 0005-nvme.py-Sync-the-containing-directory.patch delete mode 100644 0006-nvme.py-Make-modprobe-work-for-kmod-lib-too.patch delete mode 100644 0007-test_nvmet.py-test_invalid_input-fails-for-py3.patch delete mode 100644 0008-nvmetcli-Report-save-name-correctly.patch delete mode 100644 0009-nvmetcli-Allow-different-devices-for-make-test.patch delete mode 100644 0010-nvmetcli-Correct-xrange-usage-for-py3.patch delete mode 100644 0011-nvmetcli-add-a-tcp-example-json.patch delete mode 100644 0012-Documentation-fix-typo.patch diff --git a/.gitignore b/.gitignore index 65c172f..921b4cb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /nvmetcli-0.3.tar.gz /nvmetcli-0.4.tar.gz /nvmetcli-0.7.tar.gz +/nvmetcli-0.8.tar.gz diff --git a/0001-nvmetcli-don-t-remove-ANA-Group-1-on-clear.patch b/0001-nvmetcli-don-t-remove-ANA-Group-1-on-clear.patch deleted file mode 100644 index 85e886f..0000000 --- a/0001-nvmetcli-don-t-remove-ANA-Group-1-on-clear.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0827df8deb5304854d9efc58e9df5971aa66f490 Mon Sep 17 00:00:00 2001 -From: Hannes Reinecke -Date: Fri, 27 Mar 2020 08:01:34 +0100 -Subject: [PATCH 01/12] nvmetcli: don't remove ANA Group 1 on clear - -The first ANA group is maintained by the kernel so it cannot -be deleted. - -Signed-off-by: Hannes Reinecke -Signed-off-by: Christoph Hellwig ---- - nvmet/nvme.py | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/nvmet/nvme.py b/nvmet/nvme.py -index 0647ddc..fdec4ff 100644 ---- a/nvmet/nvme.py -+++ b/nvmet/nvme.py -@@ -845,6 +845,11 @@ class ANAGroup(CFSNode): - - a._setup_attrs(n, err_func) - -+ def delete(self): -+ # ANA Group 1 is automatically created/deleted -+ if self.grpid != 1: -+ super(ANAGroup, self).delete() -+ - def dump(self): - d = super(ANAGroup, self).dump() - d['grpid'] = self.grpid --- -2.29.2 - diff --git a/0002-README-Update-URL-for-configshell-fb.patch b/0002-README-Update-URL-for-configshell-fb.patch deleted file mode 100644 index 76b2ea8..0000000 --- a/0002-README-Update-URL-for-configshell-fb.patch +++ /dev/null @@ -1,30 +0,0 @@ -From a481736441b4c811f57fa84a8e3609b084f93835 Mon Sep 17 00:00:00 2001 -From: Tony Asleson -Date: Thu, 26 Mar 2020 13:07:44 -0500 -Subject: [PATCH 02/12] README: Update URL for configshell-fb - -The github repository was moved. There is a github redirect, -so this change is not strictly required. - -Signed-off-by: Tony Asleson -Signed-off-by: Christoph Hellwig ---- - README | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/README b/README -index c8717e8..5a4ecd1 100644 ---- a/README -+++ b/README -@@ -7,7 +7,7 @@ to save, restore or clear the current NVMe target configuration. - Installation - ------------ - Please install the configshell-fb package from --https://github.com/agrover/configshell-fb first. -+https://github.com/open-iscsi/configshell-fb first. - - nvmetcli can be run directly from the source directory or installed - using setup.py. --- -2.29.2 - diff --git a/0003-nvmetcli-Improve-IOError-handling-on-restore.patch b/0003-nvmetcli-Improve-IOError-handling-on-restore.patch deleted file mode 100644 index 1c052c2..0000000 --- a/0003-nvmetcli-Improve-IOError-handling-on-restore.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 48b8f318e0594d7adfec290ae47d9308eb0f65af Mon Sep 17 00:00:00 2001 -From: Tony Asleson -Date: Thu, 26 Mar 2020 13:07:45 -0500 -Subject: [PATCH 03/12] nvmetcli: Improve IOError handling on restore - -Not all IOErrors are caused by specifying a missing configuration -file. When the file is present, dump the error exception text too, -so the user has a better idea what is wrong. - -Signed-off-by: Tony Asleson -Signed-off-by: Christoph Hellwig ---- - nvmetcli | 19 +++++++++++++++---- - 1 file changed, 15 insertions(+), 4 deletions(-) - -diff --git a/nvmetcli b/nvmetcli -index 3d8c16e..a646232 100755 ---- a/nvmetcli -+++ b/nvmetcli -@@ -24,6 +24,7 @@ import os - import sys - import configshell_fb as configshell - import nvmet as nvme -+import errno - from string import hexdigits - import uuid - -@@ -674,16 +675,26 @@ def save(to_file): - - - def restore(from_file): -+ errors = None -+ - try: - errors = nvme.Root().restore_from_file(from_file) -- except IOError: -- # Not an error if the restore file is not present -- print("No saved config file at %s, ok, exiting" % from_file) -- sys.exit(0) -+ except IOError as e: -+ if e.errno == errno.ENOENT: -+ # Not an error if the restore file is not present -+ print("No saved config file at %s, ok, exiting" % from_file) -+ sys.exit(0) -+ else: -+ print("Error processing config file at %s, error %s, exiting" % -+ (from_file, str(e))) -+ sys.exit(1) - -+ # These errors are non-fatal - for error in errors: - print(error) - -+ sys.exit(0) -+ - - def clear(unused): - nvme.Root().clear_existing() --- -2.29.2 - diff --git a/0004-nvme.py-Explicit-close-is-redundant.patch b/0004-nvme.py-Explicit-close-is-redundant.patch deleted file mode 100644 index b329780..0000000 --- a/0004-nvme.py-Explicit-close-is-redundant.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 226b73a4ae317c6aa3c7b00da2adbd1ec769ce34 Mon Sep 17 00:00:00 2001 -From: Tony Asleson -Date: Thu, 26 Mar 2020 13:07:46 -0500 -Subject: [PATCH 04/12] nvme.py: Explicit close is redundant - -One of the benefits of using 'with' statement for open files is the -close is going to be called regardless of what happens. - -Signed-off-by: Tony Asleson -Signed-off-by: Christoph Hellwig ---- - nvmet/nvme.py | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/nvmet/nvme.py b/nvmet/nvme.py -index fdec4ff..687a45a 100644 ---- a/nvmet/nvme.py -+++ b/nvmet/nvme.py -@@ -302,7 +302,6 @@ class Root(CFSNode): - f.write("\n") - f.flush() - os.fsync(f.fileno()) -- f.close() - - os.rename(savefile + ".temp", savefile) - --- -2.29.2 - diff --git a/0005-nvme.py-Sync-the-containing-directory.patch b/0005-nvme.py-Sync-the-containing-directory.patch deleted file mode 100644 index c9f1adc..0000000 --- a/0005-nvme.py-Sync-the-containing-directory.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 12a8764c6113887c5691cab6a92bb1c13414395c Mon Sep 17 00:00:00 2001 -From: Tony Asleson -Date: Thu, 26 Mar 2020 13:07:47 -0500 -Subject: [PATCH 05/12] nvme.py: Sync the containing directory - -It's apparent that some thought went into making sure the config -file makes it atomically to the fs. However, one thing is missing -which is doing a fsync on the containing directory of the config file. - -See: https://lwn.net/Articles/457667/ - -Signed-off-by: Tony Asleson -Signed-off-by: Christoph Hellwig ---- - nvmet/nvme.py | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/nvmet/nvme.py b/nvmet/nvme.py -index 687a45a..04659de 100644 ---- a/nvmet/nvme.py -+++ b/nvmet/nvme.py -@@ -305,6 +305,15 @@ class Root(CFSNode): - - os.rename(savefile + ".temp", savefile) - -+ # Sync the containing directory too -+ dir_fd = None -+ try: -+ dir_fd = os.open(savefile_dir, os.O_RDONLY) -+ os.fsync(dir_fd) -+ finally: -+ if dir_fd: -+ os.close(dir_fd) -+ - def clear_existing(self): - ''' - Remove entire current configuration. --- -2.29.2 - diff --git a/0006-nvme.py-Make-modprobe-work-for-kmod-lib-too.patch b/0006-nvme.py-Make-modprobe-work-for-kmod-lib-too.patch deleted file mode 100644 index 7c52315..0000000 --- a/0006-nvme.py-Make-modprobe-work-for-kmod-lib-too.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 75c178f6c2943490ef2c13df5863d6ac308f6ef1 Mon Sep 17 00:00:00 2001 -From: Tony Asleson -Date: Thu, 26 Mar 2020 13:07:48 -0500 -Subject: [PATCH 06/12] nvme.py: Make modprobe work for kmod lib too - -The python library 'kmod' is included with libkmod, lets try to use that -if the user isn't utilizing kmodpy. - -Signed-off-by: Tony Asleson -Signed-off-by: Christoph Hellwig ---- - nvmet/nvme.py | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/nvmet/nvme.py b/nvmet/nvme.py -index 04659de..db8a03c 100644 ---- a/nvmet/nvme.py -+++ b/nvmet/nvme.py -@@ -253,7 +253,12 @@ class Root(CFSNode): - except kmod.KmodError: - pass - except ImportError: -- pass -+ # Try the ctypes library included with the libkmod itself. -+ try: -+ import kmod -+ kmod.Kmod().modprobe(modname) -+ except Exception as e: -+ pass - - def _list_subsystems(self): - self._check_self() --- -2.29.2 - diff --git a/0007-test_nvmet.py-test_invalid_input-fails-for-py3.patch b/0007-test_nvmet.py-test_invalid_input-fails-for-py3.patch deleted file mode 100644 index d9502c1..0000000 --- a/0007-test_nvmet.py-test_invalid_input-fails-for-py3.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 477a04b18e8754dc3f75110f0e7e6cdac70217aa Mon Sep 17 00:00:00 2001 -From: Tony Asleson -Date: Thu, 26 Mar 2020 13:07:49 -0500 -Subject: [PATCH 07/12] test_nvmet.py: test_invalid_input fails for py3 - -When you run 'make test' using python 3 the unit test -test_invalid_input fails with: - -Traceback (most recent call last): - File "/someuser/projects/nvmetcli/nvmet/test_nvmet.py", line 395, in -test_invalid_input - for i in range(l)) - File "/someuser/projects/nvmetcli/nvmet/test_nvmet.py", line 395, in - - for i in range(l)) -AttributeError: module 'string' has no attribute 'lowercase' - -Python 3 does not have 'string.lowercase' ref. -https://docs.python.org/3/library/string.html - -Python 2 does ref. -https://docs.python.org/2/library/string.html - -Both have "string.ascii_lowercase" so lets leverage that to -support both. - -Signed-off-by: Tony Asleson -Signed-off-by: Christoph Hellwig ---- - nvmet/test_nvmet.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/nvmet/test_nvmet.py b/nvmet/test_nvmet.py -index 5caa546..aae4a86 100644 ---- a/nvmet/test_nvmet.py -+++ b/nvmet/test_nvmet.py -@@ -391,7 +391,7 @@ class TestNvmet(unittest.TestCase): - nqn='/', mode='create') - - for l in [ 257, 512, 1024, 2048 ]: -- toolong = ''.join(random.choice(string.lowercase) -+ toolong = ''.join(random.choice(string.ascii_lowercase) - for i in range(l)) - self.assertRaises(nvme.CFSError, nvme.Subsystem, - nqn=toolong, mode='create') --- -2.29.2 - diff --git a/0008-nvmetcli-Report-save-name-correctly.patch b/0008-nvmetcli-Report-save-name-correctly.patch deleted file mode 100644 index 758a0b5..0000000 --- a/0008-nvmetcli-Report-save-name-correctly.patch +++ /dev/null @@ -1,50 +0,0 @@ -From fd09200bba73011b4b7086c96e394ce875fdd38f Mon Sep 17 00:00:00 2001 -From: Tony Asleson -Date: Thu, 26 Mar 2020 13:07:50 -0500 -Subject: [PATCH 08/12] nvmetcli: Report save name correctly - -When a user simply does 'nvmetcli restore' without -specifying a file name the default is used. However, if the -restore fails you end up with the error message: - -Error processing config file at None, error [Errno 1] Operation not -permitted: '/sys/kernel/config/nvmet/ports/0/ana_groups/1', exiting - -Correct file name if None in error path. - -Error processing config file at /etc/nvmet/config.json, error \ -[Errno 1] Operation not permitted: \ -'/sys/kernel/config/nvmet/ports/1/ana_groups/1', exiting - -Signed-off-by: Tony Asleson -Signed-off-by: Christoph Hellwig ---- - nvmet/__init__.py | 3 ++- - nvmetcli | 3 +++ - 2 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/nvmet/__init__.py b/nvmet/__init__.py -index ca05de4..cf172bd 100644 ---- a/nvmet/__init__.py -+++ b/nvmet/__init__.py -@@ -1 +1,2 @@ --from .nvme import Root, Subsystem, Namespace, Port, Host, Referral, ANAGroup -+from .nvme import Root, Subsystem, Namespace, Port, Host, Referral, ANAGroup,\ -+ DEFAULT_SAVE_FILE -diff --git a/nvmetcli b/nvmetcli -index a646232..8ee8590 100755 ---- a/nvmetcli -+++ b/nvmetcli -@@ -680,6 +680,9 @@ def restore(from_file): - try: - errors = nvme.Root().restore_from_file(from_file) - except IOError as e: -+ if not from_file: -+ from_file = nvme.DEFAULT_SAVE_FILE -+ - if e.errno == errno.ENOENT: - # Not an error if the restore file is not present - print("No saved config file at %s, ok, exiting" % from_file) --- -2.29.2 - diff --git a/0009-nvmetcli-Allow-different-devices-for-make-test.patch b/0009-nvmetcli-Allow-different-devices-for-make-test.patch deleted file mode 100644 index 3f76ca7..0000000 --- a/0009-nvmetcli-Allow-different-devices-for-make-test.patch +++ /dev/null @@ -1,146 +0,0 @@ -From 35e92a1bfedf28868112165892b3eb2cd7f750ce Mon Sep 17 00:00:00 2001 -From: Tony Asleson -Date: Thu, 2 Apr 2020 10:54:43 -0500 -Subject: [PATCH 09/12] nvmetcli: Allow different devices for make test - -The test_nvmet.py by default uses /dev/ram0 and /dev/ram1 for 2 of the -unit tests. Add env. variable to allow user to specify different devices -or files. Additionally, skip these unit tests that require devices/files -if they are not present. Update README too. - -$ sudo make test -......s...s. ----------------------------------------------------------------------- -Ran 12 tests in 0.043s - -OK (skipped=2) -Name Stmts Miss Cover ------------------------------------------ -nvmet/__init__.py 1 0 100% -nvmet/nvme.py 517 237 54% -nvmet/test_nvmet.py 276 63 77% ------------------------------------------ -TOTAL 794 300 62% - -$ sudo NVMET_TEST_DEVICES="/dev/sdc,/dev/sdd" make test -............ ----------------------------------------------------------------------- -Ran 12 tests in 0.124s - -OK -Name Stmts Miss Cover ------------------------------------------ -nvmet/__init__.py 1 0 100% -nvmet/nvme.py 517 100 81% -nvmet/test_nvmet.py 276 4 99% ------------------------------------------ -TOTAL 794 104 87% - -Signed-off-by: Tony Asleson -Signed-off-by: Christoph Hellwig ---- - README | 5 ++++- - nvmet/test_nvmet.py | 26 ++++++++++++++++++++++---- - 2 files changed, 26 insertions(+), 5 deletions(-) - -diff --git a/README b/README -index 5a4ecd1..44f1c33 100644 ---- a/README -+++ b/README -@@ -47,7 +47,10 @@ Testing - ------- - nvmetcli comes with a testsuite that tests itself and the kernel configfs - interface for the NVMe target. To run it make sure you have nose2 and --the coverage plugin for it installed and simple run 'make test'. -+the coverage plugin for it installed and simple run 'make test'. To run all -+the tests you also need some test block devices or files. Default is to -+use /dev/ram0 and /dev/ram1. You can override default with environmental -+variable eg. NVMET_TEST_DEVICES="/dev/sdk,/dev/sdj" make test . - - Development - ----------------- -diff --git a/nvmet/test_nvmet.py b/nvmet/test_nvmet.py -index aae4a86..f8ec232 100644 ---- a/nvmet/test_nvmet.py -+++ b/nvmet/test_nvmet.py -@@ -1,9 +1,22 @@ - -+import os - import random -+import stat - import string - import unittest - import nvmet.nvme as nvme - -+# Default test devices are ram disks, but allow user to specify different -+# block devices or files. -+NVMET_TEST_DEVICES = os.getenv("NVMET_TEST_DEVICES", -+ "/dev/ram0,/dev/ram1").split(',') -+ -+ -+def test_devices_present(): -+ return len([x for x in NVMET_TEST_DEVICES -+ if os.path.exists(x) and -+ (stat.S_ISBLK(os.stat(x).st_mode) or os.path.isfile(x))]) >= 2 -+ - - class TestNvmet(unittest.TestCase): - def test_subsystem(self): -@@ -101,6 +114,8 @@ class TestNvmet(unittest.TestCase): - n.delete() - self.assertEqual(len(list(s.namespaces)), 0) - -+ @unittest.skipUnless(test_devices_present(), -+ "Devices %s not available or suitable" % ','.join(NVMET_TEST_DEVICES)) - def test_namespace_attrs(self): - root = nvme.Root() - root.clear_existing() -@@ -116,7 +131,7 @@ class TestNvmet(unittest.TestCase): - self.assertRaises(nvme.CFSError, n.set_enable, 1) - - # now set a path and enable -- n.set_attr('device', 'path', '/dev/ram0') -+ n.set_attr('device', 'path', NVMET_TEST_DEVICES[0]) - n.set_enable(1) - self.assertTrue(n.get_enable()) - -@@ -125,7 +140,7 @@ class TestNvmet(unittest.TestCase): - - # test that we can't write to attrs while enabled - self.assertRaises(nvme.CFSError, n.set_attr, 'device', 'path', -- '/dev/ram1') -+ NVMET_TEST_DEVICES[1]) - self.assertRaises(nvme.CFSError, n.set_attr, 'device', 'nguid', - '15f7767b-50e7-4441-949c-75b99153dea7') - -@@ -403,6 +418,9 @@ class TestNvmet(unittest.TestCase): - self.assertRaises(nvme.CFSError, nvme.Port, - portid=1 << 17, mode='create') - -+ @unittest.skipUnless(test_devices_present(), -+ "Devices %s not available or suitable" % ','.join( -+ NVMET_TEST_DEVICES)) - def test_save_restore(self): - root = nvme.Root() - root.clear_existing() -@@ -416,7 +434,7 @@ class TestNvmet(unittest.TestCase): - s2.set_attr('attr', 'allow_any_host', 1) - - n = nvme.Namespace(s, nsid=42, mode='create') -- n.set_attr('device', 'path', '/dev/ram0') -+ n.set_attr('device', 'path', NVMET_TEST_DEVICES[0]) - n.set_enable(1) - - nguid = n.get_attr('device', 'nguid') -@@ -454,7 +472,7 @@ class TestNvmet(unittest.TestCase): - - # and check everything is still the same - self.assertTrue(n.get_enable()) -- self.assertEqual(n.get_attr('device', 'path'), '/dev/ram0') -+ self.assertEqual(n.get_attr('device', 'path'), NVMET_TEST_DEVICES[0]) - self.assertEqual(n.get_attr('device', 'nguid'), nguid) - - self.assertEqual(p.get_attr('addr', 'trtype'), 'loop') --- -2.29.2 - diff --git a/0010-nvmetcli-Correct-xrange-usage-for-py3.patch b/0010-nvmetcli-Correct-xrange-usage-for-py3.patch deleted file mode 100644 index 7ba1e75..0000000 --- a/0010-nvmetcli-Correct-xrange-usage-for-py3.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 9da40b0433b8338f82c2c910b1057e1e1061b9a0 Mon Sep 17 00:00:00 2001 -From: Tony Asleson -Date: Wed, 1 Apr 2020 14:13:16 -0500 -Subject: [PATCH 10/12] nvmetcli: Correct xrange usage for py3 - -If you are in a namespace and simply do a 'create' without specifying -a value you will get: - -/subsystems/n...f8/namespaces> create -name 'xrange' is not defined -subsystems/n...f8/namespaces> - -This is because xrange is not defined in python3 as python3 changed -it to range. As the code is already using six use six.move.xrange -which works for both python2 & python3. - -Signed-off-by: Tony Asleson -Reviewed-by: Sagi Grimberg -Signed-off-by: Christoph Hellwig ---- - nvmet/nvme.py | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/nvmet/nvme.py b/nvmet/nvme.py -index db8a03c..83fd75b 100644 ---- a/nvmet/nvme.py -+++ b/nvmet/nvme.py -@@ -23,7 +23,7 @@ import stat - import uuid - import json - from glob import iglob as glob --from six import iteritems -+from six import iteritems, moves - - DEFAULT_SAVE_FILE = '/etc/nvmet/config.json' - -@@ -556,7 +556,7 @@ class Namespace(CFSNode): - raise CFSError("Need NSID for lookup") - - nsids = [n.nsid for n in subsystem.namespaces] -- for index in xrange(1, self.MAX_NSID + 1): -+ for index in moves.xrange(1, self.MAX_NSID + 1): - if index not in nsids: - nsid = index - break -@@ -816,7 +816,7 @@ class ANAGroup(CFSNode): - raise CFSError("Need grpid for lookup") - - grpids = [n.grpid for n in port.ana_groups] -- for index in xrange(2, self.MAX_GRPID + 1): -+ for index in moves.xrange(2, self.MAX_GRPID + 1): - if index not in grpids: - grpid = index - break --- -2.29.2 - diff --git a/0011-nvmetcli-add-a-tcp-example-json.patch b/0011-nvmetcli-add-a-tcp-example-json.patch deleted file mode 100644 index 3bd70e7..0000000 --- a/0011-nvmetcli-add-a-tcp-example-json.patch +++ /dev/null @@ -1,99 +0,0 @@ -From 73dcf7ef6b6aa80c87c61f08583cba97ad1c626a Mon Sep 17 00:00:00 2001 -From: zhenwei pi -Date: Thu, 10 Dec 2020 17:06:56 +0800 -Subject: [PATCH 11/12] nvmetcli: add a tcp example json - -Run a tcp nvme target on linux-5.10-rc version, and save the config -as an example. - -Signed-off-by: zhenwei pi -Signed-off-by: Christoph Hellwig ---- - README | 5 +++++ - tcp.json | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 63 insertions(+) - create mode 100644 tcp.json - -diff --git a/README b/README -index 44f1c33..6ebe666 100644 ---- a/README -+++ b/README -@@ -41,6 +41,11 @@ fc.json fits your setup: - - ./nvmetcli restore fc.json - -+Or to load the tcp + no host authentication version do the following -+after you've ensured that the IP address in tcp.json fits your setup: -+ -+ ./nvmetcli restore tcp.json -+ - These files can also be edited directly using your favorite editor. - - Testing -diff --git a/tcp.json b/tcp.json -new file mode 100644 -index 0000000..e6ff029 ---- /dev/null -+++ b/tcp.json -@@ -0,0 +1,58 @@ -+{ -+ "hosts": [], -+ "ports": [ -+ { -+ "addr": { -+ "adrfam": "ipv4", -+ "traddr": "192.168.122.33", -+ "treq": "not specified", -+ "trsvcid": "4420", -+ "trtype": "tcp" -+ }, -+ "ana_groups": [ -+ { -+ "ana": { -+ "state": "optimized" -+ }, -+ "grpid": 1 -+ } -+ ], -+ "param": { -+ "inline_data_size": "16384", -+ "pi_enable": "0" -+ }, -+ "portid": 1, -+ "referrals": [], -+ "subsystems": [ -+ "nvmet-always" -+ ] -+ } -+ ], -+ "subsystems": [ -+ { -+ "allowed_hosts": [], -+ "attr": { -+ "allow_any_host": "1", -+ "cntlid_max": "65519", -+ "cntlid_min": "1", -+ "model": "Linux", -+ "pi_enable": "0", -+ "serial": "123456789abcdef", -+ "version": "1.3" -+ }, -+ "namespaces": [ -+ { -+ "ana_grpid": 1, -+ "device": { -+ "nguid": "00000000-0000-0000-0000-000000000000", -+ "path": "/dev/nvme0n1", -+ "uuid": "d592cdf3-5d1c-44e0-8412-3fcf7d99df27" -+ }, -+ "enable": 1, -+ "nsid": 1 -+ } -+ ], -+ "nqn": "nvmet-always" -+ } -+ ] -+} --- -2.29.2 - diff --git a/0012-Documentation-fix-typo.patch b/0012-Documentation-fix-typo.patch deleted file mode 100644 index a77638e..0000000 --- a/0012-Documentation-fix-typo.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 297f40aef117875d98303b0535fb076626b91a19 Mon Sep 17 00:00:00 2001 -From: Maurizio Lombardi -Date: Mon, 1 Feb 2021 15:47:56 +0100 -Subject: [PATCH 12/12] Documentation: fix typo - -Signed-off-by: Maurizio Lombardi -Reviewed-by: Chaitanya Kulkarni -Signed-off-by: Christoph Hellwig ---- - Documentation/nvmetcli.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Documentation/nvmetcli.txt b/Documentation/nvmetcli.txt -index 05a0344..7d6ffda 100644 ---- a/Documentation/nvmetcli.txt -+++ b/Documentation/nvmetcli.txt -@@ -116,7 +116,7 @@ your devices and all dependent modules are loaded, - and configfs is mounted on /sys/kernel/config - using: - -- mount -t configs none /sys/kernel/config -+ mount -t configfs none /sys/kernel/config - - The following section walks through a configuration example. - --- -2.29.2 - diff --git a/nvmetcli.spec b/nvmetcli.spec index bf355a4..83ded5e 100644 --- a/nvmetcli.spec +++ b/nvmetcli.spec @@ -1,22 +1,10 @@ Name: nvmetcli License: ASL 2.0 Summary: An adminstration shell for NVMe storage targets -Version: 0.7 -Release: 3%{?dist} +Version: 0.8 +Release: 1%{?dist} URL: ftp://ftp.infradead.org/pub/nvmetcli/ Source: ftp://ftp.infradead.org/pub/nvmetcli/%{name}-%{version}.tar.gz -Patch00: 0001-nvmetcli-don-t-remove-ANA-Group-1-on-clear.patch -Patch01: 0002-README-Update-URL-for-configshell-fb.patch -Patch02: 0003-nvmetcli-Improve-IOError-handling-on-restore.patch -Patch03: 0004-nvme.py-Explicit-close-is-redundant.patch -Patch04: 0005-nvme.py-Sync-the-containing-directory.patch -Patch05: 0006-nvme.py-Make-modprobe-work-for-kmod-lib-too.patch -Patch06: 0007-test_nvmet.py-test_invalid_input-fails-for-py3.patch -Patch07: 0008-nvmetcli-Report-save-name-correctly.patch -Patch08: 0009-nvmetcli-Allow-different-devices-for-make-test.patch -Patch09: 0010-nvmetcli-Correct-xrange-usage-for-py3.patch -Patch10: 0011-nvmetcli-add-a-tcp-example-json.patch -Patch11: 0012-Documentation-fix-typo.patch BuildArch: noarch BuildRequires: make BuildRequires: python3-devel python3-setuptools systemd-units asciidoc xmlto @@ -66,6 +54,9 @@ install -m 644 Documentation/nvmetcli.8.gz %{buildroot}%{_mandir}/man8/ %{_mandir}/man8/nvmetcli.8.gz %changelog +* Mon Sep 16 2024 Maurizio Lombardi - 0.8-1 +- Update to version 0.8 + * Mon Aug 09 2021 Mohan Boddu - 0.7-3 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags Related: rhbz#1991688 diff --git a/sources b/sources index a285f5d..55b8389 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (nvmetcli-0.7.tar.gz) = 03781aba13b71d91777bf246550206a7d868ac3efc117a21d57b4d011e6e6fc7647c114875b851c7de41f2513889fa1cfdf02d95e71adefe98797ce1a64b6241 +SHA512 (nvmetcli-0.8.tar.gz) = bacab259d1187cb7558c5c59119fc35018680f01fe9e882e114fc6da2149887c9e3986e9068265d299fc568c93b92dc96eb0d2c054111018dbc08ab1adb8e84f