Accepting request 643046 from home:lee_duncan:branches:Base:System
- Update to version 2.1.49: * version 2.1.fb49 * targetcli-fb: Add support for media change * fix the parameter of define_config_group_param * saveconfig: handle backups with block-level delete * saveconfig: way for block-level save with delete command * create: add a way to set control string * fix amount of backup files in backup dir * config: add saveconfig command to StorageObject level * Allow to customize a home directory * Fix default max_backup_files in ui_command_saveconfig * MappedLuns and Luns max number is not the same anymore * Use signed char instead of char * version 2.1.fb48 * remove wrong exit code from targetcli --version * backup: global option to tune max no. of backup conf files * config: rename key 'kept_backups' as 'max_backup_files' * config: backup when current config is different from recent backup copy * config: defend on '/etc/target/backup' directory * Auto-detect readonly state for iblock devices * Read number of backup files to keep from file * skip refreshing user backed storage object when it is null * Replace dbus-python with GObject Introspection This replaces targetcli-fb-2.1.47.tar.xz with targetcli-fb-2.1.49.tar.xz, and removes the following patches: * Auto-detect-readonly-state-for-iblock-devices.patch * Use-signed-char-instead-of-char.patch * targetcli-only-save-old-config-if-present.patch and updates the SPEC file. OBS-URL: https://build.opensuse.org/request/show/643046 OBS-URL: https://build.opensuse.org/package/show/Base:System/targetcli-fb?expand=0&rev=22
This commit is contained in:
parent
abfb49c9bf
commit
4a61c20fae
@ -1,78 +0,0 @@
|
|||||||
From 5d1abab36be9375f46210dd19d5293cf73433681 Mon Sep 17 00:00:00 2001
|
|
||||||
From: David Disseldorp <ddiss@suse.de>
|
|
||||||
Date: Thu, 7 Dec 2017 15:25:35 +0100
|
|
||||||
Subject: [PATCH 1/4] Auto-detect readonly state for iblock devices
|
|
||||||
|
|
||||||
Configuring a read-only block device as read-write currently results in
|
|
||||||
a backstore->enable configfs I/O error, as documented in:
|
|
||||||
http://www.spinics.net/lists/target-devel/msg16310.html
|
|
||||||
|
|
||||||
This change sees targetcli check the read-only status of the underlying
|
|
||||||
block device via ioctl(BLKROGET). If a readonly= parameter isn't
|
|
||||||
provided, then the backstore will use the ioctl(BLKROGET) value as the
|
|
||||||
default.
|
|
||||||
|
|
||||||
Signed-off-by: David Disseldorp <ddiss@suse.de>
|
|
||||||
(cherry picked from commit 1a0886ecbcba6d5b2d9756ecadb3e2eaab99d29e)
|
|
||||||
---
|
|
||||||
targetcli/ui_backstore.py | 30 +++++++++++++++++++++++++++++-
|
|
||||||
1 file changed, 29 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/targetcli/ui_backstore.py b/targetcli/ui_backstore.py
|
|
||||||
index 83673a0..66a21c5 100644
|
|
||||||
--- a/targetcli/ui_backstore.py
|
|
||||||
+++ b/targetcli/ui_backstore.py
|
|
||||||
@@ -19,6 +19,9 @@ under the License.
|
|
||||||
|
|
||||||
import glob
|
|
||||||
import os
|
|
||||||
+import fcntl
|
|
||||||
+import array
|
|
||||||
+import struct
|
|
||||||
import re
|
|
||||||
import stat
|
|
||||||
import dbus
|
|
||||||
@@ -516,6 +519,25 @@ class UIBlockBackstore(UIBackstore):
|
|
||||||
self.so_cls = UIBlockStorageObject
|
|
||||||
UIBackstore.__init__(self, 'block', parent)
|
|
||||||
|
|
||||||
+ def _ui_block_ro_check(self, dev):
|
|
||||||
+ BLKROGET=0x0000125E
|
|
||||||
+ try:
|
|
||||||
+ f = os.open(dev, os.O_RDONLY)
|
|
||||||
+ except (OSError, IOError):
|
|
||||||
+ raise ExecutionError("Could not open %s" % dev)
|
|
||||||
+ # ioctl returns an int. Provision a buffer for it
|
|
||||||
+ buf = array.array('c', [chr(0)] * 4)
|
|
||||||
+ try:
|
|
||||||
+ fcntl.ioctl(f, BLKROGET, buf)
|
|
||||||
+ except (OSError, IOError):
|
|
||||||
+ os.close(f)
|
|
||||||
+ return False
|
|
||||||
+
|
|
||||||
+ os.close(f)
|
|
||||||
+ if struct.unpack('I', buf)[0] == 0:
|
|
||||||
+ return False
|
|
||||||
+ return True
|
|
||||||
+
|
|
||||||
def ui_command_create(self, name, dev, readonly=None, wwn=None):
|
|
||||||
'''
|
|
||||||
Creates an Block Storage object. I{dev} is the path to the TYPE_DISK
|
|
||||||
@@ -523,7 +545,13 @@ class UIBlockBackstore(UIBackstore):
|
|
||||||
'''
|
|
||||||
self.assert_root()
|
|
||||||
|
|
||||||
- readonly = self.ui_eval_param(readonly, 'bool', False)
|
|
||||||
+ ro_string = self.ui_eval_param(readonly, 'string', None)
|
|
||||||
+ if ro_string == None:
|
|
||||||
+ # attempt to detect block device readonly state via ioctl
|
|
||||||
+ readonly = self._ui_block_ro_check(dev)
|
|
||||||
+ else:
|
|
||||||
+ readonly = self.ui_eval_param(readonly, 'bool', False)
|
|
||||||
+
|
|
||||||
wwn = self.ui_eval_param(wwn, 'string', None)
|
|
||||||
|
|
||||||
so = BlockStorageObject(name, dev, readonly=readonly, wwn=wwn)
|
|
||||||
--
|
|
||||||
2.13.6
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
|||||||
From 5bfd75f66225fb4127faa2dd14d3c43af9a575a4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Taylor Jakobson <tjakobs@us.ibm.com>
|
|
||||||
Date: Thu, 1 Feb 2018 14:44:32 -0600
|
|
||||||
Subject: [PATCH 2/4] Use signed char instead of char
|
|
||||||
|
|
||||||
Python3 does not have the "character" type, use signed char instead.
|
|
||||||
|
|
||||||
(cherry picked from commit ed5ff9b9505e50b545e86dfbdd32077f0ddda0cb)
|
|
||||||
Reviewed-by: David Disseldorp <ddiss@suse.de>
|
|
||||||
---
|
|
||||||
targetcli/ui_backstore.py | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/targetcli/ui_backstore.py b/targetcli/ui_backstore.py
|
|
||||||
index 66a21c5..546d9d2 100644
|
|
||||||
--- a/targetcli/ui_backstore.py
|
|
||||||
+++ b/targetcli/ui_backstore.py
|
|
||||||
@@ -526,7 +526,7 @@ class UIBlockBackstore(UIBackstore):
|
|
||||||
except (OSError, IOError):
|
|
||||||
raise ExecutionError("Could not open %s" % dev)
|
|
||||||
# ioctl returns an int. Provision a buffer for it
|
|
||||||
- buf = array.array('c', [chr(0)] * 4)
|
|
||||||
+ buf = array.array('b', [0] * 4)
|
|
||||||
try:
|
|
||||||
fcntl.ioctl(f, BLKROGET, buf)
|
|
||||||
except (OSError, IOError):
|
|
||||||
--
|
|
||||||
2.13.6
|
|
||||||
|
|
2
_service
2
_service
@ -7,7 +7,7 @@
|
|||||||
<param name="versionformat">@PARENT_TAG@</param>
|
<param name="versionformat">@PARENT_TAG@</param>
|
||||||
<param name="versionrewrite-pattern">v(\d*\.\d*\.)fb(\d*)</param>
|
<param name="versionrewrite-pattern">v(\d*\.\d*\.)fb(\d*)</param>
|
||||||
<param name="versionrewrite-replacement">\1\2</param>
|
<param name="versionrewrite-replacement">\1\2</param>
|
||||||
<param name="revision">v2.1.fb47</param>
|
<param name="revision">v2.1.fb49</param>
|
||||||
<param name="changesgenerate">enable</param>
|
<param name="changesgenerate">enable</param>
|
||||||
</service>
|
</service>
|
||||||
<service name="recompress" mode="disabled">
|
<service name="recompress" mode="disabled">
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<servicedata>
|
<servicedata>
|
||||||
<service name="tar_scm">
|
<service name="tar_scm">
|
||||||
<param name="url">https://github.com/open-iscsi/targetcli-fb.git</param>
|
<param name="url">https://github.com/open-iscsi/targetcli-fb.git</param>
|
||||||
<param name="changesrevision">ee32a2493eaccd9352cc596b9e3387960cca48fc</param></service></servicedata>
|
<param name="changesrevision">4d08771c0e6bf3cacba2ed3d3127dd10a86a7847</param></service></servicedata>
|
@ -9,14 +9,12 @@ https://marc.info/?l=ceph-devel&m=143816209010058
|
|||||||
[ddiss@suse.de: accept and propagate wwn parameter]
|
[ddiss@suse.de: accept and propagate wwn parameter]
|
||||||
Reviewed-by: David Disseldorp <ddiss@suse.de>
|
Reviewed-by: David Disseldorp <ddiss@suse.de>
|
||||||
---
|
---
|
||||||
targetcli/ui_backstore.py | 59 +++++++++++++++++++++++++++++++++++++++++++++++
|
targetcli/ui_backstore.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
1 file changed, 59 insertions(+)
|
1 file changed, 59 insertions(+)
|
||||||
|
|
||||||
diff --git a/targetcli/ui_backstore.py b/targetcli/ui_backstore.py
|
|
||||||
index 57dedb1..d576122 100644
|
|
||||||
--- a/targetcli/ui_backstore.py
|
--- a/targetcli/ui_backstore.py
|
||||||
+++ b/targetcli/ui_backstore.py
|
+++ b/targetcli/ui_backstore.py
|
||||||
@@ -29,6 +29,7 @@ import dbus
|
@@ -29,6 +29,7 @@ import stat
|
||||||
from configshell_fb import ExecutionError
|
from configshell_fb import ExecutionError
|
||||||
from rtslib_fb import BlockStorageObject, FileIOStorageObject
|
from rtslib_fb import BlockStorageObject, FileIOStorageObject
|
||||||
from rtslib_fb import PSCSIStorageObject, RDMCPStorageObject, UserBackedStorageObject
|
from rtslib_fb import PSCSIStorageObject, RDMCPStorageObject, UserBackedStorageObject
|
||||||
@ -24,7 +22,7 @@ index 57dedb1..d576122 100644
|
|||||||
from rtslib_fb import ALUATargetPortGroup
|
from rtslib_fb import ALUATargetPortGroup
|
||||||
from rtslib_fb import RTSLibError
|
from rtslib_fb import RTSLibError
|
||||||
from rtslib_fb import RTSRoot
|
from rtslib_fb import RTSRoot
|
||||||
@@ -269,6 +270,7 @@ class UIBackstores(UINode):
|
@@ -281,6 +282,7 @@ class UIBackstores(UINode):
|
||||||
UIRDMCPBackstore(self)
|
UIRDMCPBackstore(self)
|
||||||
UIFileIOBackstore(self)
|
UIFileIOBackstore(self)
|
||||||
UIBlockBackstore(self)
|
UIBlockBackstore(self)
|
||||||
@ -32,7 +30,7 @@ index 57dedb1..d576122 100644
|
|||||||
|
|
||||||
for name, iface, prop_dict in self._user_backstores():
|
for name, iface, prop_dict in self._user_backstores():
|
||||||
UIUserBackedBackstore(self, name, iface, prop_dict)
|
UIUserBackedBackstore(self, name, iface, prop_dict)
|
||||||
@@ -572,6 +574,48 @@ class UIBlockBackstore(UIBackstore):
|
@@ -589,6 +591,48 @@ class UIBlockBackstore(UIBackstore):
|
||||||
completions = [completions[0] + ' ']
|
completions = [completions[0] + ' ']
|
||||||
return completions
|
return completions
|
||||||
|
|
||||||
@ -81,7 +79,7 @@ index 57dedb1..d576122 100644
|
|||||||
|
|
||||||
class UIUserBackedBackstore(UIBackstore):
|
class UIUserBackedBackstore(UIBackstore):
|
||||||
'''
|
'''
|
||||||
@@ -739,6 +783,21 @@ class UIBlockStorageObject(UIStorageObject):
|
@@ -791,6 +835,21 @@ class UIBlockStorageObject(UIStorageObje
|
||||||
return ("%s (%s) %s%s %s" % (so.udev_path, bytes_to_human(so.size),
|
return ("%s (%s) %s%s %s" % (so.udev_path, bytes_to_human(so.size),
|
||||||
ro_str, wb_str, so.status), True)
|
ro_str, wb_str, so.status), True)
|
||||||
|
|
||||||
@ -103,6 +101,3 @@ index 57dedb1..d576122 100644
|
|||||||
|
|
||||||
class UIUserBackedStorageObject(UIStorageObject):
|
class UIUserBackedStorageObject(UIStorageObject):
|
||||||
def summary(self):
|
def summary(self):
|
||||||
--
|
|
||||||
2.13.6
|
|
||||||
|
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:d5b7ec8b0984e5f058f237c5b8eaa4d80dbb817f22f5ae45bb9247e1c09f408b
|
|
||||||
size 29140
|
|
3
targetcli-fb-2.1.49.tar.xz
Normal file
3
targetcli-fb-2.1.49.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:ad5a9438589cb63bbde70ecaf78614686b8b623480297f210bb323972d7acb66
|
||||||
|
size 30080
|
@ -1,3 +1,36 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Oct 18 19:50:11 UTC 2018 - opensuse-packaging@opensuse.org
|
||||||
|
|
||||||
|
- Update to version 2.1.49:
|
||||||
|
* version 2.1.fb49
|
||||||
|
* targetcli-fb: Add support for media change
|
||||||
|
* fix the parameter of define_config_group_param
|
||||||
|
* saveconfig: handle backups with block-level delete
|
||||||
|
* saveconfig: way for block-level save with delete command
|
||||||
|
* create: add a way to set control string
|
||||||
|
* fix amount of backup files in backup dir
|
||||||
|
* config: add saveconfig command to StorageObject level
|
||||||
|
* Allow to customize a home directory
|
||||||
|
* Fix default max_backup_files in ui_command_saveconfig
|
||||||
|
* MappedLuns and Luns max number is not the same anymore
|
||||||
|
* Use signed char instead of char
|
||||||
|
* version 2.1.fb48
|
||||||
|
* remove wrong exit code from targetcli --version
|
||||||
|
* backup: global option to tune max no. of backup conf files
|
||||||
|
* config: rename key 'kept_backups' as 'max_backup_files'
|
||||||
|
* config: backup when current config is different from recent backup copy
|
||||||
|
* config: defend on '/etc/target/backup' directory
|
||||||
|
* Auto-detect readonly state for iblock devices
|
||||||
|
* Read number of backup files to keep from file
|
||||||
|
* skip refreshing user backed storage object when it is null
|
||||||
|
* Replace dbus-python with GObject Introspection
|
||||||
|
This replaces targetcli-fb-2.1.47.tar.xz with targetcli-fb-2.1.49.tar.xz,
|
||||||
|
and removes the following patches:
|
||||||
|
* Auto-detect-readonly-state-for-iblock-devices.patch
|
||||||
|
* Use-signed-char-instead-of-char.patch
|
||||||
|
* targetcli-only-save-old-config-if-present.patch
|
||||||
|
and updates the SPEC file.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Apr 20 19:13:39 UTC 2018 - lduncan@suse.com
|
Fri Apr 20 19:13:39 UTC 2018 - lduncan@suse.com
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
|
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
|
||||||
Name: targetcli-fb
|
Name: targetcli-fb
|
||||||
Version: 2.1.47
|
Version: 2.1.49
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: A command shell for managing the Linux LIO kernel target
|
Summary: A command shell for managing the Linux LIO kernel target
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
@ -54,11 +54,8 @@ Provides: targetcli-rbd = %{version}
|
|||||||
Obsoletes: targetcli-rbd < %{version}
|
Obsoletes: targetcli-rbd < %{version}
|
||||||
%endif
|
%endif
|
||||||
%{?systemd_requires}
|
%{?systemd_requires}
|
||||||
Patch1: Auto-detect-readonly-state-for-iblock-devices.patch
|
Patch1: Split-out-blockdev-readonly-state-detection-helper.patch
|
||||||
Patch2: Use-signed-char-instead-of-char.patch
|
Patch2: rbd-support.patch
|
||||||
Patch3: Split-out-blockdev-readonly-state-detection-helper.patch
|
|
||||||
Patch4: rbd-support.patch
|
|
||||||
Patch5: targetcli-only-save-old-config-if-present.patch
|
|
||||||
|
|
||||||
%python_subpackages
|
%python_subpackages
|
||||||
|
|
||||||
@ -84,13 +81,10 @@ python2-targetcli-fb and python3-targetcli-fb.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
|
||||||
%if 0%{?sle_version} == 150000
|
%if 0%{?sle_version} == 150000
|
||||||
# RBD support is dependent on LIO changes present in the SLE/Leap kernel
|
# RBD support is dependent on LIO changes present in the SLE/Leap kernel
|
||||||
%patch4 -p1
|
%patch2 -p1
|
||||||
%endif
|
%endif
|
||||||
%patch5 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%python_build
|
%python_build
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
From: Lee Duncan <lduncan@suse.com>
|
|
||||||
Date: Fri Apr 20 12:07:30 PDT 2018
|
|
||||||
Subject: [PATCH] targetcli: only save old config if present
|
|
||||||
|
|
||||||
There is no reason to copy the current configuration to the
|
|
||||||
backup directory if there is no current configuration.
|
|
||||||
|
|
||||||
Already fixed upstream, but the code is totally different
|
|
||||||
there.
|
|
||||||
|
|
||||||
Signed-off-by: Lee Duncan <lduncan@suse.com>
|
|
||||||
---
|
|
||||||
--- a/targetcli/ui_root.py 2018-04-20 11:53:58.987907240 -0700
|
|
||||||
+++ b/targetcli/ui_root.py 2018-04-20 11:56:35.231375345 -0700
|
|
||||||
@@ -70,7 +70,7 @@ class UIRoot(UINode):
|
|
||||||
savefile = os.path.expanduser(savefile)
|
|
||||||
|
|
||||||
# Only save backups if saving to default location
|
|
||||||
- if savefile == default_save_file:
|
|
||||||
+ if (savefile == default_save_file) and os.path.exists(savefile):
|
|
||||||
backup_dir = os.path.dirname(savefile) + "/backup"
|
|
||||||
backup_name = "saveconfig-" + \
|
|
||||||
datetime.now().strftime("%Y%m%d-%H:%M:%S") + ".json"
|
|
Loading…
Reference in New Issue
Block a user