Compare commits

...

No commits in common. "c8" and "c9s" have entirely different histories.
c8 ... c9s

50 changed files with 1173 additions and 1856 deletions

1
.fmf/version Normal file
View File

@ -0,0 +1 @@
1

16
.gitignore vendored
View File

@ -1 +1,15 @@
SOURCES/open-iscsi-095f59c.tar.gz
/open-iscsi-2.0-873.tar.gz
/iscsiuio-0.7.2.1.tar.gz
/open-iscsi-4c9d6f9.tar.gz
/open-iscsi-4c1f2d9.tar.gz
/open-iscsi-86e8892.tar.gz
/open-iscsi-4ef9261.tar.gz
/open-iscsi-f3c8e90.tar.gz
/open-iscsi-4440e57.tar.gz
/open-iscsi-ac87641.tar.gz
/open-iscsi-802688d.tar.gz
/open-iscsi-13e7f58.tar.gz
/open-iscsi-a8fcb37.tar.gz
/open-iscsi-095f59c.tar.gz
/open-iscsi-2a8f9d8.tar.gz
/open-iscsi-a65a472.tar.gz

View File

@ -1 +1 @@
d6947b76f161a0adcc6d984ed43a82c99e319578 SOURCES/open-iscsi-095f59c.tar.gz
eef1ee9663a36e32b87b1858b5da883b38f4d223 open-iscsi-a65a472.tar.gz

View File

@ -0,0 +1,32 @@
From 51833a7ba053a0219e9e41f4b4c8c4b2f6860ff2 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Sat, 15 Apr 2023 16:01:15 -0700
Subject: [PATCH 1/6] meson: don't hide things with -Wno-all
It's breaking the build when platform defaults set
-Werror=format-security
---
meson.build | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/meson.build b/meson.build
index 7537ea5..f352907 100644
--- a/meson.build
+++ b/meson.build
@@ -102,11 +102,10 @@ endif
# do not depend on anything local
#
libsysdeps = static_library('sysdeps', sysdeps_files,
- include_directories: [usr_inc, main_inc, lib_inc],
- c_args: '-Wno-all')
+ include_directories: [usr_inc, main_inc, lib_inc])
libfwparam = static_library('fwparam', fwparam_files,
include_directories: [usr_inc, main_inc, lib_inc],
- c_args: [genl_cargs, '-Wno-all'])
+ c_args: genl_cargs)
#
# build libopeniscsiusr, since it does not
--
2.39.2

View File

@ -0,0 +1,62 @@
From 295bab75dfbb50904def98b46abd463a050a6e29 Mon Sep 17 00:00:00 2001
From: Gordon Messmer <gordon.messmer@gmail.com>
Date: Sat, 4 Feb 2023 11:17:20 -0800
Subject: [PATCH 2/6] Currently, when iscsi.service is installed, it creates an
ordering dependency that forces network-online to start before
remote-fs-pre.target, which delays boot even when /var/lib/iscsi/nodes is
empty and the iscsi.service won't be started. This change moves the logic
that determines whether iscsi will be started to an external service file so
that the boot order dependency exists only when iscsi.service will be
started.
---
etc/Makefile | 1 +
etc/systemd/iscsi-starter.service.template | 13 +++++++++++++
etc/systemd/iscsi.service.template | 2 +-
3 files changed, 15 insertions(+), 1 deletion(-)
create mode 100644 etc/systemd/iscsi-starter.service.template
diff --git a/etc/Makefile b/etc/Makefile
index 6dd6a41..3f92054 100644
--- a/etc/Makefile
+++ b/etc/Makefile
@@ -27,6 +27,7 @@ SYSTEMD_SOURCES = $(addprefix systemd/,$(SYSTEMD_SOURCE_FILES))
SYSTEMD_TEMPLATE_FILES = iscsi-init.service.template \
iscsid.service.template \
iscsi.service.template \
+ iscsi-starter.service.template \
iscsiuio.service.template
SYSTEMD_TEMPLATES = $(addprefix systemd/,$(SYSTEMD_TEMPLATE_FILES))
SYSTEMD_RULES_FILES = ibft-rule-generator
diff --git a/etc/systemd/iscsi-starter.service.template b/etc/systemd/iscsi-starter.service.template
new file mode 100644
index 0000000..5e97941
--- /dev/null
+++ b/etc/systemd/iscsi-starter.service.template
@@ -0,0 +1,13 @@
+[Unit]
+DefaultDependencies=no
+Before=sysinit.target iscsi.service
+RequiresMountsFor=/var/lib/iscsi/nodes
+ConditionDirectoryNotEmpty=/var/lib/iscsi/nodes
+
+[Service]
+Type=oneshot
+RemainAfterExit=true
+ExecStart=@SBINDIR@/systemctl start --no-block --job-mode=fail iscsi.service
+
+[Install]
+WantedBy=sysinit.target
diff --git a/etc/systemd/iscsi.service.template b/etc/systemd/iscsi.service.template
index 6becab4..8a4de9b 100644
--- a/etc/systemd/iscsi.service.template
+++ b/etc/systemd/iscsi.service.template
@@ -15,4 +15,4 @@ SuccessExitStatus=21 15
RemainAfterExit=true
[Install]
-WantedBy=remote-fs.target
+Also=iscsi-starter.service
--
2.39.2

View File

@ -0,0 +1,56 @@
From 0f90d4440047a3c62bdf09d876787000d0fa5b7e Mon Sep 17 00:00:00 2001
From: Gordon Messmer <gordon.messmer@gmail.com>
Date: Sat, 4 Feb 2023 14:13:12 -0800
Subject: [PATCH 3/6] Use DBROOT in iscsi-starter. Include iscsi-starter in
meson build.
---
etc/Makefile | 2 +-
etc/systemd/iscsi-starter.service.template | 4 ++--
etc/systemd/meson.build | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/etc/Makefile b/etc/Makefile
index 3f92054..6ec846f 100644
--- a/etc/Makefile
+++ b/etc/Makefile
@@ -46,7 +46,7 @@ INAME_DEST_FILE = $(DESTDIR)$(HOMEDIR)/initiatorname.iscsi
all: $(SYSTEMD_SOURCES) $(SYSTEMD_GENERATED_SERVICE_FILES)
$(SYSTEMD_GENERATED_SERVICE_FILES): systemd/%.service: systemd/%.service.template
- $(SED) -e 's:@SBINDIR@:$(SBINDIR):' $? > $@
+ $(SED) -e 's:@SBINDIR@:$(SBINDIR):; s:@DBROOT@:$(DBROOT):' $? > $@
install: install_systemd install_iface install_etc
diff --git a/etc/systemd/iscsi-starter.service.template b/etc/systemd/iscsi-starter.service.template
index 5e97941..d3ea7cd 100644
--- a/etc/systemd/iscsi-starter.service.template
+++ b/etc/systemd/iscsi-starter.service.template
@@ -1,8 +1,8 @@
[Unit]
DefaultDependencies=no
Before=sysinit.target iscsi.service
-RequiresMountsFor=/var/lib/iscsi/nodes
-ConditionDirectoryNotEmpty=/var/lib/iscsi/nodes
+RequiresMountsFor=@DBROOT@/nodes
+ConditionDirectoryNotEmpty=@DBROOT@/nodes
[Service]
Type=oneshot
diff --git a/etc/systemd/meson.build b/etc/systemd/meson.build
index 90082c7..1470a53 100644
--- a/etc/systemd/meson.build
+++ b/etc/systemd/meson.build
@@ -3,7 +3,7 @@
#
# templated systemd service files
-iscsi_etc_systemd_service_units = ['iscsi-init', 'iscsid', 'iscsi', 'iscsiuio']
+iscsi_etc_systemd_service_units = ['iscsi-init', 'iscsid', 'iscsi', 'iscsi-starter', 'iscsiuio']
iscsi_etc_systemd_service_units_arr = {}
foreach u: iscsi_etc_systemd_service_units
iscsi_etc_systemd_service_units_arr += {u + '.service': files(u + '.service.template')}
--
2.39.2

View File

@ -0,0 +1,25 @@
From 1df58cafc3b5d2dea5dd53a539a0014b10664f51 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Mon, 3 Jul 2023 18:22:14 -0700
Subject: [PATCH 1/1] fix systemctl path in iscsi-starter.service
---
etc/systemd/iscsi-starter.service.template | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/etc/systemd/iscsi-starter.service.template b/etc/systemd/iscsi-starter.service.template
index d3ea7cd..466ddf0 100644
--- a/etc/systemd/iscsi-starter.service.template
+++ b/etc/systemd/iscsi-starter.service.template
@@ -7,7 +7,7 @@ ConditionDirectoryNotEmpty=@DBROOT@/nodes
[Service]
Type=oneshot
RemainAfterExit=true
-ExecStart=@SBINDIR@/systemctl start --no-block --job-mode=fail iscsi.service
+ExecStart=/usr/bin/systemctl start --no-block --job-mode=fail iscsi.service
[Install]
WantedBy=sysinit.target
--
2.40.1

View File

@ -0,0 +1,142 @@
From 5a62fe2c3c36b9d14b433edb8cbccbed7af4e2b7 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 18 Apr 2023 15:53:33 -0700
Subject: [PATCH 4/6] improved onboot and shutdown services
---
etc/systemd/iscsi-mark-root-nodes | 34 +++++++++++++++++++++
etc/systemd/iscsi-onboot.service.template | 15 +++++++++
etc/systemd/iscsi-shutdown.service.template | 15 +++++++++
etc/systemd/iscsi.service.template | 3 +-
etc/systemd/iscsid.service.template | 2 +-
etc/systemd/meson.build | 2 +-
6 files changed, 67 insertions(+), 4 deletions(-)
create mode 100755 etc/systemd/iscsi-mark-root-nodes
create mode 100644 etc/systemd/iscsi-onboot.service.template
create mode 100644 etc/systemd/iscsi-shutdown.service.template
diff --git a/etc/systemd/iscsi-mark-root-nodes b/etc/systemd/iscsi-mark-root-nodes
new file mode 100755
index 0000000..9d48805
--- /dev/null
+++ b/etc/systemd/iscsi-mark-root-nodes
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+ISCSIADM=/usr/sbin/iscsiadm
+start_iscsid=0
+start_iscsiuio=0
+
+while read t num p target flash; do
+ # strip tag number from portal, keep "ip:port"
+ portal=${p%,*}
+ transport=${t%:}
+
+ # use session number to find the iface name in use
+ num=${num#[}; num=${num%]}
+ iface=$(iscsiadm -m session -r $num | grep iface.iscsi_ifacename | cut -d= -f2)
+
+ $ISCSIADM -m node -p $portal -T $target -I $iface -o update -n node.startup -v onboot
+
+ start_iscsid=1
+
+ if [ "$transport" = bnx2i ] || [ "$transport" = qedi ]; then
+ start_iscsiuio=1
+ fi
+done < <( $ISCSIADM -m session )
+
+# force iscsid and iscsiuio to start if needed for
+# recovering sessions created in the initrd
+
+if [ "$start_iscsid" -eq 1 ]; then
+ systemctl --no-block start iscsid.service
+fi
+if [ "$start_iscsiuio" -eq 1 ]; then
+ systemctl --no-block start iscsiuio.service
+fi
+
diff --git a/etc/systemd/iscsi-onboot.service.template b/etc/systemd/iscsi-onboot.service.template
new file mode 100644
index 0000000..42ced68
--- /dev/null
+++ b/etc/systemd/iscsi-onboot.service.template
@@ -0,0 +1,15 @@
+[Unit]
+Description=Special handling of early boot iSCSI sessions
+Documentation=man:iscsiadm(8) man:iscsid(8)
+DefaultDependencies=no
+RefuseManualStart=true
+Before=iscsi.service
+After=systemd-remount-fs.service
+ConditionDirectoryNotEmpty=/sys/class/iscsi_session
+
+[Service]
+Type=oneshot
+ExecStart=-/usr/libexec/iscsi-mark-root-nodes
+
+[Install]
+WantedBy=sysinit.target
diff --git a/etc/systemd/iscsi-shutdown.service.template b/etc/systemd/iscsi-shutdown.service.template
new file mode 100644
index 0000000..fe5d5cd
--- /dev/null
+++ b/etc/systemd/iscsi-shutdown.service.template
@@ -0,0 +1,15 @@
+[Unit]
+Description=Logout off all iSCSI sessions on shutdown
+Documentation=man:iscsid(8) man:iscsiadm(8)
+DefaultDependencies=no
+Conflicts=shutdown.target
+After=systemd-remount-fs.service network.target iscsid.service iscsiuio.service
+Before=remote-fs-pre.target
+Wants=remote-fs-pre.target
+RefuseManualStop=yes
+
+[Service]
+Type=oneshot
+RemainAfterExit=true
+ExecStart=-/usr/bin/true
+ExecStop=-@SBINDIR@/iscsiadm -m node --logoutall=all
diff --git a/etc/systemd/iscsi.service.template b/etc/systemd/iscsi.service.template
index 8a4de9b..17153a1 100644
--- a/etc/systemd/iscsi.service.template
+++ b/etc/systemd/iscsi.service.template
@@ -9,8 +9,7 @@ Wants=network-online.target
[Service]
Type=oneshot
ExecStart=@SBINDIR@/iscsiadm -m node --loginall=automatic -W
-ExecStop=@SBINDIR@/iscsiadm -m node --logoutall=automatic
-ExecStop=@SBINDIR@/iscsiadm -m node --logoutall=manual
+ExecReload=@SBINDIR@/iscsiadm -m node --loginall=automatic -W
SuccessExitStatus=21 15
RemainAfterExit=true
diff --git a/etc/systemd/iscsid.service.template b/etc/systemd/iscsid.service.template
index e2a50d3..8987299 100644
--- a/etc/systemd/iscsid.service.template
+++ b/etc/systemd/iscsid.service.template
@@ -5,7 +5,7 @@ DefaultDependencies=no
After=network-online.target iscsiuio.service iscsi-init.service
Before=remote-fs-pre.target
Wants=remote-fs-pre.target
-Requires=iscsi-init.service
+Requires=iscsi-init.service iscsi-shutdown.service
[Service]
Type=notify
diff --git a/etc/systemd/meson.build b/etc/systemd/meson.build
index 1470a53..adcc6a1 100644
--- a/etc/systemd/meson.build
+++ b/etc/systemd/meson.build
@@ -3,7 +3,7 @@
#
# templated systemd service files
-iscsi_etc_systemd_service_units = ['iscsi-init', 'iscsid', 'iscsi', 'iscsi-starter', 'iscsiuio']
+iscsi_etc_systemd_service_units = ['iscsi-init', 'iscsid', 'iscsi', 'iscsi-starter', 'iscsiuio', 'iscsi-onboot', 'iscsi-shutdown']
iscsi_etc_systemd_service_units_arr = {}
foreach u: iscsi_etc_systemd_service_units
iscsi_etc_systemd_service_units_arr += {u + '.service': files(u + '.service.template')}
--
2.39.2

View File

@ -0,0 +1,34 @@
From f3b8f65a16e6e8414f8dedca4330fc0dced113db Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 18 Apr 2023 16:00:44 -0700
Subject: [PATCH 5/6] iscsid.conf Fedora / Red Hat defaults
---
etc/iscsid.conf | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/etc/iscsid.conf b/etc/iscsid.conf
index ca29e43..ec4d4df 100644
--- a/etc/iscsid.conf
+++ b/etc/iscsid.conf
@@ -18,7 +18,7 @@
# the time then leave this attribute commented out.
#
# Default for Fedora and RHEL. Uncomment to activate.
-# iscsid.startup = /bin/systemctl start iscsid.socket iscsiuio.socket
+iscsid.startup = /bin/systemctl start iscsid.socket iscsiuio.socket
#
# Default for Debian and Ubuntu. Uncomment to activate.
# iscsid.startup = /bin/systemctl start iscsid.socket
@@ -51,7 +51,7 @@
# node.startup = automatic
#
# To manually startup the session, use "manual". The default is manual.
-node.startup = manual
+node.startup = automatic
# For "automatic" startup nodes, setting this to "Yes" will try logins on each
# available iface until one succeeds, and then stop. The default "No" will try
--
2.39.2

View File

@ -0,0 +1,70 @@
From 4fd0476062b1c63e1e4aff45a59e3fa79e3bf0e6 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 18 Apr 2023 16:04:00 -0700
Subject: [PATCH 6/6] Disable Data Digests
---
etc/iscsid.conf | 18 +++++++-----------
usr/idbm.c | 4 ++++
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/etc/iscsid.conf b/etc/iscsid.conf
index ec4d4df..e009c29 100644
--- a/etc/iscsid.conf
+++ b/etc/iscsid.conf
@@ -285,27 +285,23 @@ discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768
# To allow the targets to control the setting of the digest checking,
# with the initiator requesting a preference of enabling the checking,
-# uncomment one or both of the following lines:
+# uncomment the following line:
#node.conn[0].iscsi.HeaderDigest = CRC32C,None
-#node.conn[0].iscsi.DataDigest = CRC32C,None
#
# To allow the targets to control the setting of the digest checking,
# with the initiator requesting a preference of disabling the checking,
-# uncomment one or both of the following lines:
+# uncomment the following line:
#node.conn[0].iscsi.HeaderDigest = None,CRC32C
-#node.conn[0].iscsi.DataDigest = None,CRC32C
#
-# To enable CRC32C digest checking for the header and/or data part of
-# iSCSI PDUs, uncomment one or both of the following lines:
+# To enable CRC32C digest checking for the header of
+# iSCSI PDUs, uncomment the following line:
#node.conn[0].iscsi.HeaderDigest = CRC32C
-#node.conn[0].iscsi.DataDigest = CRC32C
#
-# To disable digest checking for the header and/or data part of
-# iSCSI PDUs, uncomment one or both of the following lines:
+# To disable digest checking for the header of
+# iSCSI PDUs, uncomment the following line:
#node.conn[0].iscsi.HeaderDigest = None
-#node.conn[0].iscsi.DataDigest = None
#
-# The default is to never use DataDigests or HeaderDigests.
+# The default is to never use HeaderDigests.
#
# For multipath configurations, you may want more than one session to be
diff --git a/usr/idbm.c b/usr/idbm.c
index ca4a4ec..32e99bc 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -568,9 +568,13 @@ idbm_recinfo_node(node_rec_t *r, recinfo_t *ri)
IDBM_SHOW, "None", "CRC32C", "CRC32C,None",
"None,CRC32C", num, 1);
sprintf(key, CONN_DATA_DIGEST, i);
+
+#if 0
+We do not support data digests
__recinfo_int_o4(key, ri, r, conn[i].iscsi.DataDigest, IDBM_SHOW,
"None", "CRC32C", "CRC32C,None",
"None,CRC32C", num, 1);
+#endif
sprintf(key, CONN_IFMARKER, i);
__recinfo_int_o2(key, ri, r, conn[i].iscsi.IFMarker, IDBM_SHOW,
"No", "Yes", num, 1);
--
2.39.2

