diff --git a/.gitignore b/.gitignore index 0b0706c..869f454 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/open-iscsi-2a8f9d8.tar.gz +SOURCES/open-iscsi-a65a472.tar.gz diff --git a/.iscsi-initiator-utils.metadata b/.iscsi-initiator-utils.metadata index 384a5be..e27d5fb 100644 --- a/.iscsi-initiator-utils.metadata +++ b/.iscsi-initiator-utils.metadata @@ -1 +1 @@ -548252927c20ea605def18014cbafa377b1b104d SOURCES/open-iscsi-2a8f9d8.tar.gz +eef1ee9663a36e32b87b1858b5da883b38f4d223 SOURCES/open-iscsi-a65a472.tar.gz diff --git a/SOURCES/0001-Remove-dependences-from-iscsi-init.service.patch b/SOURCES/0001-Remove-dependences-from-iscsi-init.service.patch deleted file mode 100644 index 66c4cc4..0000000 --- a/SOURCES/0001-Remove-dependences-from-iscsi-init.service.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 432bbf979ee66ee29bb92e35fd6e3ffb948563e3 Mon Sep 17 00:00:00 2001 -From: Lee Duncan -Date: Wed, 29 Sep 2021 11:48:16 -0700 -Subject: [PATCH] Remove dependences from iscsi-init.service - -Since iscsid.service depends on it but disables -default dependencies, iscsi-init.service must -also disable default dependencies, or a dependency -loop can be created. ---- - etc/systemd/iscsi-init.service | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/etc/systemd/iscsi-init.service b/etc/systemd/iscsi-init.service -index e058ff0..eab4ff2 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 -+DefaultDependencies=no - Before=iscsid.service - - [Service] --- -2.33.0 - diff --git a/SOURCES/0001-meson-don-t-hide-things-with-Wno-all.patch b/SOURCES/0001-meson-don-t-hide-things-with-Wno-all.patch new file mode 100644 index 0000000..e1601ae --- /dev/null +++ b/SOURCES/0001-meson-don-t-hide-things-with-Wno-all.patch @@ -0,0 +1,32 @@ +From 51833a7ba053a0219e9e41f4b4c8c4b2f6860ff2 Mon Sep 17 00:00:00 2001 +From: Chris Leech +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 + diff --git a/SOURCES/0001-unit-file-tweaks.patch b/SOURCES/0001-unit-file-tweaks.patch deleted file mode 100644 index 743dccd..0000000 --- a/SOURCES/0001-unit-file-tweaks.patch +++ /dev/null @@ -1,175 +0,0 @@ -From fd538429be486d057b092e3b9c148add2c5ea9c2 Mon Sep 17 00:00:00 2001 -From: rpm-build -Date: Tue, 4 Jun 2019 13:23:32 -0700 -Subject: [PATCH 1/1] 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 | 3 +-- - etc/systemd/iscsiuio.service | 4 +--- - 6 files changed, 74 insertions(+), 13 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..175cb2c 100644 ---- a/etc/systemd/iscsi.service -+++ b/etc/systemd/iscsi.service -@@ -1,18 +1,18 @@ - [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=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 - RemainAfterExit=true -+ExecStart=-/usr/sbin/iscsiadm -m node --loginall=automatic -+ExecReload=-/usr/sbin/iscsiadm -m node --loginall=automatic -+SuccessExitStatus=21 - - [Install] - WantedBy=remote-fs.target -diff --git a/etc/systemd/iscsid.service b/etc/systemd/iscsid.service -index 3fd7dd3..324c593 100644 ---- a/etc/systemd/iscsid.service -+++ b/etc/systemd/iscsid.service -@@ -4,13 +4,12 @@ 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 --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.26.3 - diff --git a/SOURCES/0002-Currently-when-iscsi.service-is-installed-it-creates.patch b/SOURCES/0002-Currently-when-iscsi.service-is-installed-it-creates.patch new file mode 100644 index 0000000..795c767 --- /dev/null +++ b/SOURCES/0002-Currently-when-iscsi.service-is-installed-it-creates.patch @@ -0,0 +1,62 @@ +From 295bab75dfbb50904def98b46abd463a050a6e29 Mon Sep 17 00:00:00 2001 +From: Gordon Messmer +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 + diff --git a/SOURCES/0002-idmb_rec_write-check-for-tpgt-first.patch b/SOURCES/0002-idmb_rec_write-check-for-tpgt-first.patch deleted file mode 100644 index ba9da6d..0000000 --- a/SOURCES/0002-idmb_rec_write-check-for-tpgt-first.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 45878c9461298c9da68a626d990dc4ef99e01baa Mon Sep 17 00:00:00 2001 -From: Chris Leech -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 - diff --git a/SOURCES/0003-Use-DBROOT-in-iscsi-starter.-Include-iscsi-starter-i.patch b/SOURCES/0003-Use-DBROOT-in-iscsi-starter.-Include-iscsi-starter-i.patch new file mode 100644 index 0000000..0378357 --- /dev/null +++ b/SOURCES/0003-Use-DBROOT-in-iscsi-starter.-Include-iscsi-starter-i.patch @@ -0,0 +1,56 @@ +From 0f90d4440047a3c62bdf09d876787000d0fa5b7e Mon Sep 17 00:00:00 2001 +From: Gordon Messmer +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 + diff --git a/SOURCES/0003-idbm_rec_write-seperate-old-and-new-style-writes.patch b/SOURCES/0003-idbm_rec_write-seperate-old-and-new-style-writes.patch deleted file mode 100644 index 00d72a3..0000000 --- a/SOURCES/0003-idbm_rec_write-seperate-old-and-new-style-writes.patch +++ /dev/null @@ -1,193 +0,0 @@ -From 0bb22b50dbaa7ac44e8eb244a73a66efbd98632c Mon Sep 17 00:00:00 2001 -From: Chris Leech -Date: Tue, 13 Aug 2013 11:34:31 -0700 -Subject: [PATCH 1/1] 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, 0660) != 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, 0660) != 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.26.3 - diff --git a/SOURCES/0004-fix-systemctl-path-in-iscsi-starter.service.patch b/SOURCES/0004-fix-systemctl-path-in-iscsi-starter.service.patch new file mode 100644 index 0000000..da80ffe --- /dev/null +++ b/SOURCES/0004-fix-systemctl-path-in-iscsi-starter.service.patch @@ -0,0 +1,25 @@ +From 1df58cafc3b5d2dea5dd53a539a0014b10664f51 Mon Sep 17 00:00:00 2001 +From: 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 + diff --git a/SOURCES/0004-idbw_rec_write-pick-tpgt-from-existing-record.patch b/SOURCES/0004-idbw_rec_write-pick-tpgt-from-existing-record.patch deleted file mode 100644 index 4a31b2a..0000000 --- a/SOURCES/0004-idbw_rec_write-pick-tpgt-from-existing-record.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 2b1c0c5f1f2dbc516a9b51950a82eac091dbce2c Mon Sep 17 00:00:00 2001 -From: Chris Leech -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 - #include - #include -+#include - #include - #include - #include -@@ -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 - diff --git a/SOURCES/0005-improved-onboot-and-shutdown-services.patch b/SOURCES/0005-improved-onboot-and-shutdown-services.patch new file mode 100644 index 0000000..3a5ca1f --- /dev/null +++ b/SOURCES/0005-improved-onboot-and-shutdown-services.patch @@ -0,0 +1,142 @@ +From 5a62fe2c3c36b9d14b433edb8cbccbed7af4e2b7 Mon Sep 17 00:00:00 2001 +From: 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 + diff --git a/SOURCES/0005-update-initscripts-and-docs.patch b/SOURCES/0005-update-initscripts-and-docs.patch deleted file mode 100644 index 7d487a5..0000000 --- a/SOURCES/0005-update-initscripts-and-docs.patch +++ /dev/null @@ -1,134 +0,0 @@ -From 97b1242450df25648d203acf7cc297cd46d10e8c Mon Sep 17 00:00:00 2001 -From: Chris Leech -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 - diff --git a/SOURCES/0006-iscsid.conf-Fedora-Red-Hat-defaults.patch b/SOURCES/0006-iscsid.conf-Fedora-Red-Hat-defaults.patch new file mode 100644 index 0000000..f14dccd --- /dev/null +++ b/SOURCES/0006-iscsid.conf-Fedora-Red-Hat-defaults.patch @@ -0,0 +1,34 @@ +From f3b8f65a16e6e8414f8dedca4330fc0dced113db Mon Sep 17 00:00:00 2001 +From: 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 + diff --git a/SOURCES/0006-use-var-for-config.patch b/SOURCES/0006-use-var-for-config.patch deleted file mode 100644 index e69b9e7..0000000 --- a/SOURCES/0006-use-var-for-config.patch +++ /dev/null @@ -1,255 +0,0 @@ -From f7c6a7381a38ca59fd7a9a64e5f54cf5c16995ad Mon Sep 17 00:00:00 2001 -From: Chris Leech -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,,,, - iser iser,,,, -@@ -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 -+#include "idbm.h" - --#define IFACE_CONFIG_DIR ISCSI_CONFIG_ROOT"ifaces" -+#define IFACE_CONFIG_DIR ISCSIVAR"ifaces" - - struct iface_rec; - struct list_head; --- -2.26.3 - diff --git a/SOURCES/0007-Disable-Data-Digests.patch b/SOURCES/0007-Disable-Data-Digests.patch new file mode 100644 index 0000000..7950780 --- /dev/null +++ b/SOURCES/0007-Disable-Data-Digests.patch @@ -0,0 +1,70 @@ +From 4fd0476062b1c63e1e4aff45a59e3fa79e3bf0e6 Mon Sep 17 00:00:00 2001 +From: 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 + diff --git a/SOURCES/0007-use-red-hat-for-name.patch b/SOURCES/0007-use-red-hat-for-name.patch deleted file mode 100644 index 53ac29c..0000000 --- a/SOURCES/0007-use-red-hat-for-name.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 8312003a6a9e41d8d20eb8225ec8c4b2860351ec Mon Sep 17 00:00:00 2001 -From: Chris Leech -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 -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 - diff --git a/SOURCES/0016-Revert-iscsiadm-return-error-when-login-fails.patch b/SOURCES/0008-Revert-iscsiadm-return-error-when-login-fails.patch similarity index 100% rename from SOURCES/0016-Revert-iscsiadm-return-error-when-login-fails.patch rename to SOURCES/0008-Revert-iscsiadm-return-error-when-login-fails.patch diff --git a/SOURCES/0009-Add-macros-to-release-GIL-lock.patch b/SOURCES/0009-Add-macros-to-release-GIL-lock.patch deleted file mode 100644 index e03b7ef..0000000 --- a/SOURCES/0009-Add-macros-to-release-GIL-lock.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 676f48d6e70f8406b36a004669d923825db51e2f Mon Sep 17 00:00:00 2001 -From: Jiri Konecny -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 - diff --git a/SOURCES/0019-Coverity-scan-fixes.patch b/SOURCES/0009-Coverity-scan-fixes.patch similarity index 90% rename from SOURCES/0019-Coverity-scan-fixes.patch rename to SOURCES/0009-Coverity-scan-fixes.patch index 1b3904e..65b1e92 100644 --- a/SOURCES/0019-Coverity-scan-fixes.patch +++ b/SOURCES/0009-Coverity-scan-fixes.patch @@ -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 */ diff --git a/SOURCES/0010-use-Red-Hat-version-string-to-match-RPM-package-vers.patch b/SOURCES/0010-use-Red-Hat-version-string-to-match-RPM-package-vers.patch new file mode 100644 index 0000000..ed3b5c0 --- /dev/null +++ b/SOURCES/0010-use-Red-Hat-version-string-to-match-RPM-package-vers.patch @@ -0,0 +1,39 @@ +From 08e9412135c1c89df4d50b8dbdc12c0d227307cb Mon Sep 17 00:00:00 2001 +From: Chris Leech +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 + diff --git a/SOURCES/0011-libiscsi-fix-discovery-request-timeout-regression.patch b/SOURCES/0011-libiscsi-fix-discovery-request-timeout-regression.patch deleted file mode 100644 index cddc17c..0000000 --- a/SOURCES/0011-libiscsi-fix-discovery-request-timeout-regression.patch +++ /dev/null @@ -1,32 +0,0 @@ -From c53c576c09c5a3a1654b7a1f08fcc222a102499d Mon Sep 17 00:00:00 2001 -From: 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 - diff --git a/SOURCES/0012-libiscsi-format-security-build-errors.patch b/SOURCES/0012-libiscsi-format-security-build-errors.patch deleted file mode 100644 index 421bc3b..0000000 --- a/SOURCES/0012-libiscsi-format-security-build-errors.patch +++ /dev/null @@ -1,35 +0,0 @@ -From cf4db608004f7c1f137ed556e3ba6b6f4d65da96 Mon Sep 17 00:00:00 2001 -From: 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 - diff --git a/SOURCES/0013-libiscsi-fix-build-to-use-libopeniscsiusr.patch b/SOURCES/0013-libiscsi-fix-build-to-use-libopeniscsiusr.patch deleted file mode 100644 index 9b3c34b..0000000 --- a/SOURCES/0013-libiscsi-fix-build-to-use-libopeniscsiusr.patch +++ /dev/null @@ -1,36 +0,0 @@ -From a86a677762cf5fd45a43029a4fd3dd83d1a87a98 Mon Sep 17 00:00:00 2001 -From: 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 - diff --git a/SOURCES/0014-libiscsi-fix-build-against-latest-upstream-again.patch b/SOURCES/0014-libiscsi-fix-build-against-latest-upstream-again.patch deleted file mode 100644 index f9f8d07..0000000 --- a/SOURCES/0014-libiscsi-fix-build-against-latest-upstream-again.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 55af753f593243bcd1ab4c7e82620bdee432915b Mon Sep 17 00:00:00 2001 -From: Chris Leech -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, ¶ms, 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 - diff --git a/SOURCES/0015-remove-the-offload-boot-supported-ifdef.patch b/SOURCES/0015-remove-the-offload-boot-supported-ifdef.patch deleted file mode 100644 index 2466935..0000000 --- a/SOURCES/0015-remove-the-offload-boot-supported-ifdef.patch +++ /dev/null @@ -1,45 +0,0 @@ -From d410fe4b6eb2347f2160b8aaab24a639de99c23c Mon Sep 17 00:00:00 2001 -From: Chris Leech -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 - diff --git a/SOURCES/0017-dont-install-scripts.patch b/SOURCES/0017-dont-install-scripts.patch deleted file mode 100644 index a7c1c38..0000000 --- a/SOURCES/0017-dont-install-scripts.patch +++ /dev/null @@ -1,25 +0,0 @@ -From e35261316aaa598c4146a5396745cb76571e94fe Mon Sep 17 00:00:00 2001 -From: 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 - diff --git a/SOURCES/0018-use-var-lib-iscsi-in-libopeniscsiusr.patch b/SOURCES/0018-use-var-lib-iscsi-in-libopeniscsiusr.patch deleted file mode 100644 index 3a780d9..0000000 --- a/SOURCES/0018-use-var-lib-iscsi-in-libopeniscsiusr.patch +++ /dev/null @@ -1,109 +0,0 @@ -From e186e959ddc2a47e7cfe1f5a8ea4d3fa8248a478 Mon Sep 17 00:00:00 2001 -From: 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/ file if not found -+ /* Create /var/lib/iscsi/ifaces/ 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/. -+ * /var/lib/iscsi/ifaces/. - * - * @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/". -+ * "/var/lib/iscsi/iface/". - * 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/". -+ * file "/var/lib/iscsi/iface/". - * 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/ file. -+ * /var/lib/iscsi/ifaces/ 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 - diff --git a/SOURCES/0020-fix-upstream-build-breakage-of-iscsiuio-LDFLAGS.patch b/SOURCES/0020-fix-upstream-build-breakage-of-iscsiuio-LDFLAGS.patch deleted file mode 100644 index 142fcde..0000000 --- a/SOURCES/0020-fix-upstream-build-breakage-of-iscsiuio-LDFLAGS.patch +++ /dev/null @@ -1,25 +0,0 @@ -From b50ab4a08a12593985b14aece5f689e485647b1c Mon Sep 17 00:00:00 2001 -From: 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..5dc188b 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.26.3 - diff --git a/SOURCES/0021-use-Red-Hat-version-string-to-match-RPM-package-vers.patch b/SOURCES/0021-use-Red-Hat-version-string-to-match-RPM-package-vers.patch deleted file mode 100644 index 52960d8..0000000 --- a/SOURCES/0021-use-Red-Hat-version-string-to-match-RPM-package-vers.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 53886d75a93ee1747d84187a0498abcf6cebd210 Mon Sep 17 00:00:00 2001 -From: Chris Leech -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..8af23a4 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" - #define ISCSI_VERSION_FILE "/sys/module/scsi_transport_iscsi/version" - - #endif --- -2.26.3 - diff --git a/SOURCES/0022-iscsi_if.h-replace-zero-length-array-with-flexible-a.patch b/SOURCES/0022-iscsi_if.h-replace-zero-length-array-with-flexible-a.patch deleted file mode 100644 index 2318503..0000000 --- a/SOURCES/0022-iscsi_if.h-replace-zero-length-array-with-flexible-a.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 84a8601fe7b9b5337af95835aaa5aae1bfd88d95 Mon Sep 17 00:00:00 2001 -From: 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 - diff --git a/SOURCES/0023-stop-using-Werror-for-now.patch b/SOURCES/0023-stop-using-Werror-for-now.patch deleted file mode 100644 index 624081c..0000000 --- a/SOURCES/0023-stop-using-Werror-for-now.patch +++ /dev/null @@ -1,56 +0,0 @@ -From af428f588f8023784c6f4b0a25d13b70fb7216ab Mon Sep 17 00:00:00 2001 -From: 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 - diff --git a/SOURCES/0024-minor-service-file-updates.patch b/SOURCES/0024-minor-service-file-updates.patch deleted file mode 100644 index be17752..0000000 --- a/SOURCES/0024-minor-service-file-updates.patch +++ /dev/null @@ -1,68 +0,0 @@ -From b8c6c1f3bed0e5fcc0d02c56834fa60850a11b5f Mon Sep 17 00:00:00 2001 -From: Chris Leech -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 - diff --git a/SOURCES/0008-libiscsi.patch b/SOURCES/0101-libiscsi.patch similarity index 97% rename from SOURCES/0008-libiscsi.patch rename to SOURCES/0101-libiscsi.patch index 39d1a84..c8c1158 100644 --- a/SOURCES/0008-libiscsi.patch +++ b/SOURCES/0101-libiscsi.patch @@ -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 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, ¶ms, 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 + 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 - #include - #include -+#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 diff --git a/SOURCES/0010-libiscsi-introduce-sessions-API.patch b/SOURCES/0102-libiscsi-introduce-sessions-API.patch similarity index 100% rename from SOURCES/0010-libiscsi-introduce-sessions-API.patch rename to SOURCES/0102-libiscsi-introduce-sessions-API.patch diff --git a/SOURCES/0001-fix-libiscsi-firmware-discovery-issue-with-NULL-drec.patch b/SOURCES/0103-fix-libiscsi-firmware-discovery-issue-with-NULL-drec.patch similarity index 100% rename from SOURCES/0001-fix-libiscsi-firmware-discovery-issue-with-NULL-drec.patch rename to SOURCES/0103-fix-libiscsi-firmware-discovery-issue-with-NULL-drec.patch diff --git a/SOURCES/0104-libiscsi-build-fixes.patch b/SOURCES/0104-libiscsi-build-fixes.patch new file mode 100644 index 0000000..d2691c2 --- /dev/null +++ b/SOURCES/0104-libiscsi-build-fixes.patch @@ -0,0 +1,96 @@ +From d6344267de82b7ef38e2834522a8782579b77d42 Mon Sep 17 00:00:00 2001 +From: 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 + diff --git a/SPECS/iscsi-initiator-utils.spec b/SPECS/iscsi-initiator-utils.spec index 4644039..ae80952 100644 --- a/SPECS/iscsi-initiator-utils.spec +++ b/SPECS/iscsi-initiator-utils.spec @@ -1,48 +1,44 @@ %global open_iscsi_version 2.1 -%global open_iscsi_build 4 -%global commit0 2a8f9d81d0d6b5094c3fe9c686e2afb2ec27058a +%global open_iscsi_build 9 +%global commit0 a65a472a35b436c7a2d47c5862aae530ac4ae9c8 %global shortcommit0 %(c=%{commit0}; echo ${c:0:7}) # Disable python2 build by default -%bcond_with python2 +%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: 3.git%{shortcommit0}%{?dist} -License: GPLv2+ +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-minor-service-file-updates.patch -Patch0025: 0001-Remove-dependences-from-iscsi-init.service.patch -Patch0026: 0001-fix-libiscsi-firmware-discovery-issue-with-NULL-drec.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 @@ -56,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, @@ -66,7 +62,7 @@ Protocol networks. %package iscsiuio Summary: Userspace configuration daemon required for some iSCSI hardware -License: BSD +License: BSD-4-Clause Requires: %{name} = %{version}-%{release} %description iscsiuio @@ -95,6 +91,7 @@ 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} @@ -106,47 +103,32 @@ 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 @@ -159,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} @@ -185,28 +171,26 @@ 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 -%systemd_post iscsi.service iscsid.service iscsid.socket iscsi-onboot.service iscsi-init.service iscsi-shutdown.service +%systemd_post iscsi.service iscsi-starter.service iscsid.service iscsid.socket iscsi-onboot.service iscsi-init.service iscsi-shutdown.service %preun -%systemd_preun iscsi.service iscsid.service iscsid.socket iscsi-onboot.service iscsi-init.service iscsi-shutdown.service +%systemd_preun iscsi.service iscsi-starter.service iscsid.service iscsid.socket iscsi-onboot.service iscsi-init.service iscsi-shutdown.service %postun -%systemd_postun iscsi.service iscsid.service iscsid.socket iscsi-onboot.service iscsi-init.service iscsi-shutdown.service +%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 @@ -217,31 +201,9 @@ popd %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 - +%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 @@ -252,9 +214,10 @@ fi %dir %{_sharedstatedir}/iscsi/slp %dir %{_sharedstatedir}/iscsi/ifaces %dir %{_sharedstatedir}/iscsi/send_targets -%ghost %attr(0700, root, root) %{_rundir}/lock/iscsi +%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-shutdown.service @@ -294,6 +257,7 @@ fi %{_includedir}/libopeniscsiusr_node.h %{_includedir}/libopeniscsiusr_session.h %{_libdir}/pkgconfig/libopeniscsiusr.pc +%{_mandir}/man3/* %if %{with python2} %files -n python2-%{name} @@ -301,10 +265,16 @@ fi %endif # ended with python2 +%if %{with python3} %files -n python3-%{name} %{python3_sitearch}/* +%endif %changelog +* Wed Nov 15 2023 Chris Leech - 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 + * Wed Jun 15 2022 Chris Leech - 6.2.1.4-3.git2a8f9d8 - 2016611 fix libiscsi regression causing udisksd faults with firmware discovery