Compare commits

...

No commits in common. "c8" and "imports/c8s/iscsi-initiator-utils-6.2.1.2-1.gita8fcb37.el8" have entirely different histories.

13 changed files with 330 additions and 163 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/open-iscsi-095f59c.tar.gz
SOURCES/open-iscsi-a8fcb37.tar.gz

View File

@ -1 +1 @@
d6947b76f161a0adcc6d984ed43a82c99e319578 SOURCES/open-iscsi-095f59c.tar.gz
3d93416258a292dbb4ce43a8ef2be2d94bbb85f2 SOURCES/open-iscsi-a8fcb37.tar.gz

View File

@ -1,16 +1,16 @@
From 28e3ef5c630b8433eaad176a53c98af05a994f36 Mon Sep 17 00:00:00 2001
From 0a6af5e7283ed2733753998043adac090ef12dd0 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 4 Jun 2019 13:23:32 -0700
Subject: [PATCH 01/23] unit file tweaks
Subject: [PATCH] unit file tweaks
---
etc/systemd/iscsi-mark-root-nodes | 34 ++++++++++++++++++++++++++++++
etc/systemd/iscsi-onboot.service | 15 +++++++++++++
etc/systemd/iscsi-shutdown.service | 15 +++++++++++++
etc/systemd/iscsi.service | 16 +++++++-------
etc/systemd/iscsid.service | 6 ++----
etc/systemd/iscsid.service | 3 +--
etc/systemd/iscsiuio.service | 4 +---
6 files changed, 75 insertions(+), 15 deletions(-)
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
@ -98,48 +98,45 @@ index 0000000..caee933
+ExecStart=-/usr/bin/true
+ExecStop=-/usr/sbin/iscsiadm -m node --logoutall=all
diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service
index 5e394b9..26e557d 100644
index 2f2bf81..175cb2c 100644
--- a/etc/systemd/iscsi.service
+++ b/etc/systemd/iscsi.service
@@ -1,17 +1,17 @@
@@ -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
-After=network.target network-online.target
-After=iscsid.service iscsi-init.service
-Requires=iscsid.socket iscsi-init.service
-Wants=network-online.target
+DefaultDependencies=no
+Before=remote-fs-pre.target
+After=network.target network-online.target iscsid.service iscsiuio.service systemd-remount-fs.service
+Wants=network-online.target remote-fs-pre.target iscsi-shutdown.service
+Wants=remote-fs-pre.target iscsi-shutdown.service
+ConditionDirectoryNotEmpty=/var/lib/iscsi/nodes
[Service]
Type=oneshot
-ExecStart=/sbin/iscsiadm -m node --loginall=automatic -W
-ExecStart=/sbin/iscsiadm -m node --loginall=automatic
-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
RemainAfterExit=true
[Install]
WantedBy=remote-fs.target
diff --git a/etc/systemd/iscsid.service b/etc/systemd/iscsid.service
index 3fd7dd3..3958dae 100644
index 648ceea..28402fb 100644
--- a/etc/systemd/iscsid.service
+++ b/etc/systemd/iscsid.service
@@ -2,15 +2,13 @@
Description=Open-iSCSI
Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8)
@@ -4,12 +4,11 @@ Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8)
DefaultDependencies=no
-After=network-online.target iscsiuio.service iscsi-init.service
+After=network.target network-online.target iscsiuio.service
After=network.target iscsiuio.service
Before=remote-fs-pre.target
-Wants=remote-fs-pre.target
-Requires=iscsi-init.service
[Service]
Type=notify
@ -173,5 +170,5 @@ index 923e019..fc0be93 100644
Restart=on-failure
--
2.31.1
2.26.2

View File