View File

@ -1,4 +1,4 @@
From c455d7ff3a2fa37cdd5b43616db975aef336a007 Mon Sep 17 00:00:00 2001
From 6de09f82e86db0500a59017a473c944877a80516 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Wed, 5 Jun 2019 09:08:39 -0700
Subject: [PATCH 1/1] Coverity scan fixes
@ -15,12 +15,12 @@ diff --git a/iscsiuio/src/unix/libs/qedi.c b/iscsiuio/src/unix/libs/qedi.c
index 1af8d1b..9a814c6 100644
--- a/iscsiuio/src/unix/libs/qedi.c
+++ b/iscsiuio/src/unix/libs/qedi.c
@@ -1030,7 +1030,7 @@ static int qedi_read(nic_t *nic, packet_t *pkt)
@@ -1034,7 +1034,7 @@ static int qedi_read(nic_t *nic, packet_t *pkt)
LOG_DEBUG(PFX "%s:hw_prod %d bd_prod %d, rx_pkt_idx %d, rxlen %d",
ILOG_DEBUG(PFX "%s:hw_prod %d bd_prod %d, rx_pkt_idx %d, rxlen %d",
nic->log_name, hw_prod, bd_prod, rx_bd->rx_pkt_index, len);
- LOG_DEBUG(PFX "%s: sw_con %d bd_cons %d num BD %d",
+ LOG_DEBUG(PFX "%s: sw_con %d bd_cons %d num BD %lu",
- ILOG_DEBUG(PFX "%s: sw_con %d bd_cons %d num BD %d",
+ ILOG_DEBUG(PFX "%s: sw_con %d bd_cons %d num BD %lu",
nic->log_name, sw_cons, bd_cons, QEDI_NUM_RX_BD);
if (bd_cons != bd_prod) {
@ -33,7 +33,7 @@ index 0c9ad49..f83f305 100644
sigaddset(&set, SIGUSR1);
rc = pthread_sigmask(SIG_SETMASK, &set, NULL);
+ if (rc != 0) {
+ LOG_ERR("Failed to set thread signal mask");
+ ILOG_ERR("Failed to set thread signal mask");
+ }
/* Spin off the signal handling thread */
@ -96,5 +96,5 @@ index dc54fec..fde8894 100644
if ((control_fd = ipc->ctldev_open()) < 0) {
log_close(log_pid);
--
2.31.1
2.26.3

View File

@ -0,0 +1,39 @@
From 08e9412135c1c89df4d50b8dbdc12c0d227307cb Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Mon, 21 Jan 2013 15:43:36 -0800
Subject: [PATCH 1/1] use Red Hat version string to match RPM package version
---
Makefile | 2 +-
meson.build | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index a0859b7..7ae461a 100644
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,7 @@
DESTDIR ?=
# our VERSION String
-ISCSI_VERSION_STR ?= 2.1.9
+ISCSI_VERSION_STR ?= 6.2.1.9
prefix = /usr
exec_prefix =
diff --git a/meson.build b/meson.build
index d49afbb..ab67096 100644
--- a/meson.build
+++ b/meson.build
@@ -4,7 +4,7 @@
project('open-iscsi', 'c',
meson_version: '>= 0.54.0',
- version: '2.1.9',
+ version: '6.2.1.9',
license: 'LGPL-2.1-or-later',
default_options: [
'c_std=gnu99',
--
2.40.1

View File

@ -0,0 +1,68 @@
From b8c6c1f3bed0e5fcc0d02c56834fa60850a11b5f Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Thu, 18 Feb 2021 14:04:32 -0800
Subject: [PATCH 1/1] minor service file updates
Intended use is with system presets to enable the following:
iscsi.service - login of automatic node records
iscsid.socket - start iscsid as needed for all iSCSI sessions
iscsiuio.socket - start iscsiuio as needed for bnx2i or qedi
iscsi-onboot.service - special handling of initramfs sessions
The following are started automatically as needed:
iscsid.service - needed for all iSCSI sessions
iscsiuio.service - needed for bnx2i or qedi offload
iscsi-init.service - create an iSCSI name if missing before starting iscsid
iscsi-shutdown.service - ensure all non-boot sessions logout at shutdown
---
etc/systemd/iscsi-init.service | 1 +
etc/systemd/iscsi.service | 2 +-
etc/systemd/iscsid.service | 3 +--
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/etc/systemd/iscsi-init.service b/etc/systemd/iscsi-init.service
index e058ff0..c3370ec 100644
--- a/etc/systemd/iscsi-init.service
+++ b/etc/systemd/iscsi-init.service
@@ -1,6 +1,7 @@
[Unit]
Description=One time configuration for iscsi.service
ConditionPathExists=!/etc/iscsi/initiatorname.iscsi
+Before=iscsid.service
[Service]
Type=oneshot
diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service
index 175cb2c..6c542d2 100644
--- a/etc/systemd/iscsi.service
+++ b/etc/systemd/iscsi.service
@@ -4,7 +4,7 @@ Documentation=man:iscsiadm(8) man:iscsid(8)
DefaultDependencies=no
Before=remote-fs-pre.target
After=network.target network-online.target iscsid.service iscsiuio.service systemd-remount-fs.service
-Wants=remote-fs-pre.target iscsi-shutdown.service
+Wants=remote-fs-pre.target
ConditionDirectoryNotEmpty=/var/lib/iscsi/nodes
[Service]
diff --git a/etc/systemd/iscsid.service b/etc/systemd/iscsid.service
index 324c593..df0bd83 100644
--- a/etc/systemd/iscsid.service
+++ b/etc/systemd/iscsid.service
@@ -4,7 +4,7 @@ Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8)
DefaultDependencies=no
After=network-online.target iscsiuio.service iscsi-init.service
Before=remote-fs-pre.target
-Requires=iscsi-init.service
+Requires=iscsi-init.service iscsi-shutdown.service
[Service]
Type=notify
@@ -15,4 +15,3 @@ Restart=on-failure
[Install]
WantedBy=multi-user.target
-Also=iscsid.socket
--
2.26.3

View File

@ -1,16 +1,16 @@
From 8b4da8007ef59bbc833fed882ddae57bbcd51f1c Mon Sep 17 00:00:00 2001
From 87b7c11947f6ba154271f8f70720a721d23f040e Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Mon, 26 Jan 2015 12:57:11 -0800
Subject: [PATCH] libiscsi
Subject: [PATCH 1/1] libiscsi
---
Makefile | 2 +
libiscsi/Makefile | 65 +
libiscsi/libiscsi.c | 617 ++++++++
libiscsi/Makefile | 77 +
libiscsi/libiscsi.c | 620 ++++++++
libiscsi/libiscsi.doxy | 1473 +++++++++++++++++++
libiscsi/libiscsi.h | 344 +++++
libiscsi/no_date_footer.html | 6 +
libiscsi/pylibiscsi.c | 709 +++++++++
libiscsi/pylibiscsi.c | 719 +++++++++
libiscsi/setup.py | 9 +
libiscsi/tests/test_discovery_firmware.c | 53 +
libiscsi/tests/test_discovery_sendtargets.c | 60 +
@ -21,12 +21,11 @@ Subject: [PATCH] libiscsi
libiscsi/tests/test_logout.c | 51 +
libiscsi/tests/test_params.c | 103 ++
libiscsi/tests/test_set_auth.c | 58 +
usr/Makefile | 2 +-
usr/discovery.c | 5 +
usr/discovery.c | 1 +
usr/idbm.c | 6 +-
usr/idbm.h | 3 +
usr/iscsi_ipc.h | 2 +
22 files changed, 3769 insertions(+), 4 deletions(-)
21 files changed, 3789 insertions(+), 3 deletions(-)
create mode 100644 libiscsi/Makefile
create mode 100644 libiscsi/libiscsi.c
create mode 100644 libiscsi/libiscsi.doxy
@ -45,31 +44,31 @@ Subject: [PATCH] libiscsi
create mode 100644 libiscsi/tests/test_set_auth.c
diff --git a/Makefile b/Makefile
index 7b445a5..4ab091f 100644
index 09bda07..a0859b7 100644
--- a/Makefile
+++ b/Makefile
@@ -65,6 +65,7 @@ user: iscsiuio/Makefile
$(MAKE) -C usr
$(MAKE) -C utils
$(MAKE) -C iscsiuio
+ $(MAKE) -C libiscsi
@@ -66,6 +66,7 @@ user: deprecation_msg iscsiuio/Makefile
$(MAKE) $(MFLAGS) -C etc
$(MAKE) $(MFLAGS) -C iscsiuio
$(MAKE) $(MFLAGS) -C doc
+ $(MAKE) $(MFLAGS) -C libiscsi
@echo
@echo "Compilation complete Output file"
@echo "----------------------------------- ----------------"
@@ -85,6 +86,7 @@ iscsiuio/configure iscsiuio/Makefile.in: iscsiuio/configure.ac iscsiuio/Makefile
@@ -86,6 +87,7 @@ iscsiuio/configure: iscsiuio/configure.ac iscsiuio/Makefile.am
force: ;
clean:
+ $(MAKE) -C libiscsi clean
$(MAKE) -C utils/sysdeps clean
$(MAKE) -C utils/fwparam_ibft clean
$(MAKE) -C utils clean
clean distclean:
+ $(MAKE) $(MFLAGS) -C libiscsi $@
$(MAKE) $(MFLAGS) -C sysdeps $@
$(MAKE) $(MFLAGS) -C utils $@
$(MAKE) $(MFLAGS) -C usr $@
diff --git a/libiscsi/Makefile b/libiscsi/Makefile
new file mode 100644
index 0000000..53f9746
index 0000000..7f5d371
--- /dev/null
+++ b/libiscsi/Makefile
@@ -0,0 +1,65 @@
@@ -0,0 +1,77 @@
+# This Makefile will work only with GNU make.
+
+ifeq ($(TOPDIR),)
@ -80,7 +79,19 @@ index 0000000..53f9746
+OPTFLAGS ?= -O2 -g
+WARNFLAGS ?= -Wall -Wstrict-prototypes
+CFLAGS = $(OPTFLAGS) $(WARNFLAGS) -I../include -I../usr \
+ -D$(OSNAME) -fPIC -D_GNU_SOURCE -fvisibility=hidden
+ -D$(OSNAME) -fPIC -D_GNU_SOURCE -fvisibility=hidden \
+ -I../libopeniscsiusr
+
+#CFLAGS ?= -O2 -g
+#CFLAGS += -Wall -Werror -Wextra -fvisibility=hidden -fPIC
+CFLAGS += -I../libopeniscsiusr -I../include -I../usr
+#CFLAGS += $(shell $(PKG_CONFIG) --cflags libkmod)
+CFLAGS += -DSBINDIR=\"$(SBINDIR)\"
+CFLAGS += -DISCSI_DB_ROOT=\"$(DBROOT)\"
+CFLAGS += -DISCSI_VERSION_STR=\"$(ISCSI_VERSION_STR)\"
+
+LDFLAGS = -L../libopeniscsiusr -lopeniscsiusr -lkmod -lcrypto
+
+LIB = libiscsi.so.0
+TESTS = tests/test_discovery_sendtargets tests/test_discovery_firmware
+TESTS += tests/test_login tests/test_logout tests/test_params
@ -89,13 +100,13 @@ index 0000000..53f9746
+
+COMMON_SRCS = sysdeps.o
+# sources shared between iscsid, iscsiadm and iscsistart
+ISCSI_LIB_SRCS = netlink.o transport.o cxgbi.o be2iscsi.o iscsi_timer.o initiator_common.o iscsi_err.o session_info.o iscsi_util.o io.o auth.o discovery.o login.o log.o md5.o sha1.o iface.o idbm.o sysfs.o iscsi_sysfs.o iscsi_net_util.o iscsid_req.o iser.o uip_mgmt_ipc.o
+ISCSI_LIB_SRCS = netlink.o transport.o cxgbi.o be2iscsi.o iscsi_timer.o initiator_common.o iscsi_err.o session_info.o iscsi_util.o io.o auth.o discovery.o login.o log.o iface.o idbm.o sysfs.o iscsi_sysfs.o iscsi_net_util.o iscsid_req.o iser.o uip_mgmt_ipc.o
+FW_PARAM_SRCS = fw_entry.o prom_lex.o prom_parse.tab.o fwparam_ppc.o fwparam_sysfs.o
+
+# sources shared with the userspace utils, note we build these separately
+# to get PIC versions.
+COMMON_OBJS = $(patsubst %.o, common-objs/%.o, $(COMMON_SRCS))
+USR_OBJS = $(patsubst %.o, usr-objs/%.o, $(ISCSI_LIB_SRCS) strings.o)
+USR_OBJS = $(patsubst %.o, usr-objs/%.o, $(ISCSI_LIB_SRCS) local_strings.o)
+FW_OBJS = $(patsubst %.o, fw-objs/%.o, $(FW_PARAM_SRCS))
+
+# Flags for the tests
@ -106,7 +117,7 @@ index 0000000..53f9746
+lib: $(LIB)
+tests: $(TESTS)
+
+common-objs/%.o: ../utils/sysdeps/%.c
+common-objs/%.o: ../sysdeps/%.c
+ mkdir -p common-objs
+ $(CC) $(CFLAGS) -c $< -o $@
+
@ -114,7 +125,7 @@ index 0000000..53f9746
+ mkdir -p usr-objs
+ $(CC) $(CFLAGS) -c $< -o $@
+
+fw-objs/%.o: ../utils/fwparam_ibft/%.c
+fw-objs/%.o: ../usr/fwparam_ibft/%.c
+ mkdir -p fw-objs
+ $(CC) $(CFLAGS) -c $< -o $@
+
@ -137,10 +148,10 @@ index 0000000..53f9746
+-include .depend ../usr/.depend
diff --git a/libiscsi/libiscsi.c b/libiscsi/libiscsi.c
new file mode 100644
index 0000000..064e4b5
index 0000000..3e400a8
--- /dev/null
+++ b/libiscsi/libiscsi.c
@@ -0,0 +1,617 @@
@@ -0,0 +1,620 @@
+/*
+ * iSCSI Administration library
+ *
@ -278,6 +289,7 @@ index 0000000..064e4b5
+
+ /* Fill the drec struct with all needed info */
+ memset(&drec, 0, sizeof drec);
+ drec.iscsid_req_tmo = -1;
+ idbm_sendtargets_defaults(&drec.u.sendtargets);
+ drec.type = DISCOVERY_TYPE_SENDTARGETS;
+ strlcpy(drec.address, address, sizeof(drec.address));
@ -318,7 +330,8 @@ index 0000000..064e4b5
+ *found_nodes = calloc(found, sizeof **found_nodes);
+ if (*found_nodes == NULL) {
+ snprintf(context->error_str,
+ sizeof(context->error_str), strerror(ENOMEM));
+ sizeof(context->error_str),
+ "%s", strerror(ENOMEM));
+ rc = ENOMEM;
+ goto leave;
+ }
@ -370,6 +383,7 @@ index 0000000..064e4b5
+ CHECK(iface_create_ifaces_from_boot_contexts(&ifaces, &targets));
+
+ memset(&drec, 0, sizeof(drec));
+ drec.iscsid_req_tmo = -1;
+ drec.type = DISCOVERY_TYPE_FW;
+ rc = idbm_bind_ifaces_to_nodes(discovery_fw, &drec, &ifaces, &rec_list);
+ if (rc) {
@ -568,7 +582,7 @@ index 0000000..064e4b5
+
+ CHECK(idbm_for_each_iface(&nr_found, (void*)node->iface, login_helper,
+ (char *)node->name, node->tpgt,
+ (char *)node->address, node->port))
+ (char *)node->address, node->port, false))
+ if (nr_found == 0) {
+ strcpy(context->error_str, "No such node");
+ rc = ENODEV;
@ -630,7 +644,7 @@ index 0000000..064e4b5
+
+ CHECK(idbm_for_each_iface(&nr_found, &params, idbm_node_set_param,
+ (char *)node->name, node->tpgt,
+ (char *)node->address, node->port))
+ (char *)node->address, node->port, false))
+ if (nr_found == 0) {
+ strcpy(context->error_str, "No such node");
+ rc = ENODEV;
@ -650,7 +664,7 @@ index 0000000..064e4b5
+ info = idbm_recinfo_alloc(MAX_KEYS);
+ if (!info) {
+ snprintf(context->error_str, sizeof(context->error_str),
+ strerror(ENOMEM));
+ "%s", strerror(ENOMEM));
+ return ENOMEM;
+ }
+
@ -692,7 +706,7 @@ index 0000000..064e4b5
+ as most settings should be the same independent of the iface. */
+ CHECK(idbm_for_each_iface(&nr_found, context, get_parameter_helper,
+ (char *)node->name, node->tpgt,
+ (char *)node->address, node->port))
+ (char *)node->address, node->port, false))
+ if (nr_found == 0) {
+ strcpy(context->error_str, "No such node");
+ rc = ENODEV;
@ -2601,10 +2615,10 @@ index 0000000..1e0c6c4
+</html>
diff --git a/libiscsi/pylibiscsi.c b/libiscsi/pylibiscsi.c
new file mode 100644
index 0000000..8800853
index 0000000..40b5955
--- /dev/null
+++ b/libiscsi/pylibiscsi.c
@@ -0,0 +1,709 @@
@@ -0,0 +1,719 @@
+/*
+ * iSCSI Administration library
+ *
@ -2971,8 +2985,13 @@ index 0000000..8800853
+static PyObject *PyIscsiNode_login(PyObject *self)
+{
+ PyIscsiNode *node = (PyIscsiNode *)self;
+ int ret;
+
+ if (libiscsi_node_login(context, &node->node)) {
+ Py_BEGIN_ALLOW_THREADS
+ ret = libiscsi_node_login(context, &node->node);
+ Py_END_ALLOW_THREADS
+
+ if (ret) {
+ PyErr_SetString(PyExc_IOError,
+ libiscsi_get_error_string(context));
+ return NULL;
@ -3158,6 +3177,7 @@ index 0000000..8800853
+ const struct libiscsi_auth_info *authinfo = NULL;
+ struct libiscsi_node *found_nodes;
+ PyObject* found_node_list;
+ int ret;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|iO",
+ kwlist, &address, &port,
@ -3177,8 +3197,12 @@ index 0000000..8800853
+ }
+ }
+
+ if (libiscsi_discover_sendtargets(context, address, port, authinfo,
+ &nr_found, &found_nodes)) {
+ Py_BEGIN_ALLOW_THREADS
+ ret = libiscsi_discover_sendtargets(context, address, port, authinfo,
+ &nr_found, &found_nodes);
+ Py_END_ALLOW_THREADS
+
+ if (ret) {
+ PyErr_SetString(PyExc_IOError,
+ libiscsi_get_error_string(context));
+ return NULL;
@ -3913,21 +3937,8 @@ index 0000000..a21f888
+
+ return rc;
+}
diff --git a/usr/Makefile b/usr/Makefile
index 21bb154..885243a 100644
--- a/usr/Makefile
+++ b/usr/Makefile
@@ -37,7 +37,7 @@ PKG_CONFIG = /usr/bin/pkg-config
CFLAGS ?= -O2 -g
WARNFLAGS ?= -Wall -Wextra -Werror -Wstrict-prototypes -fno-common
CFLAGS += $(WARNFLAGS) -I../include -I. -D_GNU_SOURCE \
- -I$(TOPDIR)/libopeniscsiusr
+ -I$(TOPDIR)/libopeniscsiusr -DISNS_ENABLE
CFLAGS += $(shell $(PKG_CONFIG) --cflags libkmod)
ISCSI_LIB = -L$(TOPDIR)/libopeniscsiusr -lopeniscsiusr
LDFLAGS += $(shell $(PKG_CONFIG) --libs libkmod)
diff --git a/usr/discovery.c b/usr/discovery.c
index 7dec696..2cf1838 100644
index 792abcf..ed4dc73 100644
--- a/usr/discovery.c
+++ b/usr/discovery.c
@@ -36,6 +36,7 @@
@ -3938,40 +3949,11 @@ index 7dec696..2cf1838 100644
#include "log.h"
#include "idbm.h"
#include "iscsi_settings.h"
@@ -49,10 +50,12 @@
#include "iface.h"
#include "iscsi_timer.h"
#include "iscsi_err.h"
+#ifdef ISNS_ENABLE
/* libisns includes */
#include <libisns/isns.h>
#include <libisns/paths.h>
#include <libisns/message.h>
+#endif
#ifdef SLP_ENABLE
#include "iscsi-slp-discovery.h"
@@ -98,6 +101,7 @@ static int request_initiator_name(int tmo)
return 0;
}
+#ifdef ISNS_ENABLE
void discovery_isns_free_servername(void)
{
if (isns_config.ic_server_name)
@@ -377,6 +381,7 @@ retry:
discovery_isns_free_servername();
return rc;
}
+#endif
int discovery_fw(void *data,
__attribute__((unused))struct iface_rec *iface,
diff --git a/usr/idbm.c b/usr/idbm.c
index 27cad0a..2498a03 100644
index 32e99bc..b730d1c 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -1825,9 +1825,9 @@ int idbm_print_all_discovery(int info_level)
@@ -1829,9 +1829,9 @@ int idbm_print_all_discovery(int info_level)
* fn should return -1 if it skipped the rec, an ISCSI_ERR error code if
* the operation failed or 0 if fn was run successfully.
*/
@ -3985,10 +3967,10 @@ index 27cad0a..2498a03 100644
DIR *iface_dirfd;
struct dirent *iface_dent;
diff --git a/usr/idbm.h b/usr/idbm.h
index ce098b7..d1a7f63 100644
index 7b1b271..52428ad 100644
--- a/usr/idbm.h
+++ b/usr/idbm.h
@@ -105,6 +105,9 @@ struct rec_op_data {
@@ -102,6 +102,9 @@ struct rec_op_data {
node_rec_t *match_rec;
idbm_iface_op_fn *fn;
};
@ -3999,10 +3981,10 @@ index ce098b7..d1a7f63 100644
char *targetname, bool ruw_lock);
extern int idbm_for_each_node(int *found, void *data,
diff --git a/usr/iscsi_ipc.h b/usr/iscsi_ipc.h
index 47857dd..596543b 100644
index c3c9917..73a8865 100644
--- a/usr/iscsi_ipc.h
+++ b/usr/iscsi_ipc.h
@@ -162,4 +162,6 @@ struct iscsi_ipc {
@@ -175,4 +175,6 @@ struct iscsi_ipc {
char *host_stats);
};
@ -4010,5 +3992,5 @@ index 47857dd..596543b 100644
+
#endif /* ISCSI_IPC_H */
--
2.26.2
2.40.1

View File

@ -0,0 +1,40 @@
From 47dd191ab5c48932df4c0c219fca19fcedba6cd2 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Thu, 2 Jun 2022 11:37:20 -0700
Subject: [PATCH 1/1] fix libiscsi firmware discovery issue with NULL drec
argument
---
libiscsi/libiscsi.c | 2 +-
usr/idbm.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/libiscsi/libiscsi.c b/libiscsi/libiscsi.c
index c598aee..bddf9fc 100644
--- a/libiscsi/libiscsi.c
+++ b/libiscsi/libiscsi.c
@@ -258,7 +258,7 @@ int libiscsi_discover_firmware(struct libiscsi_context *context,
struct libiscsi_node *new_node = new_nodes;
/* in one loop, add nodes to idbm and create libiscsi_node entries */
list_for_each_entry(rec, &rec_list, list) {
- CHECK(idbm_add_node(rec, NULL, 1 /* overwrite */));
+ CHECK(idbm_add_node(rec, &drec, 1 /* overwrite */));
strlcpy(new_node->name, rec->name, LIBISCSI_VALUE_MAXLEN);
new_node->tpgt = rec->tpgt;
diff --git a/usr/idbm.c b/usr/idbm.c
index e9025bf..9cc9c40 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -2536,7 +2536,7 @@ int idbm_add_node(node_rec_t *newrec, discovery_rec_t *drec, int overwrite)
if (rc)
goto unlock;
- if (drec->type == DISCOVERY_TYPE_FW) {
+ if (drec && drec->type == DISCOVERY_TYPE_FW) {
log_debug(8, "setting firmware node 'startup' to 'onboot'");
newrec->startup = ISCSI_STARTUP_ONBOOT;
newrec->conn[0].startup = ISCSI_STARTUP_ONBOOT;
--
2.36.1

View File

@ -0,0 +1,96 @@
From d6344267de82b7ef38e2834522a8782579b77d42 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Fri, 30 Jun 2023 22:19:23 +0000
Subject: [PATCH 104/104] libiscsi build fixes
---
Makefile | 4 ++++
libiscsi/Makefile | 27 +++++++++++++++------------
2 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/Makefile b/Makefile
index a537516..3fe76df 100644
--- a/Makefile
+++ b/Makefile
@@ -58,6 +58,10 @@ deprecation_msg:
@echo "*** Please see the README file for more information."
@echo "***"
+.PHONY: libiscsi
+libiscsi:
+ $(MAKE) $(MFLAGS) -C libiscsi
+
user: deprecation_msg iscsiuio/Makefile
$(MAKE) $(MFLAGS) -C libopeniscsiusr
$(MAKE) $(MFLAGS) -C sysdeps
diff --git a/libiscsi/Makefile b/libiscsi/Makefile
index 7f5d371..9f7b034 100644
--- a/libiscsi/Makefile
+++ b/libiscsi/Makefile
@@ -5,21 +5,22 @@ ifeq ($(TOPDIR),)
endif
OSNAME=$(shell uname -s)
-OPTFLAGS ?= -O2 -g
-WARNFLAGS ?= -Wall -Wstrict-prototypes
-CFLAGS = $(OPTFLAGS) $(WARNFLAGS) -I../include -I../usr \
- -D$(OSNAME) -fPIC -D_GNU_SOURCE -fvisibility=hidden \
+# OPTFLAGS ?= -O2 -g
+# WARNFLAGS ?= -Wall -Wstrict-prototypes
+CFLAGS ?= -O2 -g -Wall
+CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -I../include -I../usr \
+ -D$(OSNAME) -D_GNU_SOURCE -fvisibility=hidden \
-I../libopeniscsiusr
-#CFLAGS ?= -O2 -g
#CFLAGS += -Wall -Werror -Wextra -fvisibility=hidden -fPIC
-CFLAGS += -I../libopeniscsiusr -I../include -I../usr
+#CFLAGS += -I../libopeniscsiusr -I../include -I../usr
#CFLAGS += $(shell $(PKG_CONFIG) --cflags libkmod)
CFLAGS += -DSBINDIR=\"$(SBINDIR)\"
CFLAGS += -DISCSI_DB_ROOT=\"$(DBROOT)\"
CFLAGS += -DISCSI_VERSION_STR=\"$(ISCSI_VERSION_STR)\"
-LDFLAGS = -L../libopeniscsiusr -lopeniscsiusr -lkmod -lcrypto
+CFLAGS += -L../redhat-linux-build
+LDLIBS += -lopeniscsiusr -lkmod -lcrypto
LIB = libiscsi.so.0
TESTS = tests/test_discovery_sendtargets tests/test_discovery_firmware
@@ -39,7 +40,7 @@ USR_OBJS = $(patsubst %.o, usr-objs/%.o, $(ISCSI_LIB_SRCS) local_strings.o)
FW_OBJS = $(patsubst %.o, fw-objs/%.o, $(FW_PARAM_SRCS))
# Flags for the tests
-tests/% : CFLAGS = $(OPTFLAGS) $(WARNFLAGS) -I.
+tests/% : CFLAGS += -I.
all: lib tests html
@@ -48,18 +49,20 @@ tests: $(TESTS)
common-objs/%.o: ../sysdeps/%.c
mkdir -p common-objs
- $(CC) $(CFLAGS) -c $< -o $@
+ $(CC) $(CFLAGS) -c $< -o $@ $(LDFLAGS) $(LDLIBS)
usr-objs/%.o: ../usr/%.c
mkdir -p usr-objs
- $(CC) $(CFLAGS) -c $< -o $@
+ $(CC) $(CFLAGS) -c $< -o $@ $(LDFLAGS) $(LDLIBS)
fw-objs/%.o: ../usr/fwparam_ibft/%.c
mkdir -p fw-objs
- $(CC) $(CFLAGS) -c $< -o $@
+ $(CC) $(CFLAGS) -c $< -o $@ $(LDFLAGS) $(LDLIBS)
+
+$(LIB): CFLAGS += -fPIC
$(LIB): $(COMMON_OBJS) $(FW_OBJS) $(USR_OBJS) libiscsi.o
- $(CC) $(CFLAGS) -shared -Wl,-soname,$(LIB) $^ -o $@ -L$(TOPDIR)/libopeniscsiusr -lopeniscsiusr
+ $(CC) $(CFLAGS) -shared -Wl,-soname,$(LIB) $^ -o $@ $(LDFLAGS) $(LDLIBS)
ln -s -f $(LIB) libiscsi.so
$(TESTS): $(FW_OBJS) $(COMMON_OBJS) $(USR_OBJS) $(LIB)
--
2.40.1

View File

@ -1,177 +0,0 @@
From 28e3ef5c630b8433eaad176a53c98af05a994f36 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 4 Jun 2019 13:23:32 -0700
Subject: [PATCH 01/23] unit file tweaks
---
etc/systemd/iscsi-mark-root-nodes | 34 ++++++++++++++++++++++++++++++
etc/systemd/iscsi-onboot.service | 15 +++++++++++++
etc/systemd/iscsi-shutdown.service | 15 +++++++++++++
etc/systemd/iscsi.service | 16 +++++++-------
etc/systemd/iscsid.service | 6 ++----
etc/systemd/iscsiuio.service | 4 +---
6 files changed, 75 insertions(+), 15 deletions(-)
create mode 100755 etc/systemd/iscsi-mark-root-nodes
create mode 100644 etc/systemd/iscsi-onboot.service
create mode 100644 etc/systemd/iscsi-shutdown.service
diff --git a/etc/systemd/iscsi-mark-root-nodes b/etc/systemd/iscsi-mark-root-nodes
new file mode 100755
index 0000000..9d48805
--- /dev/null
+++ b/etc/systemd/iscsi-mark-root-nodes
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+ISCSIADM=/usr/sbin/iscsiadm
+start_iscsid=0
+start_iscsiuio=0
+
+while read t num p target flash; do
+ # strip tag number from portal, keep "ip:port"
+ portal=${p%,*}
+ transport=${t%:}
+
+ # use session number to find the iface name in use
+ num=${num#[}; num=${num%]}
+ iface=$(iscsiadm -m session -r $num | grep iface.iscsi_ifacename | cut -d= -f2)
+
+ $ISCSIADM -m node -p $portal -T $target -I $iface -o update -n node.startup -v onboot
+
+ start_iscsid=1
+
+ if [ "$transport" = bnx2i ] || [ "$transport" = qedi ]; then
+ start_iscsiuio=1
+ fi
+done < <( $ISCSIADM -m session )
+
+# force iscsid and iscsiuio to start if needed for
+# recovering sessions created in the initrd
+
+if [ "$start_iscsid" -eq 1 ]; then
+ systemctl --no-block start iscsid.service
+fi
+if [ "$start_iscsiuio" -eq 1 ]; then
+ systemctl --no-block start iscsiuio.service
+fi
+
diff --git a/etc/systemd/iscsi-onboot.service b/etc/systemd/iscsi-onboot.service
new file mode 100644
index 0000000..42ced68
--- /dev/null
+++ b/etc/systemd/iscsi-onboot.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Special handling of early boot iSCSI sessions
+Documentation=man:iscsiadm(8) man:iscsid(8)
+DefaultDependencies=no
+RefuseManualStart=true
+Before=iscsi.service
+After=systemd-remount-fs.service
+ConditionDirectoryNotEmpty=/sys/class/iscsi_session
+
+[Service]
+Type=oneshot
+ExecStart=-/usr/libexec/iscsi-mark-root-nodes
+
+[Install]
+WantedBy=sysinit.target
diff --git a/etc/systemd/iscsi-shutdown.service b/etc/systemd/iscsi-shutdown.service
new file mode 100644
index 0000000..caee933
--- /dev/null
+++ b/etc/systemd/iscsi-shutdown.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Logout off all iSCSI sessions on shutdown
+Documentation=man:iscsid(8) man:iscsiadm(8)
+DefaultDependencies=no
+Conflicts=shutdown.target
+After=systemd-remount-fs.service network.target iscsid.service iscsiuio.service
+Before=remote-fs-pre.target
+Wants=remote-fs-pre.target
+RefuseManualStop=yes
+
+[Service]
+Type=oneshot
+RemainAfterExit=true
+ExecStart=-/usr/bin/true
+ExecStop=-/usr/sbin/iscsiadm -m node --logoutall=all
diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service
index 5e394b9..26e557d 100644
--- a/etc/systemd/iscsi.service
+++ b/etc/systemd/iscsi.service
@@ -1,17 +1,17 @@
[Unit]
Description=Login and scanning of iSCSI devices
Documentation=man:iscsiadm(8) man:iscsid(8)
-Before=remote-fs.target
-After=network-online.target iscsid.service
-Requires=iscsid.socket iscsi-init.service
-Wants=network-online.target
+DefaultDependencies=no
+Before=remote-fs-pre.target
+After=network.target network-online.target iscsid.service iscsiuio.service systemd-remount-fs.service
+Wants=network-online.target remote-fs-pre.target iscsi-shutdown.service
+ConditionDirectoryNotEmpty=/var/lib/iscsi/nodes
[Service]
Type=oneshot
-ExecStart=/sbin/iscsiadm -m node --loginall=automatic -W
-ExecStop=/sbin/iscsiadm -m node --logoutall=automatic
-ExecStop=/sbin/iscsiadm -m node --logoutall=manual
-SuccessExitStatus=21 15
+ExecStart=-/usr/sbin/iscsiadm -m node --loginall=automatic
+ExecReload=-/usr/sbin/iscsiadm -m node --loginall=automatic
+SuccessExitStatus=21
RemainAfterExit=true
[Install]
diff --git a/etc/systemd/iscsid.service b/etc/systemd/iscsid.service
index 3fd7dd3..3958dae 100644
--- a/etc/systemd/iscsid.service
+++ b/etc/systemd/iscsid.service
@@ -2,15 +2,13 @@
Description=Open-iSCSI
Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8)
DefaultDependencies=no
-After=network-online.target iscsiuio.service iscsi-init.service
+After=network.target network-online.target iscsiuio.service
Before=remote-fs-pre.target
-Wants=remote-fs-pre.target
-Requires=iscsi-init.service
[Service]
Type=notify
NotifyAccess=main
-ExecStart=/sbin/iscsid -f
+ExecStart=/usr/sbin/iscsid -f
KillMode=mixed
Restart=on-failure
diff --git a/etc/systemd/iscsiuio.service b/etc/systemd/iscsiuio.service
index 923e019..fc0be93 100644
--- a/etc/systemd/iscsiuio.service
+++ b/etc/systemd/iscsiuio.service
@@ -2,17 +2,15 @@
Description=iSCSI UserSpace I/O driver
Documentation=man:iscsiuio(8)
DefaultDependencies=no
-Conflicts=shutdown.target
Requires=iscsid.service
BindTo=iscsid.service
After=network.target
Before=remote-fs-pre.target iscsid.service
-Wants=remote-fs-pre.target
[Service]
Type=notify
NotifyAccess=main
-ExecStart=/sbin/iscsiuio -f
+ExecStart=/usr/sbin/iscsiuio -f
KillMode=mixed
Restart=on-failure
--
2.31.1

View File

@ -1,54 +0,0 @@
From 45878c9461298c9da68a626d990dc4ef99e01baa Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Tue, 13 Aug 2013 10:59:44 -0700
Subject: [PATCH] idmb_rec_write, check for tpgt first
Factor out the check for a tpgt to a single place, before going crazy on
the rec files. Makes flow of this function easier to follow, and preps
for splitting it up.
---
usr/idbm.c | 18 +++++-------------
1 file changed, 5 insertions(+), 13 deletions(-)
diff --git a/usr/idbm.c b/usr/idbm.c
index 42c2699..e6ede85 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -2178,6 +2178,10 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
goto free_portal;
}
+ if (rec->tpgt == PORTAL_GROUP_TAG_UNKNOWN)
+ /* drop down to old style portal as config */
+ goto open_conf;
+
rc = stat(portal, &statb);
if (rc) {
rc = 0;
@@ -2186,22 +2190,10 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
* set the tgpt. In new versions you must pass all the info in
* from the start
*/
- if (rec->tpgt == PORTAL_GROUP_TAG_UNKNOWN)
- /* drop down to old style portal as config */
- goto open_conf;
- else
- goto mkdir_portal;
+ goto mkdir_portal;
}
if (!S_ISDIR(statb.st_mode)) {
- /*
- * older iscsiadm versions had you create the config then set
- * set the tgpt. In new versions you must pass all the info in
- * from the start
- */
- if (rec->tpgt == PORTAL_GROUP_TAG_UNKNOWN)
- /* drop down to old style portal as config */
- goto open_conf;
/*
* Old style portal as a file, but with tpgt. Let's update it.
*/
--
2.26.2

View File

@ -1,193 +0,0 @@
From 9823d8ead9e2d91765e4af39d906e25acd4e2a04 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Tue, 13 Aug 2013 11:34:31 -0700
Subject: [PATCH 3/3] idbm_rec_write, seperate old and new style writes
Duplicates a small bit of code, but easier to understand and extened.
---
usr/idbm.c | 129 +++++++++++++++++++++++++++++++++++------------------
1 file changed, 86 insertions(+), 43 deletions(-)
diff --git a/usr/idbm.c b/usr/idbm.c
index efdda75..307a01a 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -2152,12 +2152,7 @@ mkdir_portal:
return f;
}
-/*
- * When the disable_lock param is true, the idbm_lock/idbm_unlock needs
- * to be holt by the caller, this will avoid overwriting each other in
- * case of updating(read-modify-write) the recs in parallel.
- */
-static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
+static int idbm_rec_write_new(node_rec_t *rec)
{
struct stat statb;
FILE *f;
@@ -2170,39 +2165,8 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
return ISCSI_ERR_NOMEM;
}
- snprintf(portal, PATH_MAX, "%s", NODE_CONFIG_DIR);
- if (access(portal, F_OK) != 0) {
- if (mkdir(portal, 0770) != 0) {
- log_error("Could not make %s: %s", portal,
- strerror(errno));
- rc = ISCSI_ERR_IDBM;
- goto free_portal;
- }
- }
-
- snprintf(portal, PATH_MAX, "%s/%s", NODE_CONFIG_DIR, rec->name);
- if (access(portal, F_OK) != 0) {
- if (mkdir(portal, 0770) != 0) {
- log_error("Could not make %s: %s", portal,
- strerror(errno));
- rc = ISCSI_ERR_IDBM;
- goto free_portal;
- }
- }
-
snprintf(portal, PATH_MAX, "%s/%s/%s,%d", NODE_CONFIG_DIR,
rec->name, rec->conn[0].address, rec->conn[0].port);
- log_debug(5, "Looking for config file %s", portal);
-
- if (!disable_lock) {
- rc = idbm_lock();
- if (rc)
- goto free_portal;
- }
-
- if (rec->tpgt == PORTAL_GROUP_TAG_UNKNOWN)
- /* drop down to old style portal as config */
- goto open_conf;
rc = stat(portal, &statb);
if (rc) {
@@ -2223,11 +2187,11 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
log_error("Could not convert %s: %s", portal,
strerror(errno));
rc = ISCSI_ERR_IDBM;
- goto unlock;
+ goto free_portal;
}
} else {
rc = ISCSI_ERR_INVAL;
- goto unlock;
+ goto free_portal;
}
mkdir_portal:
@@ -2238,24 +2202,103 @@ mkdir_portal:
log_error("Could not make dir %s: %s",
portal, strerror(errno));
rc = ISCSI_ERR_IDBM;
- goto unlock;
+ goto free_portal;
}
}
snprintf(portal, PATH_MAX, "%s/%s/%s,%d,%d/%s", NODE_CONFIG_DIR,
rec->name, rec->conn[0].address, rec->conn[0].port, rec->tpgt,
rec->iface.name);
-open_conf:
+
f = fopen(portal, "w");
if (!f) {
log_error("Could not open %s: %s", portal, strerror(errno));
rc = ISCSI_ERR_IDBM;
- goto unlock;
+ goto free_portal;
}
idbm_print(IDBM_PRINT_TYPE_NODE, rec, 1, f);
fclose(f);
-unlock:
+free_portal:
+ free(portal);
+ return rc;
+}
+
+static int idbm_rec_write_old(node_rec_t *rec)
+{
+ FILE *f;
+ char *portal;
+ int rc = 0;
+
+ portal = malloc(PATH_MAX);
+ if (!portal) {
+ log_error("Could not alloc portal");
+ return ISCSI_ERR_NOMEM;
+ }
+ snprintf(portal, PATH_MAX, "%s/%s/%s,%d", NODE_CONFIG_DIR,
+ rec->name, rec->conn[0].address, rec->conn[0].port);
+
+ f = fopen(portal, "w");
+ if (!f) {
+ log_error("Could not open %s: %sd", portal, strerror(errno));
+ rc = ISCSI_ERR_IDBM;
+ goto free_portal;
+ }
+ idbm_print(IDBM_PRINT_TYPE_NODE, rec, 1, f);
+ fclose(f);
+free_portal:
+ free(portal);
+ return rc;
+}
+
+/*
+ * When the disable_lock param is true, the idbm_lock/idbm_unlock needs
+ * to be holt by the caller, this will avoid overwriting each other in
+ * case of updating(read-modify-write) the recs in parallel.
+ */
+static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
+{
+ char *portal;
+ int rc = 0;
+
+ portal = malloc(PATH_MAX);
+ if (!portal) {
+ log_error("Could not alloc portal");
+ return ISCSI_ERR_NOMEM;
+ }
+
+ snprintf(portal, PATH_MAX, "%s", NODE_CONFIG_DIR);
+ if (access(portal, F_OK) != 0) {
+ if (mkdir(portal, 0770) != 0) {
+ log_error("Could not make %s: %s", portal,
+ strerror(errno));
+ rc = ISCSI_ERR_IDBM;
+ goto free_portal;
+ }
+ }
+
+ snprintf(portal, PATH_MAX, "%s/%s", NODE_CONFIG_DIR, rec->name);
+ if (access(portal, F_OK) != 0) {
+ if (mkdir(portal, 0770) != 0) {
+ log_error("Could not make %s: %s", portal,
+ strerror(errno));
+ rc = ISCSI_ERR_IDBM;
+ goto free_portal;
+ }
+ }
+
+ if (!disable_lock) {
+ rc = idbm_lock();
+ if (rc)
+ goto free_portal;
+ }
+
+ if (rec->tpgt == PORTAL_GROUP_TAG_UNKNOWN)
+ /* old style portal as config */
+ rc = idbm_rec_write_old(rec);
+ else
+ rc = idbm_rec_write_new(rec);
+
if (!disable_lock)
idbm_unlock();
free_portal:
--
2.31.1

View File

@ -1,87 +0,0 @@
From 2b1c0c5f1f2dbc516a9b51950a82eac091dbce2c Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Tue, 13 Aug 2013 12:39:07 -0700
Subject: [PATCH] idbw_rec_write, pick tpgt from existing record
On a static add (-m node -o new) without a user specified tpgt, looks
for existing new style records with tpgt before creating an old style
record without. If one exists, take the tpgt from it an write an
updated new style record instead.
---
usr/idbm.c | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/usr/idbm.c b/usr/idbm.c
index bc51388..f1e5c88 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -28,6 +28,7 @@
#include <dirent.h>
#include <limits.h>
#include <fcntl.h>
+#include <glob.h>
#include <sys/stat.h>
#include <sys/file.h>
#include <inttypes.h>
@@ -203,6 +204,8 @@ static struct int_list_tbl {
{ "SHA3-256", AUTH_CHAP_ALG_SHA3_256 },
};
+static int idbm_remove_disc_to_node_link(node_rec_t *rec, char *portal);
+
static void
idbm_recinfo_discovery(discovery_rec_t *r, recinfo_t *ri)
{
@@ -2207,12 +2210,49 @@ static int idbm_rec_write_old(node_rec_t *rec)
FILE *f;
char *portal;
int rc = 0;
+ glob_t globbuf;
+ size_t i;
+ int tpgt = PORTAL_GROUP_TAG_UNKNOWN;
portal = malloc(PATH_MAX);
if (!portal) {
log_error("Could not alloc portal");
return ISCSI_ERR_NOMEM;
}
+
+ /* check for newer portal dir with tpgt */
+ snprintf(portal, PATH_MAX, "%s/%s/%s,%d,*", NODE_CONFIG_DIR,
+ rec->name, rec->conn[0].address, rec->conn[0].port);
+ rc = glob(portal, GLOB_ONLYDIR, NULL, &globbuf);
+ if (!rc) {
+ if (globbuf.gl_pathc > 1)
+ log_warning("multiple tpg records for portal "
+ "%s/%s:%d found", rec->name,
+ rec->conn[0].address, rec->conn[0].port);
+ /* set pattern for sscanf matching of tpgt */
+ snprintf(portal, PATH_MAX, "%s/%s/%s,%d,%%u", NODE_CONFIG_DIR,
+ rec->name, rec->conn[0].address, rec->conn[0].port);
+ for (i = 0; i < globbuf.gl_pathc; i++) {
+ rc = sscanf(globbuf.gl_pathv[i], portal, &tpgt);
+ if (rc == 1)
+ break;
+ }
+ if (tpgt == PORTAL_GROUP_TAG_UNKNOWN)
+ log_warning("glob match on existing records, "
+ "but no valid tpgt found");
+ }
+ globfree(&globbuf);
+ rc = 0;
+
+ /* if a tpgt was selected from an old record, write entry in new format */
+ if (tpgt != PORTAL_GROUP_TAG_UNKNOWN) {
+ log_warning("using tpgt %u from existing record", tpgt);
+ rec->tpgt = tpgt;
+ rc = idbm_remove_disc_to_node_link(rec, portal);
+ free(portal);
+ return idbm_rec_write_new(rec);
+ }
+
snprintf(portal, PATH_MAX, "%s/%s/%s,%d", NODE_CONFIG_DIR,
rec->name, rec->conn[0].address, rec->conn[0].port);
--
2.26.2

View File

@ -1,134 +0,0 @@
From 97b1242450df25648d203acf7cc297cd46d10e8c Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Mon, 19 Nov 2012 16:37:13 -0800
Subject: [PATCH] update initscripts and docs
---
README | 12 +++++-------
etc/iscsid.conf | 23 +++++++++++------------
usr/idbm.c | 4 ++++
3 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/README b/README
index 508c9d7..b62a14e 100644
--- a/README
+++ b/README
@@ -77,11 +77,6 @@ the cache sync command will fail.
- iscsiadm's -P 3 option will not print out scsi devices.
- iscsid will not automatically online devices.
-You need to enable "Cryptographic API" under "Cryptographic options" in the
-kernel config. And you must enable "CRC32c CRC algorithm" even if
-you do not use header or data digests. They are the kernel options
-CONFIG_CRYPTO and CONFIG_CRYPTO_CRC32C, respectively.
-
The userspace components iscsid, iscsiadm and iscsistart require the
open-isns library, which can be found here:
https://github.com/gonzoleeman/open-isns/releases
@@ -1163,11 +1158,11 @@ Red Hat or Fedora:
-----------------
To start open-iscsi in Red Hat/Fedora you can do:
- systemctl start open-iscsi
+ systemctl start iscsi
To get open-iscsi to automatically start at run time you may have to
run:
- systemctl enable open-iscsi
+ systemctl enable iscsi
And, to automatically mount a file system during startup
you must have the partition entry in /etc/fstab marked with the "_netdev"
@@ -1370,6 +1365,9 @@ iscsid will only perform rediscovery when it gets a SCN from the server.
# linux-isns (SLES's iSNS server) where it sometimes does not send SCN
# events in the proper format, so they may not get handled.
+To set the startup value, so that nodes are not logged into automatically
+use the value "manual".
+
Examples
--------
diff --git a/etc/iscsid.conf b/etc/iscsid.conf
index f21ed3d..420145b 100644
--- a/etc/iscsid.conf
+++ b/etc/iscsid.conf
@@ -19,8 +19,8 @@
# the time then leave this attribute commented out.
#
# Default for Fedora and RHEL. (uncomment to activate).
-# iscsid.startup = /bin/systemctl start iscsid.socket iscsiuio.socket
-#
+iscsid.startup = /bin/systemctl start iscsid.socket iscsiuio.socket
+#
# Default if you are not using systemd (uncomment to activate)
# iscsid.startup = /usr/bin/service start iscsid
@@ -41,8 +41,8 @@
# To request that the iscsi initd scripts startup a session set to "automatic".
# node.startup = automatic
#
-# To manually startup the session set to "manual". The default is manual.
-node.startup = manual
+# To manually startup the session set to "manual". The default is automatic.
+node.startup = automatic
# For "automatic" startup nodes, setting this to "Yes" will try logins on each
# available iface until one succeeds, and then stop. The default "No" will try
@@ -271,28 +271,27 @@ node.conn[0].iscsi.MaxXmitDataSegmentLength = 0
discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768
# To allow the targets to control the setting of the digest checking,
-# with the initiator requesting a preference of enabling the checking, uncomment# one or both of the following lines:
+# with the initiator requesting a preference of enabling the checking, uncomment
+# the following lines (Data digests are not supported.):
#node.conn[0].iscsi.HeaderDigest = CRC32C,None
-#node.conn[0].iscsi.DataDigest = CRC32C,None
+
#
# To allow the targets to control the setting of the digest checking,
# with the initiator requesting a preference of disabling the checking,
-# uncomment one or both of the following lines:
+# uncomment the following line:
#node.conn[0].iscsi.HeaderDigest = None,CRC32C
-#node.conn[0].iscsi.DataDigest = None,CRC32C
#
# To enable CRC32C digest checking for the header and/or data part of
-# iSCSI PDUs, uncomment one or both of the following lines:
+# iSCSI PDUs, uncomment the following line:
#node.conn[0].iscsi.HeaderDigest = CRC32C
-#node.conn[0].iscsi.DataDigest = CRC32C
#
# To disable digest checking for the header and/or data part of
-# iSCSI PDUs, uncomment one or both of the following lines:
+# iSCSI PDUs, uncomment the following line:
#node.conn[0].iscsi.HeaderDigest = None
-#node.conn[0].iscsi.DataDigest = None
#
# The default is to never use DataDigests or HeaderDigests.
#
+node.conn[0].iscsi.HeaderDigest = None
# For multipath configurations, you may want more than one session to be
# created on each iface record. If node.session.nr_sessions is greater
diff --git a/usr/idbm.c b/usr/idbm.c
index f1e5c88..0f0f17a 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -566,9 +566,13 @@ idbm_recinfo_node(node_rec_t *r, recinfo_t *ri)
IDBM_SHOW, "None", "CRC32C", "CRC32C,None",
"None,CRC32C", num, 1);
sprintf(key, CONN_DATA_DIGEST, i);
+
+#if 0
+We do not support data digests
__recinfo_int_o4(key, ri, r, conn[i].iscsi.DataDigest, IDBM_SHOW,
"None", "CRC32C", "CRC32C,None",
"None,CRC32C", num, 1);
+#endif
sprintf(key, CONN_IFMARKER, i);
__recinfo_int_o2(key, ri, r, conn[i].iscsi.IFMarker, IDBM_SHOW,
"No", "Yes", num, 1);
--
2.26.2

View File

@ -1,255 +0,0 @@
From e6ab14371300e45c4f03efa64917f7601675f01d Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Mon, 19 Nov 2012 16:38:45 -0800
Subject: [PATCH 1/1] use var for config
---
README | 33 ++++++++++++++++-----------------
doc/iscsiadm.8 | 8 ++++----
doc/iscsid.8 | 2 +-
usr/idbm.c | 6 +++---
usr/idbm.h | 13 +++++++------
usr/iface.h | 3 ++-
6 files changed, 33 insertions(+), 32 deletions(-)
diff --git a/README b/README
index b62a14e..1875e3d 100644
--- a/README
+++ b/README
@@ -172,8 +172,7 @@ Usage: iscsid [OPTION]
Open-iSCSI persistent configuration is stored in a number of
directories under a configuration root directory, using a flat-file
-format. This configuration root directory is /etc/iscsi by default,
-but may also commonly be in /var/lib/iscsi.
+format. This configuration root directory is /var/lib/iscsi by default.
Configuration is contained in directories for:
@@ -573,7 +572,7 @@ a scsi_host per HBA port).
To manage both types of initiator stacks, iscsiadm uses the interface (iface)
structure. For each HBA port or for software iscsi for each network
device (ethX) or NIC, that you wish to bind sessions to you must create
-a iface config /etc/iscsi/ifaces.
+a iface config /var/lib/iscsi/ifaces.
Prep
----
@@ -606,7 +605,7 @@ Running
The command
iscsiadm -m iface
-will report iface configurations that are setup in /etc/iscsi/ifaces:
+will report iface configurations that are setup in /var/lib/iscsi/ifaces:
iface0 qla4xxx,00:c0:dd:08:63:e8,20.15.0.7,default,iqn.2005-06.com.redhat:madmax
iface1 qla4xxx,00:c0:dd:08:63:ea,20.15.0.9,default,iqn.2005-06.com.redhat:madmax
@@ -616,10 +615,10 @@ The format is:
For software iscsi, you can create the iface configs by hand, but it is
recommended that you use iscsiadm's iface mode. There is an iface.example in
-/etc/iscsi/ifaces which can be used as a template for the daring.
+/var/lib/iscsi/ifaces which can be used as a template for the daring.
For each network object you wish to bind a session to, you must create
-a separate iface config in /etc/iscsi/ifaces and each iface config file
+a separate iface config in /var/lib/iscsi/ifaces and each iface config file
must have a unique name which is less than or equal to 64 characters.
Example
@@ -627,12 +626,12 @@ Example
If you have NIC1 with MAC address 00:0F:1F:92:6B:BF and NIC2 with
MAC address 00:C0:DD:08:63:E7, and you wanted to do software iscsi over
-TCP/IP, then in /etc/iscsi/ifaces/iface0 you would enter:
+TCP/IP, then in /var/lib/iscsi/ifaces/iface0 you would enter:
iface.transport_name = tcp
iface.hwaddress = 00:0F:1F:92:6B:BF
-and in /etc/iscsi/ifaces/iface1 you would enter:
+and in /var/lib/iscsi/ifaces/iface1 you would enter:
iface.transport_name = tcp
iface.hwaddress = 00:C0:DD:08:63:E7
@@ -674,7 +673,7 @@ port. The iface name will be of the form:
Running the following command:
iscsiadm -m iface
-will report iface configurations that are setup in /etc/iscsi/ifaces:
+will report iface configurations that are setup in /var/lib/iscsi/ifaces:
default tcp,<empty>,<empty>,<empty>,<empty>
iser iser,<empty>,<empty>,<empty>,<empty>
@@ -754,7 +753,7 @@ need a separate network connection to the target for discovery purposes.
*This will be fixed in the next version of open-iscsi*
For compatibility reasons, when you run iscsiadm to do discovery, it
-will check for interfaces in /etc/iscsi/iscsi/ifaces that are using
+will check for interfaces in /var/lib/iscsi/iscsi/ifaces that are using
tcp for the iface.transport, and it will bind the portals that are discovered
so that they will be logged in through those ifaces. This behavior can also
be overridden by passing in the interfaces you want to use. For the case
@@ -769,7 +768,7 @@ If you had defined interfaces but wanted the old behavior, where we do not
bind a session to an iface, then you can use the special iface "default":
iscsiadm -m discoverydb -t st -p ip:port -I default --discover -P 1
-And if you did not define any interfaces in /etc/iscsi/ifaces and do
+And if you did not define any interfaces in /var/lib/iscsi/ifaces and do
not pass anything into iscsiadm, running iscsiadm will do the default
behavior, allowing the network subsystem to decide which device to use.
@@ -805,7 +804,7 @@ Discovery mode
ID [192.168.1.1:3260]:
iscsiadm -m discoverydb -t st -p 192.168.1.1:3260 --discover
- This will search /etc/iscsi/send_targets for a record with the
+ This will search /var/lib/iscsi/send_targets for a record with the
ID [portal = 192.168.1.1:3260 and type = sendtargets. If found it
will perform discovery using the settings stored in the record.
If a record does not exist, it will be created using the iscsid.conf
@@ -814,7 +813,7 @@ Discovery mode
The argument to -p may also be a hostname instead of an address:
iscsiadm -m discoverydb -t st -p somehost --discover
- For the ifaces, iscsiadm will first search /etc/iscsi/ifaces for
+ For the ifaces, iscsiadm will first search /var/lib/iscsi/ifaces for
interfaces using software iscsi. If any are found then nodes found
during discovery will be setup so that they can logged in through
those interfaces. To specify a specific iface, pass the
@@ -865,7 +864,7 @@ Discovery mode
- SendTargets iSCSI Discovery with a specific interface.
If you wish to only use a subset of the interfaces in
- /etc/iscsi/ifaces, then you can pass them in during discovery:
+ /var/lib/iscsi/ifaces, then you can pass them in during discovery:
iscsiadm -m discoverydb -t sendtargets -p 192.168.1.1:3260 \
--interface=iface0 --interface=iface1 --discover
@@ -1232,8 +1231,8 @@ where targetname is the name of the target and ip_address:port is the address
and port of the portal. tpgt is the Target Portal Group Tag of
the portal, and is not used in iscsiadm commands except for static
record creation. ifacename is the name of the iscsi interface
-defined in /etc/iscsi/ifaces. If no interface was defined in
-/etc/iscsi/ifaces or passed in, the default behavior is used.
+defined in /var/lib/iscsi/ifaces. If no interface was defined in
+/var/lib/iscsi/ifaces or passed in, the default behavior is used.
Default here is iscsi_tcp/tcp to be used over whichever NIC the
network layer decides is best.
@@ -1353,7 +1352,7 @@ If set, iscsid will perform discovery to the address every
discovery.isns.discoveryd_poll_inval or
discovery.sendtargets.discoveryd_poll_inval seconds,
and it will log into any portals found from the discovery source using
-the ifaces in /etc/iscsi/ifaces.
+the ifaces in /var/lib/iscsi/ifaces.
Note that for iSNS the poll_interval does not have to be set. If not set,
iscsid will only perform rediscovery when it gets a SCN from the server.
diff --git a/doc/iscsiadm.8 b/doc/iscsiadm.8
index 3729a72..9f84a81 100644
--- a/doc/iscsiadm.8
+++ b/doc/iscsiadm.8
@@ -228,7 +228,7 @@ This option is only valid for ping submode.
.TP
\fB\-I\fR, \fB\-\-interface=\fI[iface]\fR
The interface argument specifies the iSCSI interface to use for the operation.
-iSCSI interfaces (iface) are defined in /etc/iscsi/ifaces. For hardware
+iSCSI interfaces (iface) are defined in /var/lib/iscsi/ifaces. For hardware
iSCSI (qla4xxx) the iface config must have the hardware address
(iface.hwaddress = port's MAC address)
and the driver/transport_name (iface.transport_name). The iface's name is
@@ -318,7 +318,7 @@ If no other options are specified: for \fIdiscovery\fR, \fIdiscoverydb\fR and
\fInode\fR, all of their respective records are displayed; for \fIsession\fR,
all active sessions and connections are displayed; for \fIfw\fR, all boot
firmware values are displayed; for \fIhost\fR, all iSCSI hosts are displayed;
-and for \fIiface\fR, all ifaces setup in /etc/iscsi/ifaces are displayed.
+and for \fIiface\fR, all ifaces setup in /var/lib/iscsi/ifaces are displayed.
.TP
\fB\-n\fR, \fB\-\-name=\fIname\fR
In node mode, specify a field \fIname\fR in a record. In flashnode submode
@@ -681,10 +681,10 @@ The configuration file read by \fBiscsid\fR and \fBiscsiadm\fR on startup.
The file containing the iSCSI InitiatorName and InitiatorAlias read by
\fBiscsid\fR and \fBiscsiadm\fR on startup.
.TP
-/etc/iscsi/nodes/
+/var/lib/iscsi/nodes/
This directory contains the nodes with their targets.
.TP
-/etc/iscsi/send_targets
+/var/lib/iscsi/send_targets
This directory contains the portals.
.SH "SEE ALSO"
.BR iscsid (8)
diff --git a/doc/iscsid.8 b/doc/iscsid.8
index db996b4..eaa9c3b 100644
--- a/doc/iscsid.8
+++ b/doc/iscsid.8
@@ -70,7 +70,7 @@ and
.B iscsiadm
on startup.
.TP
-/etc/iscsi/nodes
+/var/lib/iscsi/nodes
Open-iSCSI persistent configuration database
.SH "SEE ALSO"
diff --git a/usr/idbm.c b/usr/idbm.c
index 7c63c04..779d052 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -3104,9 +3104,9 @@ free_info:
int idbm_init(idbm_get_config_file_fn *fn)
{
/* make sure root db dir is there */
- if (access(ISCSI_CONFIG_ROOT, F_OK) != 0) {
- if (mkdir(ISCSI_CONFIG_ROOT, 0770) != 0) {
- log_error("Could not make %s %d", ISCSI_CONFIG_ROOT,
+ if (access(ISCSIVAR, F_OK) != 0) {
+ if (mkdir(ISCSIVAR, 0770) != 0) {
+ log_error("Could not make %s %d", ISCSIVAR,
errno);
return errno;
}
diff --git a/usr/idbm.h b/usr/idbm.h
index 7496f1d..db3048b 100644
--- a/usr/idbm.h
+++ b/usr/idbm.h
@@ -30,12 +30,13 @@
#include "list.h"
#include "flashnode.h"
-#define NODE_CONFIG_DIR ISCSI_CONFIG_ROOT"nodes"
-#define SLP_CONFIG_DIR ISCSI_CONFIG_ROOT"slp"
-#define ISNS_CONFIG_DIR ISCSI_CONFIG_ROOT"isns"
-#define STATIC_CONFIG_DIR ISCSI_CONFIG_ROOT"static"
-#define FW_CONFIG_DIR ISCSI_CONFIG_ROOT"fw"
-#define ST_CONFIG_DIR ISCSI_CONFIG_ROOT"send_targets"
+#define ISCSIVAR "/var/lib/iscsi/"
+#define NODE_CONFIG_DIR ISCSIVAR"nodes"
+#define SLP_CONFIG_DIR ISCSIVAR"slp"
+#define ISNS_CONFIG_DIR ISCSIVAR"isns"
+#define STATIC_CONFIG_DIR ISCSIVAR"static"
+#define FW_CONFIG_DIR ISCSIVAR"fw"
+#define ST_CONFIG_DIR ISCSIVAR"send_targets"
#define ST_CONFIG_NAME "st_config"
#define ISNS_CONFIG_NAME "isns_config"
diff --git a/usr/iface.h b/usr/iface.h
index 6c06f7f..c8b9de9 100644
--- a/usr/iface.h
+++ b/usr/iface.h
@@ -21,8 +21,9 @@
#define ISCSI_IFACE_H
#include <libopeniscsiusr/libopeniscsiusr.h>
+#include "idbm.h"
-#define IFACE_CONFIG_DIR ISCSI_CONFIG_ROOT"ifaces"
+#define IFACE_CONFIG_DIR ISCSIVAR"ifaces"
struct iface_rec;
struct list_head;
--
2.31.1

View File

@ -1,39 +0,0 @@
From 8312003a6a9e41d8d20eb8225ec8c4b2860351ec Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Mon, 19 Nov 2012 16:40:04 -0800
Subject: [PATCH] use red hat for name
---
doc/iscsi-iname.8 | 2 +-
utils/iscsi-iname.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/doc/iscsi-iname.8 b/doc/iscsi-iname.8
index 6a413f6..dd77ed9 100644
--- a/doc/iscsi-iname.8
+++ b/doc/iscsi-iname.8
@@ -14,7 +14,7 @@ generates a unique iSCSI node name on every invocation.
Display help
.TP
.BI [-p=]\fIprefix\fP
-Use the prefix passed in instead of the default "iqn.2016-04.com.open-iscsi"
+Use the prefix passed in instead of the default "iqn.1994-05.com.redhat"
.SH AUTHORS
Open-iSCSI project <http://www.open-iscsi.com/>
diff --git a/utils/iscsi-iname.c b/utils/iscsi-iname.c
index 0f587e1..0e15650 100644
--- a/utils/iscsi-iname.c
+++ b/utils/iscsi-iname.c
@@ -89,7 +89,7 @@ main(int argc, char *argv[])
exit(0);
}
} else {
- prefix = "iqn.2016-04.com.open-iscsi";
+ prefix = "iqn.1994-05.com.redhat";
}
/* try to feed some entropy from the pool to MD5 in order to get
--
2.26.2

View File

@ -1,56 +0,0 @@
From 676f48d6e70f8406b36a004669d923825db51e2f Mon Sep 17 00:00:00 2001
From: Jiri Konecny <jkonecny@redhat.com>
Date: Mon, 11 May 2015 13:16:26 +0200
Subject: [PATCH] Add macros to release GIL lock
Other threads are blocked when GIL is not released before the time consuming
functions.
---
libiscsi/pylibiscsi.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/libiscsi/pylibiscsi.c b/libiscsi/pylibiscsi.c
index 8800853..40b5955 100644
--- a/libiscsi/pylibiscsi.c
+++ b/libiscsi/pylibiscsi.c
@@ -364,8 +364,13 @@ static PyObject *PyIscsiNode_str(PyObject *self)
static PyObject *PyIscsiNode_login(PyObject *self)
{
PyIscsiNode *node = (PyIscsiNode *)self;
+ int ret;
- if (libiscsi_node_login(context, &node->node)) {
+ Py_BEGIN_ALLOW_THREADS
+ ret = libiscsi_node_login(context, &node->node);
+ Py_END_ALLOW_THREADS
+
+ if (ret) {
PyErr_SetString(PyExc_IOError,
libiscsi_get_error_string(context));
return NULL;
@@ -551,6 +556,7 @@ static PyObject *pylibiscsi_discover_sendtargets(PyObject *self,
const struct libiscsi_auth_info *authinfo = NULL;
struct libiscsi_node *found_nodes;
PyObject* found_node_list;
+ int ret;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|iO",
kwlist, &address, &port,
@@ -570,8 +576,12 @@ static PyObject *pylibiscsi_discover_sendtargets(PyObject *self,
}
}
- if (libiscsi_discover_sendtargets(context, address, port, authinfo,
- &nr_found, &found_nodes)) {
+ Py_BEGIN_ALLOW_THREADS
+ ret = libiscsi_discover_sendtargets(context, address, port, authinfo,
+ &nr_found, &found_nodes);
+ Py_END_ALLOW_THREADS
+
+ if (ret) {
PyErr_SetString(PyExc_IOError,
libiscsi_get_error_string(context));
return NULL;
--
2.26.2

View File

@ -1,32 +0,0 @@
From c53c576c09c5a3a1654b7a1f08fcc222a102499d Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 28 Feb 2017 09:00:41 -0800
Subject: [PATCH] libiscsi: fix discovery request timeout regression
---
libiscsi/libiscsi.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/libiscsi/libiscsi.c b/libiscsi/libiscsi.c
index 755c18c..bb17dfc 100644
--- a/libiscsi/libiscsi.c
+++ b/libiscsi/libiscsi.c
@@ -136,6 +136,7 @@ int libiscsi_discover_sendtargets(struct libiscsi_context *context,
/* Fill the drec struct with all needed info */
memset(&drec, 0, sizeof drec);
+ drec.iscsid_req_tmo = -1;
idbm_sendtargets_defaults(&drec.u.sendtargets);
drec.type = DISCOVERY_TYPE_SENDTARGETS;
strlcpy(drec.address, address, sizeof(drec.address));
@@ -228,6 +229,7 @@ int libiscsi_discover_firmware(struct libiscsi_context *context,
CHECK(iface_create_ifaces_from_boot_contexts(&ifaces, &targets));
memset(&drec, 0, sizeof(drec));
+ drec.iscsid_req_tmo = -1;
drec.type = DISCOVERY_TYPE_FW;
rc = idbm_bind_ifaces_to_nodes(discovery_fw, &drec, &ifaces, &rec_list);
if (rc) {
--
2.26.2

View File

@ -1,35 +0,0 @@
From cf4db608004f7c1f137ed556e3ba6b6f4d65da96 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 28 Feb 2017 10:06:42 -0800
Subject: [PATCH] libiscsi format-security build errors
---
libiscsi/libiscsi.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/libiscsi/libiscsi.c b/libiscsi/libiscsi.c
index bb17dfc..7003388 100644
--- a/libiscsi/libiscsi.c
+++ b/libiscsi/libiscsi.c
@@ -177,7 +177,8 @@ int libiscsi_discover_sendtargets(struct libiscsi_context *context,
*found_nodes = calloc(found, sizeof **found_nodes);
if (*found_nodes == NULL) {
snprintf(context->error_str,
- sizeof(context->error_str), strerror(ENOMEM));
+ sizeof(context->error_str),
+ "%s", strerror(ENOMEM));
rc = ENOMEM;
goto leave;
}
@@ -634,7 +635,7 @@ static int get_parameter_helper(void *data, node_rec_t *rec)
info = idbm_recinfo_alloc(MAX_KEYS);
if (!info) {
snprintf(context->error_str, sizeof(context->error_str),
- strerror(ENOMEM));
+ "%s", strerror(ENOMEM));
return ENOMEM;
}
--
2.26.2

View File

@ -1,36 +0,0 @@
From a86a677762cf5fd45a43029a4fd3dd83d1a87a98 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Thu, 24 May 2018 15:17:05 -0700
Subject: [PATCH] libiscsi fix build to use libopeniscsiusr
---
libiscsi/Makefile | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/libiscsi/Makefile b/libiscsi/Makefile
index 53f9746..f2cf248 100644
--- a/libiscsi/Makefile
+++ b/libiscsi/Makefile
@@ -8,7 +8,9 @@ OSNAME=$(shell uname -s)
OPTFLAGS ?= -O2 -g
WARNFLAGS ?= -Wall -Wstrict-prototypes
CFLAGS = $(OPTFLAGS) $(WARNFLAGS) -I../include -I../usr \
- -D$(OSNAME) -fPIC -D_GNU_SOURCE -fvisibility=hidden
+ -D$(OSNAME) -fPIC -D_GNU_SOURCE -fvisibility=hidden \
+ -I../libopeniscsiusr
+LDFLAGS = -L../libopeniscsiusr -lopeniscsiusr
LIB = libiscsi.so.0
TESTS = tests/test_discovery_sendtargets tests/test_discovery_firmware
TESTS += tests/test_login tests/test_logout tests/test_params
@@ -23,7 +25,7 @@ FW_PARAM_SRCS = fw_entry.o prom_lex.o prom_parse.tab.o fwparam_ppc.o fwparam_sys
# sources shared with the userspace utils, note we build these separately
# to get PIC versions.
COMMON_OBJS = $(patsubst %.o, common-objs/%.o, $(COMMON_SRCS))
-USR_OBJS = $(patsubst %.o, usr-objs/%.o, $(ISCSI_LIB_SRCS) strings.o)
+USR_OBJS = $(patsubst %.o, usr-objs/%.o, $(ISCSI_LIB_SRCS) local_strings.o)
FW_OBJS = $(patsubst %.o, fw-objs/%.o, $(FW_PARAM_SRCS))
# Flags for the tests
--
2.26.2

View File

@ -1,66 +0,0 @@
From 55af753f593243bcd1ab4c7e82620bdee432915b Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Thu, 7 Nov 2019 09:16:17 -0800
Subject: [PATCH] libiscsi: fix build against latest upstream, again
---
libiscsi/Makefile | 4 ++--
libiscsi/libiscsi.c | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/libiscsi/Makefile b/libiscsi/Makefile
index f2cf248..462d666 100644
--- a/libiscsi/Makefile
+++ b/libiscsi/Makefile
@@ -10,7 +10,7 @@ WARNFLAGS ?= -Wall -Wstrict-prototypes
CFLAGS = $(OPTFLAGS) $(WARNFLAGS) -I../include -I../usr \
-D$(OSNAME) -fPIC -D_GNU_SOURCE -fvisibility=hidden \
-I../libopeniscsiusr
-LDFLAGS = -L../libopeniscsiusr -lopeniscsiusr
+LDFLAGS = -L../libopeniscsiusr -lopeniscsiusr -lkmod -lcrypto
LIB = libiscsi.so.0
TESTS = tests/test_discovery_sendtargets tests/test_discovery_firmware
TESTS += tests/test_login tests/test_logout tests/test_params
@@ -19,7 +19,7 @@ TESTS += tests/test_set_auth tests/test_get_auth
COMMON_SRCS = sysdeps.o
# sources shared between iscsid, iscsiadm and iscsistart
-ISCSI_LIB_SRCS = netlink.o transport.o cxgbi.o be2iscsi.o iscsi_timer.o initiator_common.o iscsi_err.o session_info.o iscsi_util.o io.o auth.o discovery.o login.o log.o md5.o sha1.o iface.o idbm.o sysfs.o iscsi_sysfs.o iscsi_net_util.o iscsid_req.o iser.o uip_mgmt_ipc.o
+ISCSI_LIB_SRCS = netlink.o transport.o cxgbi.o be2iscsi.o iscsi_timer.o initiator_common.o iscsi_err.o session_info.o iscsi_util.o io.o auth.o discovery.o login.o log.o iface.o idbm.o sysfs.o iscsi_sysfs.o iscsi_net_util.o iscsid_req.o iser.o uip_mgmt_ipc.o
FW_PARAM_SRCS = fw_entry.o prom_lex.o prom_parse.tab.o fwparam_ppc.o fwparam_sysfs.o
# sources shared with the userspace utils, note we build these separately
diff --git a/libiscsi/libiscsi.c b/libiscsi/libiscsi.c
index 7003388..c598aee 100644
--- a/libiscsi/libiscsi.c
+++ b/libiscsi/libiscsi.c
@@ -429,7 +429,7 @@ int libiscsi_node_login(struct libiscsi_context *context,
CHECK(idbm_for_each_iface(&nr_found, (void*)node->iface, login_helper,
(char *)node->name, node->tpgt,
- (char *)node->address, node->port))
+ (char *)node->address, node->port, false))
if (nr_found == 0) {
strcpy(context->error_str, "No such node");
rc = ENODEV;
@@ -615,7 +615,7 @@ int libiscsi_node_set_parameter(struct libiscsi_context *context,
CHECK(idbm_for_each_iface(&nr_found, &params, idbm_node_set_param,
(char *)node->name, node->tpgt,
- (char *)node->address, node->port))
+ (char *)node->address, node->port, false))
if (nr_found == 0) {
strcpy(context->error_str, "No such node");
rc = ENODEV;
@@ -677,7 +677,7 @@ int libiscsi_node_get_parameter(struct libiscsi_context *context,
as most settings should be the same independent of the iface. */
CHECK(idbm_for_each_iface(&nr_found, context, get_parameter_helper,
(char *)node->name, node->tpgt,
- (char *)node->address, node->port))
+ (char *)node->address, node->port, false))
if (nr_found == 0) {
strcpy(context->error_str, "No such node");
rc = ENODEV;
--
2.26.2

View File

@ -1,45 +0,0 @@
From d410fe4b6eb2347f2160b8aaab24a639de99c23c Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Mon, 19 Nov 2012 17:09:24 -0800
Subject: [PATCH] remove the offload boot supported ifdef
---
usr/iface.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/usr/iface.c b/usr/iface.c
index 11f3d2a..65c1615 100644
--- a/usr/iface.c
+++ b/usr/iface.c
@@ -998,6 +998,7 @@ int iface_setup_from_boot_context(struct iface_rec *iface,
{
struct iscsi_transport *t = NULL;
uint32_t hostno;
+ int rc;
if (strlen(context->initiatorname))
strlcpy(iface->iname, context->initiatorname,
@@ -1011,10 +1012,7 @@ int iface_setup_from_boot_context(struct iface_rec *iface,
return 0;
}
} else if (strlen(context->iface)) {
-/* this ifdef is only temp until distros and firmwares are updated */
-#ifdef OFFLOAD_BOOT_SUPPORTED
char transport_name[ISCSI_TRANSPORT_NAME_MAXLEN];
- int rc;
memset(transport_name, 0, ISCSI_TRANSPORT_NAME_MAXLEN);
/* make sure offload driver is loaded */
@@ -1040,9 +1038,6 @@ int iface_setup_from_boot_context(struct iface_rec *iface,
}
strlcpy(iface->netdev, context->iface, sizeof(iface->netdev));
-#else
- return 0;
-#endif
} else
return 0;
--
2.26.2

View File

@ -1,25 +0,0 @@
From e35261316aaa598c4146a5396745cb76571e94fe Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Fri, 25 May 2018 09:39:07 -0700
Subject: [PATCH] dont install scripts
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 4ab091f..7e6b734 100644
--- a/Makefile
+++ b/Makefile
@@ -116,7 +116,7 @@ install_systemd:
$(INSTALL) -d $(DESTDIR)$(systemddir)
$(INSTALL) -m 644 $(SYSTEMDFILES) $(DESTDIR)/$(systemddir)
-install_programs: $(PROGRAMS) $(SCRIPTS)
+install_programs: $(PROGRAMS) # $(SCRIPTS)
$(INSTALL) -d $(DESTDIR)$(sbindir)
$(INSTALL) -m 755 $^ $(DESTDIR)$(sbindir)
--
2.26.2

View File

@ -1,109 +0,0 @@
From e186e959ddc2a47e7cfe1f5a8ea4d3fa8248a478 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Wed, 30 May 2018 16:08:30 -0700
Subject: [PATCH] use /var/lib/iscsi in libopeniscsiusr
---
libopeniscsiusr/idbm.h | 3 ++-
libopeniscsiusr/iface.c | 2 +-
libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h | 8 ++++----
libopeniscsiusr/libopeniscsiusr/libopeniscsiusr_iface.h | 2 +-
libopeniscsiusr/node.h | 2 +-
5 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/libopeniscsiusr/idbm.h b/libopeniscsiusr/idbm.h
index cc90388..5a4d2fa 100644
--- a/libopeniscsiusr/idbm.h
+++ b/libopeniscsiusr/idbm.h
@@ -31,7 +31,8 @@
#include "libopeniscsiusr/libopeniscsiusr_common.h"
#define ISCSI_CONFIG_ROOT "/etc/iscsi/"
-#define IFACE_CONFIG_DIR ISCSI_CONFIG_ROOT"ifaces"
+#define ISCSI_VAR_LIB "/var/lib/iscsi/"
+#define IFACE_CONFIG_DIR ISCSI_VAR_LIB"ifaces"
#define AUTH_STR_MAX_LEN 256
#define BOOT_NAME_MAXLEN 256
#define IDBM_DUMP_SIZE 8192
diff --git a/libopeniscsiusr/iface.c b/libopeniscsiusr/iface.c
index e7938a5..99ab7b5 100644
--- a/libopeniscsiusr/iface.c
+++ b/libopeniscsiusr/iface.c
@@ -381,7 +381,7 @@ int iscsi_default_iface_setup(struct iscsi_context *ctx)
_good(_iscsi_hids_get(ctx, &hids, &hid_count), rc, out);
for (i = 0; i < hid_count; ++i) {
- /* Create /etc/iscsi/ifaces/<iface_name> file if not found
+ /* Create /var/lib/iscsi/ifaces/<iface_name> file if not found
*/
_good(_iscsi_ifaces_get_from_sysfs(ctx, hids[i], &ifaces, &iface_count),
rc, out);
diff --git a/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h b/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h
index 4395902..81582da 100644
--- a/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h
+++ b/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h
@@ -339,7 +339,7 @@ __DLL_EXPORT void iscsi_session_free(struct iscsi_session *se);
* * bnx2i
*
* It will also create configuration files for iSCSI hardware offload cards in
- * /etc/iscsi/ifaces/<iface_name>.
+ * /var/lib/iscsi/ifaces/<iface_name>.
*
* @ctx:
* Pointer of 'struct iscsi_context'.
@@ -369,7 +369,7 @@ __DLL_EXPORT int iscsi_default_iface_setup(struct iscsi_context *ctx);
* Retrieves all iSCSI interfaces. For the properties of 'struct iscsi_iface',
* please refer to the functions defined in 'libopeniscsiusr_iface.h' file.
* The returned results contains default iSCSI interfaces(iser and iscsi_tcp)
- * and iSCSI interfaces configured in "/etc/iscsi/ifaces/".
+ * and iSCSI interfaces configured in "/var/lib/iscsi/ifaces/".
* Illegal configuration file will be skipped and warned.
* To generate iSCSI interface configuration when new card installed, please
* use iscsi_default_iface_setup().
@@ -427,7 +427,7 @@ __DLL_EXPORT void iscsi_ifaces_free(struct iscsi_iface **ifaces,
* iscsi_iface_get() - Retrieve specified iSCSI interface.
*
* Retrieves specified iSCSI interfaces by reading configuration from
- * "/etc/iscsi/iface/<iface_name>".
+ * "/var/lib/iscsi/iface/<iface_name>".
* To generate iSCSI interface configuration when new card installed, please
* use iscsi_default_iface_setup().
* Illegal configuration file will be treated as error LIBISCSI_ERR_IDBM.
@@ -438,7 +438,7 @@ __DLL_EXPORT void iscsi_ifaces_free(struct iscsi_iface **ifaces,
* If this pointer is NULL, your program will be terminated by assert.
* @iface_name:
* String. Name of iSCSI interface. Also the file name of configuration
- * file "/etc/iscsi/iface/<iface_name>".
+ * file "/var/lib/iscsi/iface/<iface_name>".
* If this pointer is NULL or empty string, your program will be terminated
* by assert.
* @iface:
diff --git a/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr_iface.h b/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr_iface.h
index a1a2552..95b0160 100644
--- a/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr_iface.h
+++ b/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr_iface.h
@@ -182,7 +182,7 @@ __DLL_EXPORT const char *iscsi_iface_name_get(struct iscsi_iface *iface);
*
* Dump all configurations of specified iSCSI interface. Will skip empty
* configuration so that output string could be saved directly to
- * /etc/iscsi/ifaces/<iface_name> file.
+ * /var/lib/iscsi/ifaces/<iface_name> file.
*
* @iface:
* Pointer of 'struct iscsi_iface'.
diff --git a/libopeniscsiusr/node.h b/libopeniscsiusr/node.h
index 39e07b3..9eba7fa 100644
--- a/libopeniscsiusr/node.h
+++ b/libopeniscsiusr/node.h
@@ -44,7 +44,7 @@ struct iscsi_node {
char portal[NI_MAXHOST * 2];
};
-#define NODE_CONFIG_DIR ISCSI_CONFIG_ROOT"nodes"
+#define NODE_CONFIG_DIR ISCSI_VAR_LIB"nodes"
/* Might be public in the future */
__DLL_LOCAL void iscsi_node_free(struct iscsi_node *node);
--
2.26.2

View File

@ -1,25 +0,0 @@
From 8bcaf32662ff762c2cab3d4b1f96c38965304e30 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Wed, 16 Oct 2019 23:17:20 -0700
Subject: [PATCH 1/1] fix upstream build breakage of iscsiuio LDFLAGS
---
iscsiuio/configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/iscsiuio/configure.ac b/iscsiuio/configure.ac
index 9b85448..1b9fb27 100644
--- a/iscsiuio/configure.ac
+++ b/iscsiuio/configure.ac
@@ -72,7 +72,7 @@ AC_ARG_WITH([systemd],
*) AC_MSG_ERROR([bad value $withval for --with-systemd]) ;;
esac],[with_libsystemd=auto])
AS_IF([test "$with_libsystemd" != no],[
- PKG_CHECK_MODULES([LIBSYSTEMD],[libsystemd],[LDFLAGS=$LIBSYSTEMD_LIBS],[
+ PKG_CHECK_MODULES([LIBSYSTEMD],[libsystemd],[LDFLAGS="${LDFLAGS} $LIBSYSTEMD_LIBS"],[
if test "$with_libsystemd" = yes; then
AC_MSG_ERROR([could not find libsystemd using pkg-config])
else
--
2.31.1

View File

@ -1,25 +0,0 @@
From a7c0b325c7ce5c4bd72ddcf7022f42bd8cfc9e90 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Mon, 21 Jan 2013 15:43:36 -0800
Subject: [PATCH 1/1] use Red Hat version string to match RPM package version
---
usr/version.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/usr/version.h b/usr/version.h
index 3c68989..31b6f05 100644
--- a/usr/version.h
+++ b/usr/version.h
@@ -6,7 +6,7 @@
* This may not be the same value as the kernel versions because
* some other maintainer could merge a patch without going through us
*/
-#define ISCSI_VERSION_STR "2.1.4"
+#define ISCSI_VERSION_STR "6.2.1.4-1"
#define ISCSI_VERSION_FILE "/sys/module/scsi_transport_iscsi/version"
#endif
--
2.31.1

View File

@ -1,44 +0,0 @@
From 84a8601fe7b9b5337af95835aaa5aae1bfd88d95 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 11 Aug 2020 21:00:29 +0200
Subject: [PATCH] iscsi_if.h replace zero-length array with flexible-array
member
---
include/iscsi_if.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/iscsi_if.h b/include/iscsi_if.h
index 5a1c614..e8cee0d 100644
--- a/include/iscsi_if.h
+++ b/include/iscsi_if.h
@@ -337,7 +337,7 @@ enum iscsi_param_type {
struct iscsi_param_info {
uint32_t len; /* Actual length of the param value */
uint16_t param; /* iscsi param */
- uint8_t value[0]; /* length sized value follows */
+ uint8_t value[]; /* length sized value follows */
} __attribute__((__packed__));
struct iscsi_iface_param_info {
@@ -346,7 +346,7 @@ struct iscsi_iface_param_info {
uint16_t param; /* iscsi param value */
uint8_t iface_type; /* IPv4 or IPv6 */
uint8_t param_type; /* iscsi_param_type */
- uint8_t value[0]; /* length sized value follows */
+ uint8_t value[]; /* length sized value follows */
} __attribute__((__packed__));
/*
@@ -723,7 +723,7 @@ enum iscsi_flashnode_param {
struct iscsi_flashnode_param_info {
uint32_t len; /* Actual length of the param */
uint16_t param; /* iscsi param value */
- uint8_t value[0]; /* length sized value follows */
+ uint8_t value[]; /* length sized value follows */
} __attribute__((__packed__));
enum iscsi_discovery_parent_type {
--
2.26.2

View File

@ -1,56 +0,0 @@
From af428f588f8023784c6f4b0a25d13b70fb7216ab Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 3 Mar 2020 10:35:40 -0800
Subject: [PATCH] stop using Werror for now
need to work through these warning that only appear on s390x
Werror seems bad for release, makes packaging a nightmare when new
compilers come around
---
Makefile | 2 +-
usr/Makefile | 2 +-
usr/initiator.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile
index 7e6b734..0069e75 100644
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,7 @@
DESTDIR ?=
prefix = /usr
-exec_prefix = /
+exec_prefix = /usr
sbindir = $(exec_prefix)/sbin
bindir = $(exec_prefix)/bin
mandir = $(prefix)/share/man
diff --git a/usr/Makefile b/usr/Makefile
index 885243a..1a743d1 100644
--- a/usr/Makefile
+++ b/usr/Makefile
@@ -35,7 +35,7 @@ endif
PKG_CONFIG = /usr/bin/pkg-config
CFLAGS ?= -O2 -g
-WARNFLAGS ?= -Wall -Wextra -Werror -Wstrict-prototypes -fno-common
+WARNFLAGS ?= -Wall -Wextra -Wstrict-prototypes -fno-common
CFLAGS += $(WARNFLAGS) -I../include -I. -D_GNU_SOURCE \
-I$(TOPDIR)/libopeniscsiusr -DISNS_ENABLE
CFLAGS += $(shell $(PKG_CONFIG) --cflags libkmod)
diff --git a/usr/initiator.c b/usr/initiator.c
index 684647c..a5a9d08 100644
--- a/usr/initiator.c
+++ b/usr/initiator.c
@@ -580,7 +580,7 @@ __session_conn_reopen(iscsi_conn_t *conn, queue_task_t *qtask, int do_stop,
int redirected)
{
iscsi_session_t *session = conn->session;
- uint32_t delay;
+ uint32_t delay = 0;
log_debug(1, "re-opening session %d (reopen_cnt %d)", session->id,
session->reopen_cnt);
--
2.26.2

View File

@ -1,42 +0,0 @@
From b9bf7cea4769efa73e6de9b13a8d1833d2ac3d92 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Wed, 16 Jun 2021 09:55:06 -0700
Subject: [PATCH 1/1] iscsistart: fix null pointer deref before exit
Fixes regression caused by "open-iscsi: Clean user_param list when
process exit" Which is a shame, as not freeing a memory at process exit
doesn't really hurt anything.
Same change as "Fix iscsiadm segfault when exiting" applied to iscsiadm.
Fixes: b532ad67d495d42026165a26515c645995d23f18
Signed-off-by: Chris Leech <cleech@redhat.com>
---
usr/iscsistart.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/usr/iscsistart.c b/usr/iscsistart.c
index 206cd4c..7eb573e 100644
--- a/usr/iscsistart.c
+++ b/usr/iscsistart.c
@@ -361,7 +361,7 @@ int main(int argc, char *argv[])
struct boot_context *context, boot_context;
struct sigaction sa_old;
struct sigaction sa_new;
- struct user_param *param;
+ struct user_param *param, *tmp_param;
int control_fd, mgmt_ipc_fd, err;
pid_t pid;
@@ -556,7 +556,7 @@ int main(int argc, char *argv[])
mgmt_ipc_close(mgmt_ipc_fd);
free_initiator();
sysfs_cleanup();
- list_for_each_entry(param, &user_params, list) {
+ list_for_each_entry_safe(param, tmp_param, &user_params, list) {
list_del(&param->list);
idbm_free_user_param(param);
}
--
2.31.1

20
gating.yaml Normal file
View File

@ -0,0 +1,20 @@
--- !Policy
product_versions:
- fedora-*
decision_context: bodhi_update_push_testing
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
--- !Policy
product_versions:
- fedora-*
decision_context: bodhi_update_push_stable
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
--- !Policy
product_versions:
- rhel-9
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}

View File

@ -1,51 +1,44 @@
%global open_iscsi_version 2.1
%global open_iscsi_build 4
%global commit0 095f59ca464220eae285de6b5f2ee31185a6a84c
%global open_iscsi_build 9
%global commit0 a65a472a35b436c7a2d47c5862aae530ac4ae9c8
%global shortcommit0 %(c=%{commit0}; echo ${c:0:7})
%if 0%{?rhel} > 7
# Disable python2 build by default
%bcond_with python2
%else
%bcond_without python2
%endif
%bcond python2 0
%bcond python3 1
Summary: iSCSI daemon and utility programs
Name: iscsi-initiator-utils
Version: 6.%{open_iscsi_version}.%{open_iscsi_build}
Release: 8.git%{shortcommit0}%{?dist}
Group: System Environment/Daemons
License: GPLv2+
URL: http://www.open-iscsi.org
Release: 1.git%{shortcommit0}%{?dist}
License: GPL-2.0-or-later
URL: https://github.com/open-iscsi/open-iscsi
Source0: https://github.com/open-iscsi/open-iscsi/archive/%{commit0}.tar.gz#/open-iscsi-%{shortcommit0}.tar.gz
Source4: 04-iscsi
Source5: iscsi-tmpfiles.conf
Patch0001: 0001-unit-file-tweaks.patch
Patch0002: 0002-idmb_rec_write-check-for-tpgt-first.patch
Patch0003: 0003-idbm_rec_write-seperate-old-and-new-style-writes.patch
Patch0004: 0004-idbw_rec_write-pick-tpgt-from-existing-record.patch
Patch0005: 0005-update-initscripts-and-docs.patch
Patch0006: 0006-use-var-for-config.patch
Patch0007: 0007-use-red-hat-for-name.patch
Patch0008: 0008-libiscsi.patch
Patch0009: 0009-Add-macros-to-release-GIL-lock.patch
Patch0010: 0010-libiscsi-introduce-sessions-API.patch
Patch0011: 0011-libiscsi-fix-discovery-request-timeout-regression.patch
Patch0012: 0012-libiscsi-format-security-build-errors.patch
Patch0013: 0013-libiscsi-fix-build-to-use-libopeniscsiusr.patch
Patch0014: 0014-libiscsi-fix-build-against-latest-upstream-again.patch
Patch0015: 0015-remove-the-offload-boot-supported-ifdef.patch
Patch0016: 0016-Revert-iscsiadm-return-error-when-login-fails.patch
Patch0017: 0017-dont-install-scripts.patch
Patch0018: 0018-use-var-lib-iscsi-in-libopeniscsiusr.patch
Patch0019: 0019-Coverity-scan-fixes.patch
Patch0020: 0020-fix-upstream-build-breakage-of-iscsiuio-LDFLAGS.patch
Patch0021: 0021-use-Red-Hat-version-string-to-match-RPM-package-vers.patch
Patch0022: 0022-iscsi_if.h-replace-zero-length-array-with-flexible-a.patch
Patch0023: 0023-stop-using-Werror-for-now.patch
Patch0024: 0024-iscsistart-fix-null-pointer-deref-before-exit.patch
Patch01: 0001-meson-don-t-hide-things-with-Wno-all.patch
# https://github.com/open-iscsi/open-iscsi/pull/394/
Patch02: 0002-Currently-when-iscsi.service-is-installed-it-creates.patch
Patch03: 0003-Use-DBROOT-in-iscsi-starter.-Include-iscsi-starter-i.patch
Patch04: 0004-fix-systemctl-path-in-iscsi-starter.service.patch
# Fedora / Red Hat stuff, merge more of this upstream?
Patch05: 0005-improved-onboot-and-shutdown-services.patch
Patch06: 0006-iscsid.conf-Fedora-Red-Hat-defaults.patch
Patch07: 0007-Disable-Data-Digests.patch
Patch08: 0008-Revert-iscsiadm-return-error-when-login-fails.patch
Patch09: 0009-Coverity-scan-fixes.patch
Patch10: 0010-use-Red-Hat-version-string-to-match-RPM-package-vers.patch
# libiscsi, deprecated but still needed until UDisks2 is converted to libopeniscsiusr
Patch101: 0101-libiscsi.patch
Patch102: 0102-libiscsi-introduce-sessions-API.patch
Patch103: 0103-fix-libiscsi-firmware-discovery-issue-with-NULL-drec.patch
Patch104: 0104-libiscsi-build-fixes.patch
BuildRequires: meson git
BuildRequires: flex bison doxygen kmod-devel systemd-units
BuildRequires: autoconf automake libtool libmount-devel openssl-devel
BuildRequires: isns-utils-devel
@ -59,7 +52,7 @@ Requires(postun): systemd
Conflicts: NetworkManager < 1.20
%global _hardened_build 1
%global __provides_exclude_from ^(%{python2_sitearch}/.*\\.so|%{python3_sitearch}/.*\\.so)$
%global __provides_exclude_from ^(%{?python2_sitearch:%{python2_sitearch}/.*\\.so}|%{?python3_sitearch:%{python3_sitearch}/.*\\.so})$
%description
The iscsi package provides the server daemon for the iSCSI protocol,
@ -67,31 +60,9 @@ as well as the utility programs used to manage it. iSCSI is a protocol
for distributed disk access using SCSI commands sent over Internet
Protocol networks.
# I don't think we're ready to expose these just yet
# For now just add the needed library to the base package
#%%package -n libopeniscsiusr
#Summary: library providing access to Open-iSCSI initiator functionality
#Group: Development/Libraries
#License: BSD
#%%description -n libopeniscsiusr
#The libopeniscsiusr library provides a C API for access to the Open-iSCSI
#initiator. It is used by the Open-iSCSI command line tools.
#%%package -n libopeniscsiusr-devel
#Summary: Development files for libopeniscsiusr
#Group: Development/Libraries
#Requires: libopeniscsiusr = %%{version}-%%{release}
#%%description -n libopeniscsiusr-devel
#The libopeniscsiusr-devel package contains libraries and header files for
#developing applications that use libopeniscsiusr.
%package iscsiuio
Summary: Userspace configuration daemon required for some iSCSI hardware
Group: System Environment/Daemons
License: BSD
License: BSD-4-Clause
Requires: %{name} = %{version}-%{release}
%description iscsiuio
@ -100,7 +71,6 @@ for some iSCSI offload hardware.
%package devel
Summary: Development files for %{name}
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description devel
@ -111,7 +81,6 @@ developing applications that use %{name}.
%package -n python2-%{name}
%{?python_provide:%python_provide python2-%{name}}
Summary: Python %{python2_version} bindings to %{name}
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
BuildRequires: python2-devel
BuildRequires: python2-setuptools
@ -122,56 +91,44 @@ libiscsi interface for interacting with %{name}
%endif
# ended with python2
%if %{with python3}
%package -n python3-%{name}
%{?python_provide:%python_provide python3-%{name}}
Summary: Python %{python3_version} bindings to %{name}
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: make
%description -n python3-%{name}
The %{name}-python3 package contains Python %{python3_version} bindings to the
libiscsi interface for interacting with %{name}
%endif
# ended with python3
%prep
%autosetup -p1 -n open-iscsi-%{commit0}
# change exec_prefix, there's no easy way to override
%{__sed} -i -e 's|^exec_prefix = /$|exec_prefix = %{_exec_prefix}|' Makefile
%autosetup -p1 -n open-iscsi-%{commit0} -Sgit_am
%build
# avoid undefined references linking failures
%undefine _ld_as_needed
# configure sub-packages from here
# letting the top level Makefile do it will lose setting from rpm
cd iscsiuio
autoreconf --install
%{configure}
cd ..
%meson -Diqn_prefix=iqn.1994-05.com.redhat
%meson_build
%{__make} OPTFLAGS="%{optflags} %{?__global_ldflags}"
%make_build LDFLAGS="%{build_ldflags}" iqn_prefix=iqn.1994-05.com.redhat DBROOT=/var/lib/iscsi libiscsi
pushd libiscsi
%if %{with python2}
%py2_build
%py2_build
%endif
%if %{with python3}
%py3_build
%endif
# ended with python2
%py3_build
touch -r libiscsi.doxy html/*
popd
%install
%{__make} DESTDIR=%{?buildroot} install_programs install_doc install_etc install_libopeniscsiusr
# upstream makefile doesn't get everything the way we like it
#rm $RPM_BUILD_ROOT%%{_sbindir}/iscsi_discovery
rm $RPM_BUILD_ROOT%{_mandir}/man8/iscsi_discovery.8
rm $RPM_BUILD_ROOT%{_mandir}/man8/iscsi_fw_login.8
%{__install} -pm 755 usr/iscsistart $RPM_BUILD_ROOT%{_sbindir}
%{__install} -pm 644 doc/iscsistart.8 $RPM_BUILD_ROOT%{_mandir}/man8
%{__install} -pm 644 doc/iscsi-iname.8 $RPM_BUILD_ROOT%{_mandir}/man8
%{__install} -d $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
%{__install} -pm 644 iscsiuio/iscsiuiolog $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
%meson_install
%{__install} -d $RPM_BUILD_ROOT%{_sharedstatedir}/iscsi
%{__install} -d $RPM_BUILD_ROOT%{_sharedstatedir}/iscsi/nodes
%{__install} -d $RPM_BUILD_ROOT%{_sharedstatedir}/iscsi/send_targets
@ -184,16 +141,20 @@ rm $RPM_BUILD_ROOT%{_mandir}/man8/iscsi_fw_login.8
%{__install} -d $RPM_BUILD_ROOT%{_rundir}/lock/iscsi
touch $RPM_BUILD_ROOT%{_rundir}/lock/iscsi/lock
%{__install} -d $RPM_BUILD_ROOT%{_unitdir}
%{__install} -pm 644 etc/systemd/iscsi.service $RPM_BUILD_ROOT%{_unitdir}
# %%{__install} -pm 644 etc/systemd/iscsi-init.service $RPM_BUILD_ROOT%%{_unitdir}
%{__install} -pm 644 etc/systemd/iscsi-onboot.service $RPM_BUILD_ROOT%{_unitdir}
%{__install} -pm 644 etc/systemd/iscsi-shutdown.service $RPM_BUILD_ROOT%{_unitdir}
%{__install} -pm 644 etc/systemd/iscsid.service $RPM_BUILD_ROOT%{_unitdir}
%{__install} -pm 644 etc/systemd/iscsid.socket $RPM_BUILD_ROOT%{_unitdir}
%{__install} -pm 644 etc/systemd/iscsiuio.service $RPM_BUILD_ROOT%{_unitdir}
%{__install} -pm 644 etc/systemd/iscsiuio.socket $RPM_BUILD_ROOT%{_unitdir}
# upstream started installing a bunch of optional stuff from other distros
# maybe we can make use of these, but clean up for now
rm $RPM_BUILD_ROOT/etc/iscsi/initiatorname.iscsi
rm $RPM_BUILD_ROOT/etc/udev/rules.d/50-iscsi-firmware-login.rules
rm $RPM_BUILD_ROOT/usr/lib/systemd/system-generators/ibft-rule-generator
rm $RPM_BUILD_ROOT/usr/sbin/brcm_iscsiuio
rm $RPM_BUILD_ROOT/usr/sbin/iscsi-gen-initiatorname
rm $RPM_BUILD_ROOT/usr/sbin/iscsi_discovery
rm $RPM_BUILD_ROOT/usr/sbin/iscsi_fw_login
rm $RPM_BUILD_ROOT/usr/sbin/iscsi_offload
rm $RPM_BUILD_ROOT/usr/share/man/man8/iscsi-gen-initiatorname.8
rm $RPM_BUILD_ROOT/usr/share/man/man8/iscsi_discovery.8
rm $RPM_BUILD_ROOT/usr/share/man/man8/iscsi_fw_login.8
rm $RPM_BUILD_ROOT/var/lib/iscsi/ifaces/iface.example
%{__install} -d $RPM_BUILD_ROOT%{_libexecdir}
%{__install} -pm 755 etc/systemd/iscsi-mark-root-nodes $RPM_BUILD_ROOT%{_libexecdir}
@ -210,85 +171,39 @@ touch $RPM_BUILD_ROOT%{_rundir}/lock/iscsi/lock
%{__install} -d $RPM_BUILD_ROOT%{_includedir}
%{__install} -pm 644 libiscsi/libiscsi.h $RPM_BUILD_ROOT%{_includedir}
%if %{with python2}
%{__install} -d $RPM_BUILD_ROOT%{python2_sitearch}
%endif
# ended with python2
%{__install} -d $RPM_BUILD_ROOT%{python3_sitearch}
pushd libiscsi
%if %{with python2}
%py2_install
%{__install} -d $RPM_BUILD_ROOT%{python2_sitearch}
%py2_install
%endif
%if %{with python3}
%{__install} -d $RPM_BUILD_ROOT%{python3_sitearch}
%py3_install
%endif
# ended with python2
%py3_install
popd
%post
/sbin/ldconfig
%systemd_post iscsi.service iscsi-starter.service iscsid.service iscsid.socket iscsi-onboot.service iscsi-init.service iscsi-shutdown.service
%systemd_post iscsi.service iscsi-onboot.service iscsi-shutdown.service iscsid.service iscsid.socket
%preun
%systemd_preun iscsi.service iscsi-starter.service iscsid.service iscsid.socket iscsi-onboot.service iscsi-init.service iscsi-shutdown.service
if [ $1 -eq 1 ]; then
if [ ! -f %{_sysconfdir}/iscsi/initiatorname.iscsi ]; then
echo "InitiatorName=`/usr/sbin/iscsi-iname`" > %{_sysconfdir}/iscsi/initiatorname.iscsi
fi
# enable socket activation and persistant session startup by default
/bin/systemctl enable iscsi.service >/dev/null 2>&1 || :
/bin/systemctl enable iscsi-onboot.service >/dev/null 2>&1 || :
/bin/systemctl enable iscsid.socket >/dev/null 2>&1 || :
fi
%postun
%systemd_postun iscsi.service iscsi-starter.service iscsid.service iscsid.socket iscsi-onboot.service iscsi-init.service iscsi-shutdown.service
%post iscsiuio
%systemd_post iscsiuio.service iscsiuio.socket
if [ $1 -eq 1 ]; then
/bin/systemctl enable iscsiuio.socket >/dev/null 2>&1 || :
fi
%preun
%systemd_preun iscsi.service iscsi-onboot.service iscsi-shutdown.service iscsid.service iscsiuio.service iscsid.socket iscsiuio.socket
%preun iscsiuio
%systemd_preun iscsiuio.service iscsiuio.socket
%postun
/sbin/ldconfig
%systemd_postun iscsi.service iscsi-onboot.service iscsi-shutdown.service iscsid.service iscsiuio.service iscsid.socket iscsiuio.socket
%postun iscsiuio
%systemd_postun iscsiuio.service iscsiuio.socket
%triggerun -- iscsi-initiator-utils < 6.2.0.873-25
# prior to 6.2.0.873-24 iscsi.service was missing a Wants=remote-fs-pre.target
# this forces remote-fs-pre.target active if needed for a clean shutdown/reboot
# after upgrading this package
if [ $1 -gt 0 ]; then
/usr/bin/systemctl -q is-active iscsi.service
if [ $? -eq 0 ]; then
/usr/bin/systemctl -q is-active remote-fs-pre.target
if [ $? -ne 0 ]; then
SRC=`/usr/bin/systemctl show --property FragmentPath remote-fs-pre.target | cut -d= -f2`
DST=/run/systemd/system/remote-fs-pre.target
if [ $SRC != $DST ]; then
cp $SRC $DST
fi
sed -i 's/RefuseManualStart=yes/RefuseManualStart=no/' $DST
/usr/bin/systemctl daemon-reload >/dev/null 2>&1 || :
/usr/bin/systemctl start remote-fs-pre.target >/dev/null 2>&1 || :
fi
fi
fi
# added in 6.2.0.873-25
if [ $1 -gt 0 ]; then
systemctl start iscsi-shutdown.service >/dev/null 2>&1 || :
fi
%triggerpostun -- iscsi-initiator-utils < 6.2.0.878-4
# added in 6.2.0.878-0, needs to be enabled during an upgrade
if [ $1 -gt 0 ]; then
/bin/systemctl enable iscsi-onboot.service >/dev/null 2>&1 || :
fi
%triggerun -- %{name} < 6.2.1.4-8
# This is for upgrades from previous versions before iscsi-starter.service was added.
systemctl --no-reload preset iscsi.service iscsi-starter.service &>/dev/null || :
%files
%doc README
@ -299,11 +214,12 @@ fi
%dir %{_sharedstatedir}/iscsi/slp
%dir %{_sharedstatedir}/iscsi/ifaces
%dir %{_sharedstatedir}/iscsi/send_targets
%ghost %attr(0700, -, -) %{_rundir}/lock/iscsi
%ghost %attr(0600, -, -) %{_rundir}/lock/iscsi/lock
%ghost %dir %attr(0700, root, root) %{_rundir}/lock/iscsi
%ghost %attr(0600, root, root) %{_rundir}/lock/iscsi/lock
%{_unitdir}/iscsi.service
%{_unitdir}/iscsi-starter.service
%{_unitdir}/iscsi-onboot.service
# %%{_unitdir}/iscsi-init.service
%{_unitdir}/iscsi-init.service
%{_unitdir}/iscsi-shutdown.service
%{_unitdir}/iscsid.service
%{_unitdir}/iscsid.socket
@ -321,26 +237,7 @@ fi
%{_mandir}/man8/iscsiadm.8.gz
%{_mandir}/man8/iscsid.8.gz
%{_mandir}/man8/iscsistart.8.gz
# until we decide to setup libopeniscsiusr as a subpkg for real
%{_libdir}/libopeniscsiusr.so.*
%exclude %{_libdir}/libopeniscsiusr.so
%exclude %{_includedir}/libopeniscsiusr.h
%exclude %{_includedir}/libopeniscsiusr_common.h
%exclude %{_includedir}/libopeniscsiusr_iface.h
%exclude %{_includedir}/libopeniscsiusr_node.h
%exclude %{_includedir}/libopeniscsiusr_session.h
%exclude %{_libdir}/pkgconfig/libopeniscsiusr.pc
# %%files -n libopeniscsiusr
# %%{_libdir}/libopeniscsiusr.so.*
#
# %%files -n libopeniscsiusr-devel
# %%{_libdir}/libopeniscsiusr.so
# %%{_includedir}/libopeniscsiusr.h
# %%{_includedir}/libopeniscsiusr_common.h
# %%{_includedir}/libopeniscsiusr_iface.h
# %%{_includedir}/libopeniscsiusr_session.h
# %%{_libdir}/pkgconfig/libopeniscsiusr.pc
%files iscsiuio
%{_sbindir}/iscsiuio
@ -353,6 +250,14 @@ fi
%doc libiscsi/html
%{_libdir}/libiscsi.so
%{_includedir}/libiscsi.h
%{_libdir}/libopeniscsiusr.so
%{_includedir}/libopeniscsiusr.h
%{_includedir}/libopeniscsiusr_common.h
%{_includedir}/libopeniscsiusr_iface.h
%{_includedir}/libopeniscsiusr_node.h
%{_includedir}/libopeniscsiusr_session.h
%{_libdir}/pkgconfig/libopeniscsiusr.pc
%{_mandir}/man3/*
%if %{with python2}
%files -n python2-%{name}
@ -360,67 +265,108 @@ fi
%endif
# ended with python2
%if %{with python3}
%files -n python3-%{name}
%{python3_sitearch}/*
%endif
%changelog
* Thu Jun 15 2023 Chris Leech <cleech@redhat.com> - 6.2.1.4-8.git095f59c
- fix gating test
* Wed Nov 15 2023 Chris Leech <cleech@redhat.com> - 6.2.1.9-18.gita65a472
- rebase to upstream 2.1.9+ with iscsiuio 0.7.8.8
- new meson build system, sync with fedora packaging
* Thu Jun 15 2023 Chris Leech <cleech@redhat.com> - 6.2.1.4-7.git095f59c
- move tests to tmt framework
* Wed Jun 15 2022 Chris Leech <cleech@redhat.com> - 6.2.1.4-3.git2a8f9d8
- 2016611 fix libiscsi regression causing udisksd faults with firmware discovery
* Tue Jun 13 2023 Chris Leech <cleech@redhat.com> - 6.2.1.4-6.git095f59c
- restore missing gating tests
* Mon Nov 01 2021 Chris Leech <cleech@redhat.com> - 6.2.1.4-2.git2a8f9d8
- 2016482: iscsi-init.service modified to work in initramfs
* Wed Jun 07 2023 Chris Leech <cleech@redhat.com> - 6.2.1.4-5.git095f59c
- 2131090 fix idbm patch to not overwrite upstream changes in file mode
* Wed Aug 11 2021 Chris Leech <cleech@redhat.com> - 6.2.1.4-1.git2a8f9d8
- new upstream
- iscsiuio fixes for newer upstream bnx2x driver having version removed
* Mon Aug 09 2021 Chris Leech <cleech@redhat.com> - 6.2.1.4-4.git095f59c
- 1755907 set proper attr in rpm db for lockfiles, fixes rpm verificiation warning
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 6.2.1.2-8.gita8fcb37
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Wed Jun 16 2021 Chris Leech <cleech@redhat.com> - 6.2.1.4-3.git095f59c
- coverity found a use-after-free regression in iscsistart
* Wed Jun 16 2021 Mohan Boddu <mboddu@redhat.com> - 6.2.1.2-7.gita8fcb37
- Rebuilt for RHEL 9 BETA for openssl 3.0
Related: rhbz#1971065
* Mon Jun 14 2021 Chris Leech <cleech@redhat.com> - 6.2.1.4-2.git095f59c
- 1924768 fix unit files for el8, not using iscsi-init
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 6.2.1.2-6.gita8fcb37
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Fri Mar 12 2021 Chris Leech <cleech@redhat.com> - 6.2.1.2-1.gita8fcb37
- 1924768 iscsiadm -m sessions fails when racing against session login/logout
* Thu Feb 18 2021 Chris Leech <cleech@redhat.com> - 6.2.1.2-5.gita8fcb37
- unit file changes
* Thu Aug 20 2020 Chris Leech - 6.2.0.878-5.gitd791ce0
- 1849931, 1869438 go back to MD5 CHAP only by default
new CHAP modes can cause issue with some targets,
so SHA1/SHA256/SHA3-256 modes must be configured to enable now
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 6.2.1.2-4.gita8fcb37
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Tue Mar 24 2020 Chris Leech <cleech@redhat.com> - 6.2.0.878-3.gitd791ce0
- 1801577 new service file not enabled on upgrade, spec change to use triggers for that
* Thu Nov 05 2020 Chris Leech <cleech@redhat.com> - 6.2.1.2-3.gita8fcb37
- add libopeniscsiusr content to iscsi-initiator-utils-devel
* Mon Feb 17 2020 Chris Leech <cleech@redhat.com> - 6.2.0.878-3.gitd791ce0
- 1801577 missing spec file changes from 6.2.0.878-0 causing iSCSI boot regression
* Mon Sep 21 2020 Chris Leech <cleech@redhat.com> - 6.2.1.2-1.git13e7f58
- iscsiadm overflow regression when discovering many targets at once
- check for invalid session id during stop connection
- add ability to attempt target logins asynchronously
* Mon Jan 20 2020 Chris Leech <cleech@redhat.com> - 6.2.0.878-2.gitd791ce0
- 1786015 fix IPv6 discovery regression in iscsiuio
* Tue Aug 11 2020 Christian Glombek <cglombek@redhat.com> - 6.2.1.2-0.git802688d
- Update to upstream v2.1.2
- Remove systemctl enable calls, as this is now handled by Fedora presets
- per the guidelines
- Remove initiator name generation, as this is now handled by an init service
- Install ghost lockfile and dir to /run instead of /var
- Rebased/fixed up patches
- Fixed macros in comments and comments after macros
- Merged service-file-tweaks.patch and
- improve-systemd-service-files-for-boot-session-handl.patch
- into unit-file-tweaks.patch
- Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1493296
- Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1729740
- Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1834509
* Wed Jan 08 2020 Chris Leech <cleech@redhat.com> - 6.2.0.878-1.gitd791ce0
- 1788233 added node.session.auth.chap_algs configuration setting
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 6.2.1.1-0.gitac87641.2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Thu Nov 07 2019 Chris Leech <cleech@redhat.com> - 6.2.0.878-0.gitd791ce0
- 1761940 iSCSI CHAP authentication not function with FIPS enabled
- Service file improvements forward ported from RHEL 7.8
- various static analysis fixes from upstream
* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 6.2.1.1-0.gitac87641.1
- Rebuilt for Python 3.9
* Wed Jun 05 2019 Chris Leech <cleech@redhat.com> - 6.2.0.877-1.gitf71581b
- fix Covscan reported issues from upstream patches
* Mon Mar 02 2020 Chris Leech <cleech@redhat.com> - 6.2.1.1-0.gitac87641
- rebase to new upstream v2.1.1
- enhanced CHAP options are now a configuration to deal with broken targets (#1774746)
* Tue Jun 04 2019 Chris Leech <cleech@redhat.com> - 6.2.0.877-0.gitf71581b
- 1665317 update to latest upstream for iscsiuio enhancements
* Sun Mar 01 2020 Adam Williamson <awilliam@redhat.com> - 6.2.1.0-2.git4440e57
- Backport upstream d3daa7a2 to fix bz #1774746
* Thu Feb 21 2019 Chris Leech <cleech@redhat.com> - 6.2.0.876-7.gitf3c8e90
- 1647826: fix sysfs and output format regressions in libopeniscsi code
* Mon Feb 24 2020 Than Ngo <than@redhat.com> - 6.2.1.0-1.git4440e57
- upstream patch to support gcc -fno-common option
* Thu Jan 03 2019 Chris Leech <cleech@redhat.com> - 6.2.0.876-6.gitf3c8e90
- 1650402: fix missing space in node display output
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 6.2.1.0-0.git4440e57.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Tue Nov 19 2019 Chris Leech <cleech@redhat.com> - 6.2.1.0-0.git4440e57
- update to upstream v2.1.0
* Thu Aug 22 2019 Lubomir Rintel <lkundrak@v3.sk> - 6.2.0.876-12.gitf3c8e90
- Move the NetworkManager dispatcher script out of /etc
* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 6.2.0.876-11.gitf3c8e90
- Rebuilt for Python 3.8
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 6.2.0.876-10.gitf3c8e90
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu May 30 2019 Chris Leech <cleech@redhat.com> - 6.2.0.876-9.gitf3c8e90
- FTBFS: %%systemd_postun scriptlets need service files as an argument
* Tue Feb 12 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 6.2.0.876-8.gitf3c8e90
- Remove obsolete scriptlets
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 6.2.0.876-7.gitf3c8e90
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Thu Jan 10 2019 Miro Hrončok <mhroncok@redhat.com> - 6.2.0.876-6.gitf3c8e90
- Disable python2 build
* Tue Jul 10 2018 Chris Leech <cleech@redhat.com> - 6.2.0.876-5.gitf3c8e90
- iscsiuio: add mutex to protect netlink buffer for pass-through xmit
@ -439,6 +385,7 @@ fi
* Tue Jun 19 2018 Chris Leech <cleech@redhat.com> - 6.2.0.876-1.git4ef9261
- pull in post 2.0.876 tagged fixes from upstream git
- minimal packaging of libopeniscsiusr (internal use only, no dev package yet)
- Conditionalize the python2 subpackage [Charalampos Stratakis <cstratak@redhat.com>]
* Tue Jun 19 2018 Chris Leech <cleech@redhat.com> - 6.2.0.876-1.git24580ad
- rebase to upstream 2.0.876
@ -446,9 +393,6 @@ fi
* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> - 6.2.0.874-10.git86e8892
- Rebuilt for Python 3.7
* Mon May 28 2018 Charalampos Stratakis <cstratak@redhat.com> - 6.2.0.874-10.git86e8892
- Conditionalize the python2 subpackage
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 6.2.0.874-9.git86e8892
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

5
plans/sanity.fmf Normal file
View File

@ -0,0 +1,5 @@
summary: Run relevant tests from the tests directory
discover:
how: fmf
execute:
how: tmt

21
plans/sts.fmf Normal file
View File

@ -0,0 +1,21 @@
summary: Tier 0 iSCSI initiator tests
discover:
how: fmf
url: https://gitlab.com/rh-kernel-stqe/sts
ref: fedora
filter:
- tier:0
- tag:iscsi
- tag:local
context:
component: iscsi-initiator-utils
execute:
how: tmt
environment:
STS_VENV_PATH: /opt/sts-venv
prepare:
- name: install-sts-libs
how: shell
script: >
curl --retry 3 --retry-delay 5 --connect-timeout 10 --max-time 30 -s
https://gitlab.com/rh-kernel-stqe/sts/-/raw/fedora/scripts/install-sts-libs.sh | bash

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (open-iscsi-a65a472.tar.gz) = f2befa5047a8a1f714910d402503828d6ae5d7be85d3b59db33cde32c4e36fe401430c6ae033a066d9bd57a3be0c0933185240cfc8660973e03c8a8c427d4ba6

View File

@ -0,0 +1,62 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Makefile of /kernel/test_beakertask/Sanity/beaker_nvr_test
# Description: Install VDO
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2018 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export TEST=/beaker_nvr_test
export TESTVERSION=1.0
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile PURPOSE
.PHONY: all install download clean
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
test -x runtest.sh || chmod a+x runtest.sh
clean:
rm -f *~ $(BUILT_FILES)
include /usr/share/rhts/lib/rhts-make.include
$(METADATA): Makefile
@echo "Owner: Andy Walsh <awalsh@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "Description: Creates iSCSI target/initiator, and logs it in locally" >> $(METADATA)
@echo "Type: Sanity" >> $(METADATA)
@echo "TestTime: 5m" >> $(METADATA)
@echo "RunFor: test_beakertask" >> $(METADATA)
@echo "Requires: test_beakertask" >> $(METADATA)
@echo "Priority: Normal" >> $(METADATA)
@echo "License: GPLv2+" >> $(METADATA)
@echo "Confidential: no" >> $(METADATA)
@echo "Destructive: no" >> $(METADATA)
@echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA)
rhts-lint $(METADATA)

View File

@ -0,0 +1,3 @@
PURPOSE Create an iSCSI target/initiator environment
Description: Set up and Log into an iSCSI target locally.
Author: Andy Walsh <awalsh@redhat.com>

View File

@ -0,0 +1,13 @@
summary: Creates iSCSI target/initiator, and logs it in locally
description: ''
contact: Andy Walsh <awalsh@redhat.com>
component:
- iscsi-initiator-utils
test: ./runtest.sh
framework: beakerlib
recommend:
- test_beakertask
duration: 5m
extra-summary: /beaker_nvr_test
extra-task: /beaker_nvr_test
tier: 0

View File

@ -0,0 +1,117 @@
#!/bin/bash
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh for iSCSI target/initiator test
# Description: Set up and Log into an iSCSI target locally.
# Author: Andy Walsh <awalsh@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2019 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
# Set up a target IQN to use through the test.
targetIQN=iqn.2019-03.com.redhat.test:testtargetname
targetIP=127.0.0.1
# Minimum size required for loopback device. Sometimes software (like VDO)
# needs more than ~10G.
minimumSize=15
rlJournalStart
rlPhaseStartSetup
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
rlRun "pushd $TmpDir"
# Determine the size of the loopback device we're going to use
# (Free space on rootfs minus 1G)
loopbackSize=$(($(df --sync --output=avail / | tail -1) * 1024 - 1024*1024*1024))
if [ ${loopbackSize} -lt $((1024*1024*1024*${minimumSize})) ]; then
rlDie "Not enough space to create the loopback device"
fi
# Create the backing store and then set up the loopback device.
rlRun "truncate -s ${loopbackSize} $TmpDir/loop0.bin" 0 "Laying out loopfile backing"
rlRun "losetup /dev/loop0 $TmpDir/loop0.bin" 0 "Creating loopdevice"
# Check whether we have the iscsi utilities installed, and if we don't,
# then install them. If this is being tested in OSCI, I believe that
# the package will be pre-installed when we get to this point.
if ! rlCheckRpm iscsi-initiator-utils; then
yum install -y iscsi-initiator-utils
fi
if ! rlCheckRpm targetcli; then
yum install -y targetcli
fi
if [ -f /etc/iscsi/initiatorname.iscsi ]; then
. /etc/iscsi/initiatorname.iscsi
else
echo InitiatorName=`iscsi-iname` > /etc/iscsi/initiatorname.iscsi
. /etc/iscsi/initiatorname.iscsi
fi
# Make sure the target service is running.
rlRun "systemctl start target"
rlPhaseEnd
rlPhaseStartTest
# Gather some system information for debug purposes
rlRun "uname -a"
rlPhaseEnd
rlPhaseStartTest "Set up target"
rlRun "targetcli backstores/block create name=loopback_device dev=/dev/loop0"
rlRun "targetcli iscsi/ create ${targetIQN}"
rlRun "targetcli iscsi/${targetIQN}/tpg1/acls create ${InitiatorName}"
rlRun "targetcli iscsi/${targetIQN}/tpg1/luns create lun=100 /backstores/block/loopback_device"
rlPhaseEnd
rlPhaseStartTest "Set up initiator (Log into target)"
rlRun "iscsiadm --mode discovery --type sendtargets --portal ${targetIP}"
rlRun "iscsiadm --mode node --target ${targetIQN} -l"
# Occasionally logging into the iSCSI target and checking for the LUNs
# being presented and handled by udev seems to falsely cause the next check
# to fail. Adding a short sleep seems to fix that.
sleep 1
if [ ! -L /dev/disk/by-path/ip-${targetIP}\:3260-iscsi-${targetIQN}-lun-100 ]; then
rlFail "iSCSI LUN not found"
fi
rlPhaseEnd
rlPhaseStartCleanup
# Log out of the target and tear down the iSCSI target configuration
rlRun "iscsiadm --mode node -u"
rlRun "targetcli iscsi/ delete ${targetIQN}"
rlRun "targetcli backstores/block delete loopback_device"
rlRun "losetup -d /dev/loop0" 0 "Deleting loopdevice"
rlRun "rm -f $TmpDir/loop0.bin" 0 "Removing loopfile backing"
rlRun "popd"
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

5
tests/provision.fmf Normal file
View File

@ -0,0 +1,5 @@
---
standard-inventory-qcow2:
qemu:
m: 2G