@ -1,7 +1,7 @@
From 9823d8ead9e2d91765e4af39d906e25acd4e2a04 Mon Sep 17 00:00:00 2001
From cfd9fc81e11c462b682ead4e05721772b20f7546 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Tue, 13 Aug 2013 11:34:31 -0700
Subject: [PATCH 3/3] idbm_rec_write, seperate old and new style writes
Subject: [PATCH] idbm_rec_write, seperate old and new style writes
Duplicates a small bit of code, but easier to understand and extened.
---
@ -9,10 +9,10 @@ Duplicates a small bit of code, but easier to understand and extened.
1 file changed, 86 insertions(+), 43 deletions(-)
diff --git a/usr/idbm.c b/usr/idbm.c
index efdda75..307a01a 100644
index e6ede85..bc51388 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -2152,12 +2152,7 @@ mkdir_portal:
@@ -2130,12 +2130,7 @@ mkdir_portal:
return f;
}
@ -26,13 +26,13 @@ index efdda75..307a01a 100644
{
struct stat statb;
FILE *f;
@@ -2170,39 +2165,8 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
@@ -2148,39 +2143,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) {
- if (mkdir(portal, 0660) != 0) {
- log_error("Could not make %s: %s", portal,
- strerror(errno));
- rc = ISCSI_ERR_IDBM;
@ -42,7 +42,7 @@ index efdda75..307a01a 100644
-
- snprintf(portal, PATH_MAX, "%s/%s", NODE_CONFIG_DIR, rec->name);
- if (access(portal, F_OK) != 0) {
- if (mkdir(portal, 0770) != 0) {
- if (mkdir(portal, 0660) != 0) {
- log_error("Could not make %s: %s", portal,
- strerror(errno));
- rc = ISCSI_ERR_IDBM;
@ -66,7 +66,7 @@ index efdda75..307a01a 100644
rc = stat(portal, &statb);
if (rc) {
@@ -2223,11 +2187,11 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
@@ -2201,11 +2165,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;
@ -80,7 +80,7 @@ index efdda75..307a01a 100644
}
mkdir_portal:
@@ -2238,24 +2202,103 @@ mkdir_portal:
@@ -2216,24 +2180,103 @@ mkdir_portal:
log_error("Could not make dir %s: %s",
portal, strerror(errno));
rc = ISCSI_ERR_IDBM;
@ -155,7 +155,7 @@ index efdda75..307a01a 100644
+
+ snprintf(portal, PATH_MAX, "%s", NODE_CONFIG_DIR);
+ if (access(portal, F_OK) != 0) {
+ if (mkdir(portal, 0770) != 0) {
+ if (mkdir(portal, 0660) != 0) {
+ log_error("Could not make %s: %s", portal,
+ strerror(errno));
+ rc = ISCSI_ERR_IDBM;
@ -165,7 +165,7 @@ index efdda75..307a01a 100644
+
+ snprintf(portal, PATH_MAX, "%s/%s", NODE_CONFIG_DIR, rec->name);
+ if (access(portal, F_OK) != 0) {
+ if (mkdir(portal, 0770) != 0) {
+ if (mkdir(portal, 0660) != 0) {
+ log_error("Could not make %s: %s", portal,
+ strerror(errno));
+ rc = ISCSI_ERR_IDBM;
@ -189,5 +189,5 @@ index efdda75..307a01a 100644
idbm_unlock();
free_portal:
--
2.31.1
2.26.2

View File

@ -1,7 +1,7 @@
From e6ab14371300e45c4f03efa64917f7601675f01d Mon Sep 17 00:00:00 2001
From b2af45f06a9b4d78c5dbb9421ac94f62d5e6f884 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Mon, 19 Nov 2012 16:38:45 -0800
Subject: [PATCH 1/1] use var for config
Subject: [PATCH] use var for config
---
README | 33 ++++++++++++++++-----------------
@ -13,7 +13,7 @@ Subject: [PATCH 1/1] use var for config
6 files changed, 33 insertions(+), 32 deletions(-)
diff --git a/README b/README
index b62a14e..1875e3d 100644
index c05814a..326c3b0 100644
--- a/README
+++ b/README
@@ -172,8 +172,7 @@ Usage: iscsid [OPTION]
@ -26,7 +26,7 @@ index b62a14e..1875e3d 100644
Configuration is contained in directories for:
@@ -573,7 +572,7 @@ a scsi_host per HBA port).
@@ -561,7 +560,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
@ -35,7 +35,7 @@ index b62a14e..1875e3d 100644
Prep
----
@@ -606,7 +605,7 @@ Running
@@ -594,7 +593,7 @@ Running
The command
iscsiadm -m iface
@ -44,7 +44,7 @@ index b62a14e..1875e3d 100644
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:
@@ -604,10 +603,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
@ -57,7 +57,7 @@ index b62a14e..1875e3d 100644
must have a unique name which is less than or equal to 64 characters.
Example
@@ -627,12 +626,12 @@ Example
@@ -615,12 +614,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
@ -72,7 +72,7 @@ index b62a14e..1875e3d 100644
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:
@@ -662,7 +661,7 @@ port. The iface name will be of the form:
Running the following command:
iscsiadm -m iface
@ -81,7 +81,7 @@ index b62a14e..1875e3d 100644
default tcp,<empty>,<empty>,<empty>,<empty>
iser iser,<empty>,<empty>,<empty>,<empty>
@@ -754,7 +753,7 @@ need a separate network connection to the target for discovery purposes.
@@ -742,7 +741,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
@ -90,7 +90,7 @@ index b62a14e..1875e3d 100644
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
@@ -757,7 +756,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
@ -99,7 +99,7 @@ index b62a14e..1875e3d 100644
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
@@ -793,7 +792,7 @@ Discovery mode
ID [192.168.1.1:3260]:
iscsiadm -m discoverydb -t st -p 192.168.1.1:3260 --discover
@ -108,7 +108,7 @@ index b62a14e..1875e3d 100644
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
@@ -802,7 +801,7 @@ Discovery mode
The argument to -p may also be a hostname instead of an address:
iscsiadm -m discoverydb -t st -p somehost --discover
@ -117,7 +117,7 @@ index b62a14e..1875e3d 100644
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
@@ -853,7 +852,7 @@ Discovery mode
- SendTargets iSCSI Discovery with a specific interface.
If you wish to only use a subset of the interfaces in
@ -126,7 +126,7 @@ index b62a14e..1875e3d 100644
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
@@ -1223,8 +1222,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
@ -137,7 +137,7 @@ index b62a14e..1875e3d 100644
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
@@ -1336,7 +1335,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
@ -147,10 +147,10 @@ index b62a14e..1875e3d 100644
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
index 22263eb..f47afac 100644
--- a/doc/iscsiadm.8
+++ b/doc/iscsiadm.8
@@ -228,7 +228,7 @@ This option is only valid for ping submode.
@@ -229,7 +229,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.
@ -159,7 +159,7 @@ index 3729a72..9f84a81 100644
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
@@ -309,7 +309,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;
@ -168,7 +168,7 @@ index 3729a72..9f84a81 100644
.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.
@@ -648,10 +648,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
@ -182,10 +182,10 @@ index 3729a72..9f84a81 100644
.SH "SEE ALSO"
.BR iscsid (8)
diff --git a/doc/iscsid.8 b/doc/iscsid.8
index db996b4..eaa9c3b 100644
index 6f9218f..0da0551 100644
--- a/doc/iscsid.8
+++ b/doc/iscsid.8
@@ -70,7 +70,7 @@ and
@@ -65,7 +65,7 @@ and
.B iscsiadm
on startup.
.TP
@ -195,24 +195,24 @@ index db996b4..eaa9c3b 100644
.SH "SEE ALSO"
diff --git a/usr/idbm.c b/usr/idbm.c
index 7c63c04..779d052 100644
index 0f0f17a..27cad0a 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -3104,9 +3104,9 @@ free_info:
@@ -3068,9 +3068,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) {
- if (mkdir(ISCSI_CONFIG_ROOT, 0660) != 0) {
- log_error("Could not make %s %d", ISCSI_CONFIG_ROOT,
+ if (access(ISCSIVAR, F_OK) != 0) {
+ if (mkdir(ISCSIVAR, 0770) != 0) {
+ if (mkdir(ISCSIVAR, 0660) != 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
index 46cd82a..ce098b7 100644
--- a/usr/idbm.h
+++ b/usr/idbm.h
@@ -30,12 +30,13 @@
@ -251,5 +251,5 @@ index 6c06f7f..c8b9de9 100644
struct iface_rec;
struct list_head;
--
2.31.1
2.26.2

View File

@ -1,7 +1,7 @@
From c455d7ff3a2fa37cdd5b43616db975aef336a007 Mon Sep 17 00:00:00 2001
From 0c300716226027d75afa2b9e5f052fa4868204ae Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Wed, 5 Jun 2019 09:08:39 -0700
Subject: [PATCH 1/1] Coverity scan fixes
Subject: [PATCH] Coverity scan fixes
---
iscsiuio/src/unix/libs/qedi.c | 2 +-
@ -12,10 +12,10 @@ Subject: [PATCH 1/1] Coverity scan fixes
5 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/iscsiuio/src/unix/libs/qedi.c b/iscsiuio/src/unix/libs/qedi.c
index 1af8d1b..9a814c6 100644
index 3414cb5..a359700 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)
@@ -1023,7 +1023,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",
nic->log_name, hw_prod, bd_prod, rx_bd->rx_pkt_index, len);
@ -39,7 +39,7 @@ index 0c9ad49..f83f305 100644
/* Spin off the signal handling thread */
pthread_attr_init(&attr);
diff --git a/libopeniscsiusr/idbm.c b/libopeniscsiusr/idbm.c
index 0910c63..6213e62 100644
index 7bc2381..7d4c338 100644
--- a/libopeniscsiusr/idbm.c
+++ b/libopeniscsiusr/idbm.c
@@ -321,12 +321,11 @@ int _idbm_lock(struct iscsi_context *ctx)
@ -47,12 +47,12 @@ index 0910c63..6213e62 100644
}
- if (access(LOCK_DIR, F_OK) != 0) {
- if (mkdir(LOCK_DIR, 0770) != 0) {
- if (mkdir(LOCK_DIR, 0660) != 0) {
- _error(ctx, "Could not open %s: %d %s", LOCK_DIR, errno,
- _strerror(errno, strerr_buff));
- return LIBISCSI_ERR_IDBM;
- }
+ if (((mkdir(LOCK_DIR, 0770) != 0) && (errno != EEXIST)) ||
+ if (((mkdir(LOCK_DIR, 0660) != 0) && (errno != EEXIST)) ||
+ (access(LOCK_DIR, F_OK) != 0)) {
+ _error(ctx, "Could not open %s: %d %s", LOCK_DIR, errno,
+ _strerror(errno, strerr_buff));
@ -61,20 +61,20 @@ index 0910c63..6213e62 100644
fd = open(LOCK_FILE, O_RDWR | O_CREAT, 0666);
diff --git a/usr/idbm.c b/usr/idbm.c
index b33ae42..1ac0b73 100644
index 2498a03..a4bc745 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -1461,12 +1461,10 @@ int idbm_lock(void)
@@ -1439,12 +1439,10 @@ int idbm_lock(void)
return 0;
}
- if (access(LOCK_DIR, F_OK) != 0) {
- if (mkdir(LOCK_DIR, 0770) != 0) {
- if (mkdir(LOCK_DIR, 0660) != 0) {
- log_error("Could not open %s: %s", LOCK_DIR,
- strerror(errno));
- return ISCSI_ERR_IDBM;
- }
+ if (((mkdir(LOCK_DIR, 0770) != 0) && (errno != EEXIST)) ||
+ if (((mkdir(LOCK_DIR, 0660) != 0) && (errno != EEXIST)) ||
+ (access(LOCK_DIR, F_OK) != 0)) {
+ log_error("Could not open %s: %s", LOCK_DIR, strerror(errno));
+ return ISCSI_ERR_IDBM;
@ -82,10 +82,10 @@ index b33ae42..1ac0b73 100644
fd = open(LOCK_FILE, O_RDWR | O_CREAT, 0666);
diff --git a/usr/iscsid.c b/usr/iscsid.c
index dc54fec..fde8894 100644
index e501498..dd94a16 100644
--- a/usr/iscsid.c
+++ b/usr/iscsid.c
@@ -510,8 +510,8 @@ int main(int argc, char *argv[])
@@ -495,8 +495,8 @@ int main(int argc, char *argv[])
log_close(log_pid);
exit(ISCSI_ERR);
}
@ -96,5 +96,5 @@ index dc54fec..fde8894 100644
if ((control_fd = ipc->ctldev_open()) < 0) {
log_close(log_pid);
--
2.31.1
2.26.2

View File

@ -1,25 +1,29 @@
From 8bcaf32662ff762c2cab3d4b1f96c38965304e30 Mon Sep 17 00:00:00 2001
From c852ca6300bc3fcf765744506222ff6da4296127 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Wed, 16 Oct 2019 23:17:20 -0700
Subject: [PATCH 1/1] fix upstream build breakage of iscsiuio LDFLAGS
Subject: [PATCH] fix upstream build breakage of iscsiuio LDFLAGS
---
iscsiuio/configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
iscsiuio/configure.ac | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/iscsiuio/configure.ac b/iscsiuio/configure.ac
index 9b85448..1b9fb27 100644
index 8099f09..733214d 100644
--- a/iscsiuio/configure.ac
+++ b/iscsiuio/configure.ac
@@ -72,7 +72,7 @@ AC_ARG_WITH([systemd],
@@ -67,10 +67,10 @@ AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])
AC_ARG_WITH([systemd],
AS_HELP_STRING([--without-systemd], [Build without systemd]),
[case "${withval}" in
- yes) LDFLAGS="`pkg-config --libs libsystemd`" ;;
+ yes) LDFLAGS="${LDFLAGS} `pkg-config --libs libsystemd`" ;;
no) CFLAGS="${CFLAGS} -DNO_SYSTEMD" ;;
*) AC_MSG_ERROR([bad value $withval for --with-systemd]) ;;
esac],[with_libsystemd=auto])
AS_IF([test "$with_libsystemd" != no],[
- PKG_CHECK_MODULES([LIBSYSTEMD],[libsystemd],[LDFLAGS=$LIBSYSTEMD_LIBS],[
+ PKG_CHECK_MODULES([LIBSYSTEMD],[libsystemd],[LDFLAGS="${LDFLAGS} $LIBSYSTEMD_LIBS"],[
if test "$with_libsystemd" = yes; then
AC_MSG_ERROR([could not find libsystemd using pkg-config])
else
--
2.31.1
- esac],[LDFLAGS="`pkg-config --libs libsystemd`"])
+ esac],[LDFLAGS="${LDFLAGS} `pkg-config --libs libsystemd`"])
AC_CONFIG_COMMANDS([default],[[
if [ -n "$SOURCE_DATE_EPOCH" ] ; then
--
2.26.2

View File

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

View File

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

View File

@ -0,0 +1,96 @@
From 13affd82b8248b954d10eb4fd3d544796360fafd Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Wed, 17 Feb 2021 09:56:55 -0800
Subject: [PATCH] libopeniscsiusr: fix error messages
The error message in iscsi_session_get [libopeniscsiusr/session.c:140]
when a session or connection path isn't found in sysfs was failing to
print the session ID, instead it printed the address of the static
string for the remainder of the message ("does not exists") due to an
extra comma.
Additionally change all occurances of "does not exists" to "does not
exist"
Signed-off-by: Chris Leech <cleech@redhat.com>
---
libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h | 2 +-
libopeniscsiusr/session.c | 6 +++---
libopeniscsiusr/sysfs.c | 8 ++++----
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h b/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h
index 4395902..a29d5b1 100644
--- a/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h
+++ b/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h
@@ -288,7 +288,7 @@ __DLL_EXPORT void iscsi_sessions_free(struct iscsi_session **ses,
* Output pointer of 'struct iscsi_session' pointer. Its memory
* should be freed by iscsi_session_free().
* If this pointer is NULL, your program will be terminated by assert.
- * If specified iSCSI session does not exists, this pointer will be set to
+ * If specified iSCSI session does not exist, this pointer will be set to
* NULL with LIBISCSI_OK returned.
*
* Return:
diff --git a/libopeniscsiusr/session.c b/libopeniscsiusr/session.c
index 7ace4d6..f122fe3 100644
--- a/libopeniscsiusr/session.c
+++ b/libopeniscsiusr/session.c
@@ -127,17 +127,17 @@ int iscsi_session_get(struct iscsi_context *ctx, uint32_t sid,
_alloc_null_check(ctx, *se , rc, out);
if (! _file_exists(sysfs_se_dir_path)) {
- _info(ctx, "Sysfs path '%s' does not exists",
+ _info(ctx, "Sysfs path '%s' does not exist",
sysfs_se_dir_path);
rc = LIBISCSI_ERR_SESS_NOT_FOUND;
}
if (! _file_exists(sysfs_con_dir_path)) {
- _info(ctx, "Sysfs path '%s' does not exists",
+ _info(ctx, "Sysfs path '%s' does not exist",
sysfs_se_dir_path);
rc = LIBISCSI_ERR_SESS_NOT_FOUND;
}
if (rc == LIBISCSI_ERR_SESS_NOT_FOUND) {
- _error(ctx, "Specified SID %" PRIu32, "does not exists",
+ _error(ctx, "Specified SID %" PRIu32 " does not exist",
sid);
goto out;
}
diff --git a/libopeniscsiusr/sysfs.c b/libopeniscsiusr/sysfs.c
index 2c3f077..355ad55 100644
--- a/libopeniscsiusr/sysfs.c
+++ b/libopeniscsiusr/sysfs.c
@@ -169,11 +169,11 @@ int _sysfs_prop_get_str(struct iscsi_context *ctx, const char *dir_path,
if (default_value == NULL) {
rc = LIBISCSI_ERR_SYSFS_LOOKUP;
_error(ctx, "Failed to read '%s': "
- "file '%s' does not exists", prop_name,
+ "file '%s' does not exist", prop_name,
file_path);
} else {
_info(ctx, "Failed to read '%s': "
- "file '%s' does not exists, "
+ "file '%s' does not exist, "
"using default value %s", prop_name,
file_path, default_value);
memcpy(buff, (void *) default_value,
@@ -244,13 +244,13 @@ static int iscsi_sysfs_prop_get_ll(struct iscsi_context *ctx,
if (! ignore_error) {
rc = LIBISCSI_ERR_SYSFS_LOOKUP;
_error(ctx, "Failed to read '%s': "
- "file '%s' does not exists",
+ "file '%s' does not exist",
prop_name, file_path);
goto out;
} else {
_info(ctx,
"Failed to read '%s': "
- "File '%s' does not exists, using ",
+ "File '%s' does not exist, using ",
"default value %lld",
prop_name, file_path, default_value);
*val = default_value;
--
2.26.2

View File

@ -0,0 +1,60 @@
From a744d91046865416a50ea27f143ef0f02fcaf1c6 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Wed, 17 Feb 2021 12:22:17 -0800
Subject: [PATCH] libopeniscsiusr: skip over removed sessions
When looping over all sessions with iscsi_sessions_get, it's possible to
race against sessions being destroyed and have the sysfs attribute files
be removed before they're read. Let's not treat this as an error, and
simply drop the session that failed to read from the list. I think it
makes sense to treat session that disapear while they're being read as
if they were already gone when the sessions directory was first scanned.
Apparently having iscsiadm exit with an error when trying to get a list
of sessions is a problem for OpenStack deployments.
Signed-off-by: Chris Leech <cleech@redhat.com>
---
libopeniscsiusr/session.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/libopeniscsiusr/session.c b/libopeniscsiusr/session.c
index f122fe3..4a724c8 100644
--- a/libopeniscsiusr/session.c
+++ b/libopeniscsiusr/session.c
@@ -246,6 +246,7 @@ int iscsi_sessions_get(struct iscsi_context *ctx,
{
int rc = LIBISCSI_OK;
uint32_t i = 0;
+ uint32_t j = 0;
uint32_t *sids = NULL;
assert(ctx != NULL);
@@ -264,9 +265,22 @@ int iscsi_sessions_get(struct iscsi_context *ctx,
for (i = 0; i < *session_count; ++i) {
_debug(ctx, "sid %" PRIu32, sids[i]);
- _good(iscsi_session_get(ctx, sids[i], &((*sessions)[i])),
- rc, out);
+ rc = iscsi_session_get(ctx, sids[i], &((*sessions)[j]));
+ if (rc == LIBISCSI_OK) {
+ /* if session info was successfully read from sysfs, advance the sessions pointer */
+ j++;
+ } else {
+ /* if not, just ignore the issue and keep trying with the next session ID,
+ * there's always going to be an inherent race against session removal when collecting
+ * attribute data from sysfs
+ */
+ _debug(ctx, "Problem reading session %" PRIu32 ", skipping.", sids[i]);
+ rc = LIBISCSI_OK;
+ }
}
+ /* reset session count and sessions array length to what we were able to read from sysfs */
+ *session_count = j;
+ *sessions = reallocarray(*sessions, *session_count, sizeof(struct iscsi_session *));
out:
free(sids);
--
2.26.2

View File

@ -0,0 +1,72 @@
From b21066fc07261e05590ccab839bf5eee2249d358 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Wed, 17 Feb 2021 13:48:25 -0800
Subject: [PATCH] libopeniscsiusr: dont error loudly if a session isn't found
when working through iscsi_sessions_get()
Suppress the error message from iscsi_session_get when it's being called
through iscsi_sessions_get now that it's not being treated as an error.
There's no reason to be so alarmed the session being read in isn't
specified exactly.
Signed-off-by: Chris Leech <cleech@redhat.com>
---
libopeniscsiusr/session.c | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/libopeniscsiusr/session.c b/libopeniscsiusr/session.c
index 4a724c8..6b06241 100644
--- a/libopeniscsiusr/session.c
+++ b/libopeniscsiusr/session.c
@@ -101,8 +101,8 @@ _iscsi_getter_func_gen(iscsi_session, address, const char *);
_iscsi_getter_func_gen(iscsi_session, port, int32_t);
_iscsi_getter_func_gen(iscsi_session, iface, struct iscsi_iface *);
-int iscsi_session_get(struct iscsi_context *ctx, uint32_t sid,
- struct iscsi_session **se)
+int _iscsi_session_get(struct iscsi_context *ctx, uint32_t sid,
+ struct iscsi_session **se, bool verbose)
{
int rc = LIBISCSI_OK;
char *sysfs_se_dir_path = NULL;
@@ -137,8 +137,14 @@ int iscsi_session_get(struct iscsi_context *ctx, uint32_t sid,
rc = LIBISCSI_ERR_SESS_NOT_FOUND;
}
if (rc == LIBISCSI_ERR_SESS_NOT_FOUND) {
- _error(ctx, "Specified SID %" PRIu32 " does not exist",
- sid);
+ /* don't complain loudly if called through iscsi_sessions_get()
+ * the caller is not looking for a specific session,
+ * and the list could be changing as we work through it
+ */
+ if (verbose) {
+ _error(ctx, "Specified SID %" PRIu32 " does not exist",
+ sid);
+ }
goto out;
}
@@ -240,6 +246,11 @@ out:
return rc;
}
+int iscsi_session_get(struct iscsi_context *ctx, uint32_t sid,
+ struct iscsi_session **se) {
+ return _iscsi_session_get(ctx, sid, se, true);
+}
+
int iscsi_sessions_get(struct iscsi_context *ctx,
struct iscsi_session ***sessions,
uint32_t *session_count)
@@ -265,7 +276,7 @@ int iscsi_sessions_get(struct iscsi_context *ctx,
for (i = 0; i < *session_count; ++i) {
_debug(ctx, "sid %" PRIu32, sids[i]);
- rc = iscsi_session_get(ctx, sids[i], &((*sessions)[j]));
+ rc = _iscsi_session_get(ctx, sids[i], &((*sessions)[j]), false);
if (rc == LIBISCSI_OK) {
/* if session info was successfully read from sysfs, advance the sessions pointer */
j++;
--
2.26.2

View File

@ -1,6 +1,6 @@
%global open_iscsi_version 2.1
%global open_iscsi_build 4
%global commit0 095f59ca464220eae285de6b5f2ee31185a6a84c
%global open_iscsi_build 2
%global commit0 a8fcb3737cabcf79a3a3663f43930a158d606782
%global shortcommit0 %(c=%{commit0}; echo ${c:0:7})
%if 0%{?rhel} > 7
@ -13,7 +13,7 @@
Summary: iSCSI daemon and utility programs
Name: iscsi-initiator-utils
Version: 6.%{open_iscsi_version}.%{open_iscsi_build}
Release: 8.git%{shortcommit0}%{?dist}
Release: 1.git%{shortcommit0}%{?dist}
Group: System Environment/Daemons
License: GPLv2+
URL: http://www.open-iscsi.org
@ -44,7 +44,9 @@ Patch0020: 0020-fix-upstream-build-breakage-of-iscsiuio-LDFLAGS.patch
Patch0021: 0021-use-Red-Hat-version-string-to-match-RPM-package-vers.patch
Patch0022: 0022-iscsi_if.h-replace-zero-length-array-with-flexible-a.patch
Patch0023: 0023-stop-using-Werror-for-now.patch
Patch0024: 0024-iscsistart-fix-null-pointer-deref-before-exit.patch
Patch0024: 0024-libopeniscsiusr-fix-error-messages.patch
Patch0025: 0025-libopeniscsiusr-skip-over-removed-sessions.patch
Patch0026: 0026-libopeniscsiusr-dont-error-loudly-if-a-session-isn-t.patch
BuildRequires: flex bison doxygen kmod-devel systemd-units
BuildRequires: autoconf automake libtool libmount-devel openssl-devel
@ -299,8 +301,7 @@ fi
%dir %{_sharedstatedir}/iscsi/slp
%dir %{_sharedstatedir}/iscsi/ifaces
%dir %{_sharedstatedir}/iscsi/send_targets
%ghost %attr(0700, -, -) %{_rundir}/lock/iscsi
%ghost %attr(0600, -, -) %{_rundir}/lock/iscsi/lock
%ghost %{_rundir}/lock/iscsi
%{_unitdir}/iscsi.service
%{_unitdir}/iscsi-onboot.service
# %%{_unitdir}/iscsi-init.service
@ -364,27 +365,6 @@ fi
%{python3_sitearch}/*
%changelog
* Thu Jun 15 2023 Chris Leech <cleech@redhat.com> - 6.2.1.4-8.git095f59c
- fix gating test
* Thu Jun 15 2023 Chris Leech <cleech@redhat.com> - 6.2.1.4-7.git095f59c
- move tests to tmt framework
* Tue Jun 13 2023 Chris Leech <cleech@redhat.com> - 6.2.1.4-6.git095f59c
- restore missing gating tests
* Wed Jun 07 2023 Chris Leech <cleech@redhat.com> - 6.2.1.4-5.git095f59c
- 2131090 fix idbm patch to not overwrite upstream changes in file mode
* Mon Aug 09 2021 Chris Leech <cleech@redhat.com> - 6.2.1.4-4.git095f59c
- 1755907 set proper attr in rpm db for lockfiles, fixes rpm verificiation warning
* Wed Jun 16 2021 Chris Leech <cleech@redhat.com> - 6.2.1.4-3.git095f59c
- coverity found a use-after-free regression in iscsistart
* Mon Jun 14 2021 Chris Leech <cleech@redhat.com> - 6.2.1.4-2.git095f59c
- 1924768 fix unit files for el8, not using iscsi-init
* Fri Mar 12 2021 Chris Leech <cleech@redhat.com> - 6.2.1.2-1.gita8fcb37
- 1924768 iscsiadm -m sessions fails when racing against session login/logout