import iscsi-initiator-utils-6.2.0.876-7.gitf3c8e90.el8
This commit is contained in:
commit
b3152b4b4a
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
SOURCES/open-iscsi-f3c8e90.tar.gz
|
1
.iscsi-initiator-utils.metadata
Normal file
1
.iscsi-initiator-utils.metadata
Normal file
@ -0,0 +1 @@
|
|||||||
|
fdf8ac2fc45f493bdc005bb6739406b65126b31f SOURCES/open-iscsi-f3c8e90.tar.gz
|
54
SOURCES/0001-idmb_rec_write-check-for-tpgt-first.patch
Normal file
54
SOURCES/0001-idmb_rec_write-check-for-tpgt-first.patch
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
From dbec0a5b7737142f8a1462cdf826c35a78e899b2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Tue, 13 Aug 2013 10:59:44 -0700
|
||||||
|
Subject: [PATCH 01/32] 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 830189f571ea..ab3577878e86 100644
|
||||||
|
--- a/usr/idbm.c
|
||||||
|
+++ b/usr/idbm.c
|
||||||
|
@@ -2042,6 +2042,10 @@ static int idbm_rec_write(node_rec_t *rec)
|
||||||
|
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) {
|
||||||
|
rc = 0;
|
||||||
|
@@ -2050,22 +2054,10 @@ static int idbm_rec_write(node_rec_t *rec)
|
||||||
|
* 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.14.4
|
||||||
|
|
@ -0,0 +1,180 @@
|
|||||||
|
From b9d89091daab823eb2dc72c6c568af7897f83137 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Tue, 13 Aug 2013 11:34:31 -0700
|
||||||
|
Subject: [PATCH 02/32] idbm_rec_write, seperate old and new style writes
|
||||||
|
|
||||||
|
Duplicates a small bit of code, but easier to understand and extened.
|
||||||
|
---
|
||||||
|
usr/idbm.c | 116 +++++++++++++++++++++++++++++++++++++++++--------------------
|
||||||
|
1 file changed, 79 insertions(+), 37 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/usr/idbm.c b/usr/idbm.c
|
||||||
|
index ab3577878e86..21ff61ab2bd8 100644
|
||||||
|
--- a/usr/idbm.c
|
||||||
|
+++ b/usr/idbm.c
|
||||||
|
@@ -2001,7 +2001,7 @@ mkdir_portal:
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int idbm_rec_write(node_rec_t *rec)
|
||||||
|
+static int idbm_rec_write_new(node_rec_t *rec)
|
||||||
|
{
|
||||||
|
struct stat statb;
|
||||||
|
FILE *f;
|
||||||
|
@@ -2013,38 +2013,8 @@ static int idbm_rec_write(node_rec_t *rec)
|
||||||
|
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;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
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);
|
||||||
|
-
|
||||||
|
- 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) {
|
||||||
|
@@ -2065,11 +2035,11 @@ static int idbm_rec_write(node_rec_t *rec)
|
||||||
|
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:
|
||||||
|
@@ -2080,24 +2050,96 @@ 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:
|
||||||
|
+/* 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;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int idbm_rec_write(node_rec_t *rec)
|
||||||
|
+{
|
||||||
|
+ 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;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ 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);
|
||||||
|
+
|
||||||
|
idbm_unlock();
|
||||||
|
free_portal:
|
||||||
|
free(portal);
|
||||||
|
--
|
||||||
|
2.14.4
|
||||||
|
|
@ -0,0 +1,87 @@
|
|||||||
|
From 7ba6464018daac1b150335bb73d272761d2cbfe5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Tue, 13 Aug 2013 12:39:07 -0700
|
||||||
|
Subject: [PATCH 03/32] 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 21ff61ab2bd8..cd705fa2b033 100644
|
||||||
|
--- a/usr/idbm.c
|
||||||
|
+++ b/usr/idbm.c
|
||||||
|
@@ -28,6 +28,7 @@
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
+#include <glob.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/file.h>
|
||||||
|
|
||||||
|
@@ -163,6 +164,8 @@ static struct idbm *db;
|
||||||
|
_n++; \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
+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)
|
||||||
|
{
|
||||||
|
@@ -2077,12 +2080,49 @@ static int idbm_rec_write_old(node_rec_t *rec)
|
||||||
|
FILE *f;
|
||||||
|
char *portal;
|
||||||
|
int rc = 0;
|
||||||
|
+ glob_t globbuf;
|
||||||
|
+ int 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.14.4
|
||||||
|
|
@ -0,0 +1,93 @@
|
|||||||
|
From 33076c9c1e975ea3225923d66ae24648c0c82a7f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Wed, 19 Dec 2012 15:07:36 -0800
|
||||||
|
Subject: [PATCH 04/32] update systemd service files, add iscsi.service for
|
||||||
|
starting sessions on boot
|
||||||
|
|
||||||
|
Signed-off-by: Chris Leech <cleech@redhat.com>
|
||||||
|
---
|
||||||
|
etc/systemd/iscsi.service | 19 +++++++++++++++++++
|
||||||
|
etc/systemd/iscsi_mark_root_nodes | 14 ++++++++++++++
|
||||||
|
etc/systemd/iscsid.service | 7 +++++--
|
||||||
|
etc/systemd/iscsid.socket | 2 +-
|
||||||
|
4 files changed, 39 insertions(+), 3 deletions(-)
|
||||||
|
create mode 100644 etc/systemd/iscsi.service
|
||||||
|
create mode 100755 etc/systemd/iscsi_mark_root_nodes
|
||||||
|
|
||||||
|
diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..bbd52fd66890
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/etc/systemd/iscsi.service
|
||||||
|
@@ -0,0 +1,19 @@
|
||||||
|
+[Unit]
|
||||||
|
+Description=Login and scanning of iSCSI devices
|
||||||
|
+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
|
||||||
|
+ConditionPathExists=/etc/iscsi/initiatorname.iscsi
|
||||||
|
+
|
||||||
|
+[Service]
|
||||||
|
+Type=oneshot
|
||||||
|
+RemainAfterExit=true
|
||||||
|
+ExecStart=/usr/libexec/iscsi_mark_root_nodes
|
||||||
|
+ExecStart=/sbin/iscsiadm -m node --loginall=automatic
|
||||||
|
+ExecStop=/bin/sync
|
||||||
|
+ExecStop=/sbin/iscsiadm -m node --logoutall=automatic
|
||||||
|
+
|
||||||
|
+[Install]
|
||||||
|
+WantedBy=sysinit.target
|
||||||
|
diff --git a/etc/systemd/iscsi_mark_root_nodes b/etc/systemd/iscsi_mark_root_nodes
|
||||||
|
new file mode 100755
|
||||||
|
index 000000000000..c68475c44de5
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/etc/systemd/iscsi_mark_root_nodes
|
||||||
|
@@ -0,0 +1,14 @@
|
||||||
|
+#!/bin/bash
|
||||||
|
+
|
||||||
|
+ISCSIADM=/sbin/iscsiadm
|
||||||
|
+SESSION_FILE=/run/initramfs/iscsi.sessions
|
||||||
|
+
|
||||||
|
+if [ ! -f $SESSION_FILE ] ; then
|
||||||
|
+ exit 0
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
+while read t num i target; do
|
||||||
|
+ ip=${i%:*}
|
||||||
|
+ $ISCSIADM -m node -p $ip -T $target -o update -n node.startup -v onboot
|
||||||
|
+done < $SESSION_FILE
|
||||||
|
+
|
||||||
|
diff --git a/etc/systemd/iscsid.service b/etc/systemd/iscsid.service
|
||||||
|
index 028e0b3f4e59..653dd085bbdd 100644
|
||||||
|
--- a/etc/systemd/iscsid.service
|
||||||
|
+++ b/etc/systemd/iscsid.service
|
||||||
|
@@ -1,7 +1,10 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Open-iSCSI
|
||||||
|
-Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8)
|
||||||
|
-After=network.target NetworkManager-wait-online.service iscsiuio.service tgtd.service targetcli.service
|
||||||
|
+Documentation=man:iscsid(8) man:iscsiadm(8)
|
||||||
|
+DefaultDependencies=no
|
||||||
|
+Conflicts=shutdown.target
|
||||||
|
+After=network.target iscsiuio.service
|
||||||
|
+Before=remote-fs-pre.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=forking
|
||||||
|
diff --git a/etc/systemd/iscsid.socket b/etc/systemd/iscsid.socket
|
||||||
|
index 832451d7a0ce..58a8d1239996 100644
|
||||||
|
--- a/etc/systemd/iscsid.socket
|
||||||
|
+++ b/etc/systemd/iscsid.socket
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Open-iSCSI iscsid Socket
|
||||||
|
-Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8)
|
||||||
|
+Documentation=man:iscsid(8) man:iscsiadm(8)
|
||||||
|
|
||||||
|
[Socket]
|
||||||
|
ListenStream=@ISCSIADM_ABSTRACT_NAMESPACE
|
||||||
|
--
|
||||||
|
2.14.4
|
||||||
|
|
75
SOURCES/0005-iscsi-boot-related-service-file-updates.patch
Normal file
75
SOURCES/0005-iscsi-boot-related-service-file-updates.patch
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
From 5dd8fc7d27204a3461b33defed1e0bb4331c7663 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Mon, 19 Aug 2013 07:18:25 -0700
|
||||||
|
Subject: [PATCH 05/32] iscsi boot related service file updates
|
||||||
|
|
||||||
|
make sure iscsid gets started if there are any boot sessions running
|
||||||
|
add reload target to fix double session problem when restarting from NM
|
||||||
|
don't rely on session list passed from initrd, never got fully implemented
|
||||||
|
---
|
||||||
|
etc/systemd/iscsi-mark-root-nodes | 13 +++++++++++++
|
||||||
|
etc/systemd/iscsi.service | 3 ++-
|
||||||
|
etc/systemd/iscsi_mark_root_nodes | 14 --------------
|
||||||
|
3 files changed, 15 insertions(+), 15 deletions(-)
|
||||||
|
create mode 100644 etc/systemd/iscsi-mark-root-nodes
|
||||||
|
delete mode 100755 etc/systemd/iscsi_mark_root_nodes
|
||||||
|
|
||||||
|
diff --git a/etc/systemd/iscsi-mark-root-nodes b/etc/systemd/iscsi-mark-root-nodes
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..157be62b4041
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/etc/systemd/iscsi-mark-root-nodes
|
||||||
|
@@ -0,0 +1,13 @@
|
||||||
|
+#!/bin/bash
|
||||||
|
+
|
||||||
|
+ISCSIADM=/sbin/iscsiadm
|
||||||
|
+
|
||||||
|
+$ISCSIADM -m session >/dev/null 2>&1 || exit 0
|
||||||
|
+
|
||||||
|
+$ISCSIADM -m session | while read t num i target; do
|
||||||
|
+ ip=${i%:*}
|
||||||
|
+ $ISCSIADM -m node -p $ip -T $target -o update -n node.startup -v onboot
|
||||||
|
+done
|
||||||
|
+
|
||||||
|
+systemctl start iscsid.service
|
||||||
|
+
|
||||||
|
diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service
|
||||||
|
index bbd52fd66890..0309e2fc9892 100644
|
||||||
|
--- a/etc/systemd/iscsi.service
|
||||||
|
+++ b/etc/systemd/iscsi.service
|
||||||
|
@@ -10,10 +10,11 @@ ConditionPathExists=/etc/iscsi/initiatorname.iscsi
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
RemainAfterExit=true
|
||||||
|
-ExecStart=/usr/libexec/iscsi_mark_root_nodes
|
||||||
|
+ExecStart=/usr/libexec/iscsi-mark-root-nodes
|
||||||
|
ExecStart=/sbin/iscsiadm -m node --loginall=automatic
|
||||||
|
ExecStop=/bin/sync
|
||||||
|
ExecStop=/sbin/iscsiadm -m node --logoutall=automatic
|
||||||
|
+ExecReload=/sbin/iscsiadm -m node --loginall=automatic
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=sysinit.target
|
||||||
|
diff --git a/etc/systemd/iscsi_mark_root_nodes b/etc/systemd/iscsi_mark_root_nodes
|
||||||
|
deleted file mode 100755
|
||||||
|
index c68475c44de5..000000000000
|
||||||
|
--- a/etc/systemd/iscsi_mark_root_nodes
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,14 +0,0 @@
|
||||||
|
-#!/bin/bash
|
||||||
|
-
|
||||||
|
-ISCSIADM=/sbin/iscsiadm
|
||||||
|
-SESSION_FILE=/run/initramfs/iscsi.sessions
|
||||||
|
-
|
||||||
|
-if [ ! -f $SESSION_FILE ] ; then
|
||||||
|
- exit 0
|
||||||
|
-fi
|
||||||
|
-
|
||||||
|
-while read t num i target; do
|
||||||
|
- ip=${i%:*}
|
||||||
|
- $ISCSIADM -m node -p $ip -T $target -o update -n node.startup -v onboot
|
||||||
|
-done < $SESSION_FILE
|
||||||
|
-
|
||||||
|
--
|
||||||
|
2.14.4
|
||||||
|
|
127
SOURCES/0006-update-initscripts-and-docs.patch
Normal file
127
SOURCES/0006-update-initscripts-and-docs.patch
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
From 2e6f564ebb3c85cb9a457d282b845374776a54ae Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Mon, 19 Nov 2012 16:37:13 -0800
|
||||||
|
Subject: [PATCH 06/32] update initscripts and docs
|
||||||
|
|
||||||
|
---
|
||||||
|
README | 10 ++++------
|
||||||
|
etc/iscsid.conf | 21 ++++++++++-----------
|
||||||
|
usr/idbm.c | 4 ++++
|
||||||
|
3 files changed, 18 insertions(+), 17 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/README b/README
|
||||||
|
index 2499d9a7b638..c05814a2593b 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
|
||||||
|
@@ -1151,7 +1146,7 @@ Red Hat or Fedora:
|
||||||
|
-----------------
|
||||||
|
To start open-iscsi in Red Hat/Fedora you can do:
|
||||||
|
|
||||||
|
- service open-iscsi start
|
||||||
|
+ service iscsi start
|
||||||
|
|
||||||
|
To get open-iscsi to automatically start at run time you may have to
|
||||||
|
run:
|
||||||
|
@@ -1353,6 +1348,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 fee11482a09b..3539ac4cd578 100644
|
||||||
|
--- a/etc/iscsid.conf
|
||||||
|
+++ b/etc/iscsid.conf
|
||||||
|
@@ -19,7 +19,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.soccket
|
||||||
|
+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
|
||||||
|
@@ -264,28 +264,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 cd705fa2b033..0aa3870a76fd 100644
|
||||||
|
--- a/usr/idbm.c
|
||||||
|
+++ b/usr/idbm.c
|
||||||
|
@@ -518,9 +518,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.14.4
|
||||||
|
|
241
SOURCES/0007-use-var-for-config.patch
Normal file
241
SOURCES/0007-use-var-for-config.patch
Normal file
@ -0,0 +1,241 @@
|
|||||||
|
From 478527833bdb8ebc9f4523c54e544b244bfe76f1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Mon, 19 Nov 2012 16:38:45 -0800
|
||||||
|
Subject: [PATCH 07/32] use var for config
|
||||||
|
|
||||||
|
---
|
||||||
|
README | 33 ++++++++++++++++-----------------
|
||||||
|
doc/iscsiadm.8 | 8 ++++----
|
||||||
|
usr/idbm.c | 6 +++---
|
||||||
|
usr/idbm.h | 13 +++++++------
|
||||||
|
usr/iface.h | 3 ++-
|
||||||
|
5 files changed, 32 insertions(+), 31 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/README b/README
|
||||||
|
index c05814a2593b..326c3b01e608 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:
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
-a iface config /etc/iscsi/ifaces.
|
||||||
|
+a iface config /var/lib/iscsi/ifaces.
|
||||||
|
|
||||||
|
Prep
|
||||||
|
----
|
||||||
|
@@ -594,7 +593,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
|
||||||
|
@@ -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
|
||||||
|
-/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
|
||||||
|
@@ -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
|
||||||
|
-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
|
||||||
|
@@ -662,7 +661,7 @@ port. The iface name will be of the form:
|
||||||
|
Running the following command:
|
||||||
|
iscsiadm -m iface
|
||||||
|
|
||||||
|
-will report iface configurations that are setup in /etc/iscsi/ifaces:
|
||||||
|
+will report iface configurations that are setup in /var/lib/iscsi/ifaces:
|
||||||
|
|
||||||
|
default tcp,<empty>,<empty>,<empty>,<empty>
|
||||||
|
iser iser,<empty>,<empty>,<empty>,<empty>
|
||||||
|
@@ -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
|
||||||
|
-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
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
-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.
|
||||||
|
|
||||||
|
@@ -793,7 +792,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
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
- 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
|
||||||
|
@@ -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
|
||||||
|
- /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
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
-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.
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
-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 a82805e28fb9..758a47c2d1fe 100644
|
||||||
|
--- a/doc/iscsiadm.8
|
||||||
|
+++ b/doc/iscsiadm.8
|
||||||
|
@@ -241,7 +241,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
|
||||||
|
@@ -703,10 +703,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"
|
||||||
|
diff --git a/usr/idbm.c b/usr/idbm.c
|
||||||
|
index 0aa3870a76fd..ec33ce905dc1 100644
|
||||||
|
--- a/usr/idbm.c
|
||||||
|
+++ b/usr/idbm.c
|
||||||
|
@@ -2926,9 +2926,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, 0660) != 0) {
|
||||||
|
- log_error("Could not make %s %d", ISCSI_CONFIG_ROOT,
|
||||||
|
+ if (access(ISCSIVAR, F_OK) != 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 b83c0bb1cca8..2b05d7871be9 100644
|
||||||
|
--- a/usr/idbm.h
|
||||||
|
+++ b/usr/idbm.h
|
||||||
|
@@ -29,12 +29,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 6c06f7f7d450..c8b9de9a7c3a 100644
|
||||||
|
--- a/usr/iface.h
|
||||||
|
+++ b/usr/iface.h
|
||||||
|
@@ -21,8 +21,9 @@
|
||||||
|
#define ISCSI_IFACE_H
|
||||||
|
|
||||||
|
#include <libopeniscsiusr/libopeniscsiusr.h>
|
||||||
|
+#include "idbm.h"
|
||||||
|
|
||||||
|
-#define IFACE_CONFIG_DIR ISCSI_CONFIG_ROOT"ifaces"
|
||||||
|
+#define IFACE_CONFIG_DIR ISCSIVAR"ifaces"
|
||||||
|
|
||||||
|
struct iface_rec;
|
||||||
|
struct list_head;
|
||||||
|
--
|
||||||
|
2.14.4
|
||||||
|
|
39
SOURCES/0008-use-red-hat-for-name.patch
Normal file
39
SOURCES/0008-use-red-hat-for-name.patch
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
From ea35362504329e7fe86f4af17a88bed009c5069c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Mon, 19 Nov 2012 16:40:04 -0800
|
||||||
|
Subject: [PATCH 08/32] 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 a55d666d1af3..dd77ed9f3165 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.2005-03.org.open-iscsi"
|
||||||
|
+Use the prefix passed in instead of the default "iqn.1994-05.com.redhat"
|
||||||
|
|
||||||
|
.SH AUTHORS
|
||||||
|
Open-iSCSI project <http://www.open-iscsi.com/>
|
||||||
|
diff --git a/utils/iscsi-iname.c b/utils/iscsi-iname.c
|
||||||
|
index 6347edc46293..cb2f6c8b8651 100644
|
||||||
|
--- a/utils/iscsi-iname.c
|
||||||
|
+++ b/utils/iscsi-iname.c
|
||||||
|
@@ -73,7 +73,7 @@ main(int argc, char *argv[])
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
- prefix = "iqn.2005-03.org.open-iscsi";
|
||||||
|
+ prefix = "iqn.1994-05.com.redhat";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* try to feed some entropy from the pool to MD5 in order to get
|
||||||
|
--
|
||||||
|
2.14.4
|
||||||
|
|
4014
SOURCES/0009-libiscsi.patch
Normal file
4014
SOURCES/0009-libiscsi.patch
Normal file
File diff suppressed because it is too large
Load Diff
45
SOURCES/0010-remove-the-offload-boot-supported-ifdef.patch
Normal file
45
SOURCES/0010-remove-the-offload-boot-supported-ifdef.patch
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
From 71b576b10a03651f67173d19883a929e91a3423a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Mon, 19 Nov 2012 17:09:24 -0800
|
||||||
|
Subject: [PATCH 10/32] 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 137138f5af67..889fe8cd8202 100644
|
||||||
|
--- a/usr/iface.c
|
||||||
|
+++ b/usr/iface.c
|
||||||
|
@@ -993,6 +993,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,
|
||||||
|
@@ -1006,10 +1007,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 */
|
||||||
|
@@ -1035,9 +1033,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.14.4
|
||||||
|
|
53
SOURCES/0011-iscsiuio-systemd-unit-files.patch
Normal file
53
SOURCES/0011-iscsiuio-systemd-unit-files.patch
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
From f16f7f90721c9d6965e48c7338a600d23b58e19d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Tue, 22 Jan 2013 14:27:12 -0800
|
||||||
|
Subject: [PATCH 11/32] iscsiuio systemd unit files
|
||||||
|
|
||||||
|
---
|
||||||
|
etc/systemd/iscsiuio.service | 17 +++++++++++++++++
|
||||||
|
etc/systemd/iscsiuio.socket | 9 +++++++++
|
||||||
|
2 files changed, 26 insertions(+)
|
||||||
|
create mode 100644 etc/systemd/iscsiuio.service
|
||||||
|
create mode 100644 etc/systemd/iscsiuio.socket
|
||||||
|
|
||||||
|
diff --git a/etc/systemd/iscsiuio.service b/etc/systemd/iscsiuio.service
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..f0410b76b80e
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/etc/systemd/iscsiuio.service
|
||||||
|
@@ -0,0 +1,17 @@
|
||||||
|
+[Unit]
|
||||||
|
+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
|
||||||
|
+
|
||||||
|
+[Service]
|
||||||
|
+Type=forking
|
||||||
|
+PIDFile=/var/run/iscsiuio.pid
|
||||||
|
+ExecStart=/usr/sbin/iscsiuio
|
||||||
|
+
|
||||||
|
+[Install]
|
||||||
|
+WantedBy=multi-user.target
|
||||||
|
diff --git a/etc/systemd/iscsiuio.socket b/etc/systemd/iscsiuio.socket
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..d42cedc161a3
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/etc/systemd/iscsiuio.socket
|
||||||
|
@@ -0,0 +1,9 @@
|
||||||
|
+[Unit]
|
||||||
|
+Description=Open-iSCSI iscsiuio Socket
|
||||||
|
+Documentation=man:iscsiuio(8)
|
||||||
|
+
|
||||||
|
+[Socket]
|
||||||
|
+ListenStream=@ISCSID_UIP_ABSTRACT_NAMESPACE
|
||||||
|
+
|
||||||
|
+[Install]
|
||||||
|
+WantedBy=sockets.target
|
||||||
|
--
|
||||||
|
2.14.4
|
||||||
|
|
@ -0,0 +1,30 @@
|
|||||||
|
From 9807bf0a042238891f2008a5a6d70acfd6724b12 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Tue, 28 May 2013 13:12:27 -0700
|
||||||
|
Subject: [PATCH 12/32] Don't check for autostart sessions if iscsi is not used
|
||||||
|
(bug #951951)
|
||||||
|
|
||||||
|
Change conditional startup in iscsi.service to check for a non-empty
|
||||||
|
nodes directory, instead of initiator-name. This fits better with what
|
||||||
|
it's doing, as there's no need to scan for autostart node records if
|
||||||
|
there are no node records at all.
|
||||||
|
---
|
||||||
|
etc/systemd/iscsi.service | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service
|
||||||
|
index 0309e2fc9892..d5712bd3779b 100644
|
||||||
|
--- a/etc/systemd/iscsi.service
|
||||||
|
+++ b/etc/systemd/iscsi.service
|
||||||
|
@@ -5,7 +5,7 @@ DefaultDependencies=no
|
||||||
|
Conflicts=shutdown.target
|
||||||
|
After=systemd-remount-fs.service network.target iscsid.service iscsiuio.service
|
||||||
|
Before=remote-fs-pre.target
|
||||||
|
-ConditionPathExists=/etc/iscsi/initiatorname.iscsi
|
||||||
|
+ConditionDirectoryNotEmpty=/var/lib/iscsi/nodes
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
--
|
||||||
|
2.14.4
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
From 6629618e3581cbe632b7408a49437270bc04a8d4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Mon, 24 Feb 2014 09:33:33 -0800
|
||||||
|
Subject: [PATCH 13/32] Revert "iscsiadm: return error when login fails"
|
||||||
|
|
||||||
|
This reverts commit fc2a8e9a2911bc76f961fe3e4a159fab9b8b9691.
|
||||||
|
|
||||||
|
Done to address RHBZ #1015563
|
||||||
|
---
|
||||||
|
usr/session_mgmt.c | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/usr/session_mgmt.c b/usr/session_mgmt.c
|
||||||
|
index 596085b1f640..07f587d2bafb 100644
|
||||||
|
--- a/usr/session_mgmt.c
|
||||||
|
+++ b/usr/session_mgmt.c
|
||||||
|
@@ -178,12 +178,12 @@ int iscsi_login_portal(void *data, struct list_head *list, struct node_rec *rec)
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
if (session_count >= rec->session.nr_sessions) {
|
||||||
|
- log_warning("%s: %d session%s requested, but %d "
|
||||||
|
+ log_debug(1, "%s: %d session%s requested, but %d "
|
||||||
|
"already present.",
|
||||||
|
rec->iface.name, rec->session.nr_sessions,
|
||||||
|
rec->session.nr_sessions == 1 ? "" : "s",
|
||||||
|
session_count);
|
||||||
|
- rc = ISCSI_ERR_SESS_EXISTS;
|
||||||
|
+ rc = 0;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.14.4
|
||||||
|
|
55
SOURCES/0014-update-handling-of-boot-sessions.patch
Normal file
55
SOURCES/0014-update-handling-of-boot-sessions.patch
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
From c7b743486c6a499a037744760846abdb42959808 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Wed, 26 Feb 2014 16:33:48 -0800
|
||||||
|
Subject: [PATCH 14/32] update handling of boot sessions
|
||||||
|
|
||||||
|
force start iscsiuio if needed, socket activation does not seem to be
|
||||||
|
working for recovery
|
||||||
|
---
|
||||||
|
etc/systemd/iscsi-mark-root-nodes | 29 +++++++++++++++++++++++------
|
||||||
|
1 file changed, 23 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/etc/systemd/iscsi-mark-root-nodes b/etc/systemd/iscsi-mark-root-nodes
|
||||||
|
index 157be62b4041..6bddf6c5ccc1 100644
|
||||||
|
--- a/etc/systemd/iscsi-mark-root-nodes
|
||||||
|
+++ b/etc/systemd/iscsi-mark-root-nodes
|
||||||
|
@@ -1,13 +1,30 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
ISCSIADM=/sbin/iscsiadm
|
||||||
|
+start_iscsid=0
|
||||||
|
+start_iscsiuio=0
|
||||||
|
|
||||||
|
-$ISCSIADM -m session >/dev/null 2>&1 || exit 0
|
||||||
|
+while read t num p target flash; do
|
||||||
|
+ # strip tag number from portal, keep "ip:port"
|
||||||
|
+ portal=${p%,*}
|
||||||
|
+ transport=${t%:}
|
||||||
|
|
||||||
|
-$ISCSIADM -m session | while read t num i target; do
|
||||||
|
- ip=${i%:*}
|
||||||
|
- $ISCSIADM -m node -p $ip -T $target -o update -n node.startup -v onboot
|
||||||
|
-done
|
||||||
|
+ $ISCSIADM -m node -p $portal -T $target -o update -n node.startup -v onboot
|
||||||
|
|
||||||
|
-systemctl start iscsid.service
|
||||||
|
+ 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
|
||||||
|
|
||||||
|
--
|
||||||
|
2.14.4
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
From f349a706ec083574fbf7ed1e479fdfebde7023b8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Fri, 14 Mar 2014 09:22:21 -0700
|
||||||
|
Subject: [PATCH 15/32] update iscsi.service for boot session recovery
|
||||||
|
|
||||||
|
---
|
||||||
|
etc/systemd/iscsi.service | 5 +++--
|
||||||
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service
|
||||||
|
index d5712bd3779b..3de76c5b07ec 100644
|
||||||
|
--- a/etc/systemd/iscsi.service
|
||||||
|
+++ b/etc/systemd/iscsi.service
|
||||||
|
@@ -5,14 +5,15 @@ DefaultDependencies=no
|
||||||
|
Conflicts=shutdown.target
|
||||||
|
After=systemd-remount-fs.service network.target iscsid.service iscsiuio.service
|
||||||
|
Before=remote-fs-pre.target
|
||||||
|
-ConditionDirectoryNotEmpty=/var/lib/iscsi/nodes
|
||||||
|
+ConditionDirectoryNotEmpty=|/var/lib/iscsi/nodes
|
||||||
|
+ConditionDirectoryNotEmpty=|/sys/class/iscsi_session
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
RemainAfterExit=true
|
||||||
|
ExecStart=/usr/libexec/iscsi-mark-root-nodes
|
||||||
|
+SuccessExitStatus=21
|
||||||
|
ExecStart=/sbin/iscsiadm -m node --loginall=automatic
|
||||||
|
-ExecStop=/bin/sync
|
||||||
|
ExecStop=/sbin/iscsiadm -m node --logoutall=automatic
|
||||||
|
ExecReload=/sbin/iscsiadm -m node --loginall=automatic
|
||||||
|
|
||||||
|
--
|
||||||
|
2.14.4
|
||||||
|
|
41
SOURCES/0016-updates-to-iscsi.service.patch
Normal file
41
SOURCES/0016-updates-to-iscsi.service.patch
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
From 954ab51516734aaeed01a195a6e70b825b0bf10a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Wed, 17 Sep 2014 09:58:39 -0700
|
||||||
|
Subject: [PATCH 16/32] updates to iscsi.service
|
||||||
|
|
||||||
|
Resolves: #1126524
|
||||||
|
Resolves: #1111925
|
||||||
|
---
|
||||||
|
etc/systemd/iscsi.service | 10 +++++-----
|
||||||
|
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service
|
||||||
|
index 3de76c5b07ec..ad7be34d5918 100644
|
||||||
|
--- a/etc/systemd/iscsi.service
|
||||||
|
+++ b/etc/systemd/iscsi.service
|
||||||
|
@@ -5,17 +5,17 @@ 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
|
||||||
|
ConditionDirectoryNotEmpty=|/var/lib/iscsi/nodes
|
||||||
|
ConditionDirectoryNotEmpty=|/sys/class/iscsi_session
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
RemainAfterExit=true
|
||||||
|
-ExecStart=/usr/libexec/iscsi-mark-root-nodes
|
||||||
|
-SuccessExitStatus=21
|
||||||
|
-ExecStart=/sbin/iscsiadm -m node --loginall=automatic
|
||||||
|
-ExecStop=/sbin/iscsiadm -m node --logoutall=automatic
|
||||||
|
-ExecReload=/sbin/iscsiadm -m node --loginall=automatic
|
||||||
|
+ExecStart=-/usr/libexec/iscsi-mark-root-nodes
|
||||||
|
+ExecStart=-/sbin/iscsiadm -m node --loginall=automatic
|
||||||
|
+ExecStop=-/sbin/iscsiadm -m node --logoutall=automatic
|
||||||
|
+ExecReload=-/sbin/iscsiadm -m node --loginall=automatic
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=sysinit.target
|
||||||
|
--
|
||||||
|
2.14.4
|
||||||
|
|
@ -0,0 +1,55 @@
|
|||||||
|
From 3815643d7db65487fa2b7058dd612ddf2549f85a Mon Sep 17 00:00:00 2001
|
||||||
|
From: rpm-build <rpm-build>
|
||||||
|
Date: Tue, 13 Jan 2015 16:30:01 -0800
|
||||||
|
Subject: [PATCH 17/32] make-session-shutdown-a-seperate-service.patch
|
||||||
|
|
||||||
|
---
|
||||||
|
etc/systemd/iscsi-shutdown.service | 14 ++++++++++++++
|
||||||
|
etc/systemd/iscsi.service | 3 +--
|
||||||
|
2 files changed, 15 insertions(+), 2 deletions(-)
|
||||||
|
create mode 100644 etc/systemd/iscsi-shutdown.service
|
||||||
|
|
||||||
|
diff --git a/etc/systemd/iscsi-shutdown.service b/etc/systemd/iscsi-shutdown.service
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..23758e959ff2
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/etc/systemd/iscsi-shutdown.service
|
||||||
|
@@ -0,0 +1,14 @@
|
||||||
|
+[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
|
||||||
|
+ExecStop=-/sbin/iscsiadm -m node --logoutall=all
|
||||||
|
diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service
|
||||||
|
index ad7be34d5918..27369568bf35 100644
|
||||||
|
--- a/etc/systemd/iscsi.service
|
||||||
|
+++ b/etc/systemd/iscsi.service
|
||||||
|
@@ -5,7 +5,7 @@ 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
|
||||||
|
+Wants=remote-fs-pre.target iscsi-shutdown.service
|
||||||
|
ConditionDirectoryNotEmpty=|/var/lib/iscsi/nodes
|
||||||
|
ConditionDirectoryNotEmpty=|/sys/class/iscsi_session
|
||||||
|
|
||||||
|
@@ -14,7 +14,6 @@ Type=oneshot
|
||||||
|
RemainAfterExit=true
|
||||||
|
ExecStart=-/usr/libexec/iscsi-mark-root-nodes
|
||||||
|
ExecStart=-/sbin/iscsiadm -m node --loginall=automatic
|
||||||
|
-ExecStop=-/sbin/iscsiadm -m node --logoutall=automatic
|
||||||
|
ExecReload=-/sbin/iscsiadm -m node --loginall=automatic
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
--
|
||||||
|
2.14.4
|
||||||
|
|
56
SOURCES/0018-Add-macros-to-release-GIL-lock.patch
Normal file
56
SOURCES/0018-Add-macros-to-release-GIL-lock.patch
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
From bd26fd7e7f91e5c4c6903c3d7e1a375a14261a48 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Konecny <jkonecny@redhat.com>
|
||||||
|
Date: Mon, 11 May 2015 13:16:26 +0200
|
||||||
|
Subject: [PATCH 18/32] 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 88008538f04f..40b59553a28e 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.14.4
|
||||||
|
|
290
SOURCES/0019-libiscsi-introduce-sessions-API.patch
Normal file
290
SOURCES/0019-libiscsi-introduce-sessions-API.patch
Normal file
@ -0,0 +1,290 @@
|
|||||||
|
From 7671cd56d36a76e954318cbdce3f08fc40aa3fe4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hatina <phatina@redhat.com>
|
||||||
|
Date: Mon, 5 Oct 2015 16:50:36 -0700
|
||||||
|
Subject: [PATCH 19/32] libiscsi introduce sessions API
|
||||||
|
|
||||||
|
---
|
||||||
|
libiscsi/libiscsi.c | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
libiscsi/libiscsi.h | 56 +++++++++++++++++++++++
|
||||||
|
usr/iscsi_sysfs.c | 6 +++
|
||||||
|
usr/iscsi_sysfs.h | 2 +
|
||||||
|
4 files changed, 189 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/libiscsi/libiscsi.c b/libiscsi/libiscsi.c
|
||||||
|
index 064e4b570d0b..755c18ca8e3b 100644
|
||||||
|
--- a/libiscsi/libiscsi.c
|
||||||
|
+++ b/libiscsi/libiscsi.c
|
||||||
|
@@ -3,6 +3,7 @@
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008-2009 Red Hat, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2008-2009 Hans de Goede <hdegoede@redhat.com>
|
||||||
|
+ * Copyright (C) 2015 Peter Hatina <phatina@redhat.com>
|
||||||
|
* maintained by open-iscsi@googlegroups.com
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
@@ -469,6 +470,130 @@ leave:
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
+struct libiscsi_session_array {
|
||||||
|
+ int cnt;
|
||||||
|
+ int size;
|
||||||
|
+ struct libiscsi_session_info *data;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static void libiscsi_session_array_init(struct libiscsi_session_array *arr)
|
||||||
|
+{
|
||||||
|
+ arr->cnt = 0;
|
||||||
|
+ arr->size = 0;
|
||||||
|
+ arr->data = NULL;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int libiscsi_session_array_grow(struct libiscsi_session_array *arr)
|
||||||
|
+{
|
||||||
|
+ if (arr->size == 0)
|
||||||
|
+ arr->size = 4;
|
||||||
|
+ else
|
||||||
|
+ arr->size *= 2;
|
||||||
|
+
|
||||||
|
+ arr->data = (struct libiscsi_session_info *) realloc(
|
||||||
|
+ arr->data,
|
||||||
|
+ arr->size * sizeof(struct libiscsi_session_info));
|
||||||
|
+
|
||||||
|
+ return arr->data ? 0 : 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int libiscsi_session_array_grow_ondemand(struct libiscsi_session_array *arr)
|
||||||
|
+{
|
||||||
|
+ if (arr->size == arr->cnt)
|
||||||
|
+ return libiscsi_session_array_grow(arr);
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int libiscsi_session_array_resize_precize(struct libiscsi_session_array *arr)
|
||||||
|
+{
|
||||||
|
+ arr->data = (struct libiscsi_session_info *) realloc(
|
||||||
|
+ arr->data,
|
||||||
|
+ arr->cnt * sizeof(struct libiscsi_session_info));
|
||||||
|
+ arr->size = arr->cnt;
|
||||||
|
+
|
||||||
|
+ return arr->data ? 0 : 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void copy_session_info_to_libiscsi_session_info(
|
||||||
|
+ struct libiscsi_session_info *info,
|
||||||
|
+ struct session_info *s_info)
|
||||||
|
+{
|
||||||
|
+ /* Copy session info to public struct. */
|
||||||
|
+ info->sid = s_info->sid;
|
||||||
|
+ /* Timeouts */
|
||||||
|
+ memcpy(&info->tmo, &s_info->tmo, sizeof(struct libiscsi_session_timeout));
|
||||||
|
+ /* CHAP authentication information */
|
||||||
|
+ memcpy(&info->chap, &s_info->chap, sizeof(struct libiscsi_chap_auth_info));
|
||||||
|
+ /* Target information */
|
||||||
|
+ strncpy(info->targetname, s_info->targetname, LIBISCSI_VALUE_MAXLEN);
|
||||||
|
+ strncpy(info->address, s_info->address, NI_MAXHOST);
|
||||||
|
+ strncpy(info->persistent_address, s_info->persistent_address, NI_MAXHOST);
|
||||||
|
+ info->tpgt = s_info->tpgt;
|
||||||
|
+ info->persistent_port = s_info->persistent_port;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int get_sessions_helper(void *data, struct session_info *s_info)
|
||||||
|
+{
|
||||||
|
+ struct libiscsi_session_array *arr = (struct libiscsi_session_array *) data;
|
||||||
|
+
|
||||||
|
+ if (libiscsi_session_array_grow_ondemand(arr) != 0)
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+ copy_session_info_to_libiscsi_session_info(&arr->data[arr->cnt++], s_info);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int libiscsi_get_session_infos(struct libiscsi_context *context,
|
||||||
|
+ struct libiscsi_session_info **infos,
|
||||||
|
+ int *nr_sessions)
|
||||||
|
+{
|
||||||
|
+ int rc = 0;
|
||||||
|
+ int nr_found = 0;
|
||||||
|
+ struct libiscsi_session_array arr;
|
||||||
|
+
|
||||||
|
+ if (!context || !infos || !nr_sessions)
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+ libiscsi_session_array_init(&arr);
|
||||||
|
+
|
||||||
|
+ rc = iscsi_sysfs_for_each_session((void *) &arr, &nr_found,
|
||||||
|
+ get_sessions_helper, 0);
|
||||||
|
+ if (rc != 0 || nr_found == 0) {
|
||||||
|
+ strcpy(context->error_str, "No matching session");
|
||||||
|
+ return ENODEV;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (libiscsi_session_array_resize_precize(&arr) != 0) {
|
||||||
|
+ strcpy(context->error_str, "Can't allocate memory for session infos");
|
||||||
|
+ return ENOMEM;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ *infos = arr.data;
|
||||||
|
+ *nr_sessions = nr_found;
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int libiscsi_get_session_info_by_id(struct libiscsi_context *context,
|
||||||
|
+ struct libiscsi_session_info *info,
|
||||||
|
+ const char *session)
|
||||||
|
+{
|
||||||
|
+ struct session_info s_info;
|
||||||
|
+
|
||||||
|
+ if (!context || !info || !session)
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+ if (iscsi_sysfs_get_sessioninfo_by_id(&s_info, (char*) session) != 0) {
|
||||||
|
+ strcpy(context->error_str, "No matching session");
|
||||||
|
+ return ENODEV;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ copy_session_info_to_libiscsi_session_info(info, &s_info);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int libiscsi_node_set_parameter(struct libiscsi_context *context,
|
||||||
|
const struct libiscsi_node *node,
|
||||||
|
const char *parameter, const char *value)
|
||||||
|
diff --git a/libiscsi/libiscsi.h b/libiscsi/libiscsi.h
|
||||||
|
index 756590e14d8b..a9891f48b7d6 100644
|
||||||
|
--- a/libiscsi/libiscsi.h
|
||||||
|
+++ b/libiscsi/libiscsi.h
|
||||||
|
@@ -3,6 +3,7 @@
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008-2009 Red Hat, Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2008-2009 Hans de Goede <hdegoede@redhat.com>
|
||||||
|
+ * Copyright (C) 2015 Peter Hatina <phatina@redhat.com>
|
||||||
|
* maintained by open-iscsi@googlegroups.com
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
@@ -56,6 +57,17 @@ enum libiscsi_auth_t {
|
||||||
|
*/
|
||||||
|
struct libiscsi_context;
|
||||||
|
|
||||||
|
+/** \brief iSCSI session timeouts
|
||||||
|
+ *
|
||||||
|
+ * Struct holding session timeouts.
|
||||||
|
+ */
|
||||||
|
+struct libiscsi_session_timeout {
|
||||||
|
+ int abort_tmo;
|
||||||
|
+ int lu_reset_tmo;
|
||||||
|
+ int recovery_tmo;
|
||||||
|
+ int tgt_reset_tmo;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
/** \brief iSCSI node record
|
||||||
|
*
|
||||||
|
* Struct holding data uniquely identifying an iSCSI node.
|
||||||
|
@@ -84,6 +96,24 @@ struct libiscsi_chap_auth_info {
|
||||||
|
char reverse_password[LIBISCSI_VALUE_MAXLEN] /** Reverse Password */;
|
||||||
|
};
|
||||||
|
|
||||||
|
+/** \brief iSCSI session
|
||||||
|
+ *
|
||||||
|
+ * Struct hoding iSCSI session information.
|
||||||
|
+ */
|
||||||
|
+struct libiscsi_session_info {
|
||||||
|
+ int sid;
|
||||||
|
+
|
||||||
|
+ struct libiscsi_session_timeout tmo;
|
||||||
|
+ struct libiscsi_chap_auth_info chap;
|
||||||
|
+
|
||||||
|
+ char targetname[LIBISCSI_VALUE_MAXLEN];
|
||||||
|
+ int tpgt;
|
||||||
|
+ char address[NI_MAXHOST];
|
||||||
|
+ int port;
|
||||||
|
+ char persistent_address[NI_MAXHOST];
|
||||||
|
+ int persistent_port;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
/** \brief generic libiscsi authentication information struct
|
||||||
|
*
|
||||||
|
* Struct holding authentication information for discovery and login.
|
||||||
|
@@ -248,6 +278,32 @@ PUBLIC int libiscsi_node_login(struct libiscsi_context *context,
|
||||||
|
PUBLIC int libiscsi_node_logout(struct libiscsi_context *context,
|
||||||
|
const struct libiscsi_node *node);
|
||||||
|
|
||||||
|
+/** \brief Get an array of iSCSI sessions.
|
||||||
|
+ *
|
||||||
|
+ * Get the array containing iSCSI sessions' information.
|
||||||
|
+ *
|
||||||
|
+ * \param context libiscsi context to operate on.
|
||||||
|
+ * \param infos Array of iSCSI sessions' information.
|
||||||
|
+ * Release with free().
|
||||||
|
+ * \param nr_sessions The number of elements in \e infos.
|
||||||
|
+ * \return 0 on success, otherwise a standard error code
|
||||||
|
+ * (from errno.h).
|
||||||
|
+ */
|
||||||
|
+PUBLIC int libiscsi_get_session_infos(struct libiscsi_context *context,
|
||||||
|
+ struct libiscsi_session_info **infos, int *nr_sessions);
|
||||||
|
+
|
||||||
|
+/** \brief Get session information by session ID.
|
||||||
|
+ *
|
||||||
|
+ * \param context libiscsi context to operate on.
|
||||||
|
+ * \param info iSCSI session information.
|
||||||
|
+ * \param session Session name.
|
||||||
|
+ * \return 0 on success, otherwise a standard error code
|
||||||
|
+ * (from errno.h)
|
||||||
|
+ */
|
||||||
|
+PUBLIC int libiscsi_get_session_info_by_id(struct libiscsi_context *context,
|
||||||
|
+ struct libiscsi_session_info *info,
|
||||||
|
+ const char *session);
|
||||||
|
+
|
||||||
|
/** \brief Set an iSCSI parameter for the given node
|
||||||
|
*
|
||||||
|
* Set the given nodes iSCSI parameter named by \e parameter to value \e value.
|
||||||
|
diff --git a/usr/iscsi_sysfs.c b/usr/iscsi_sysfs.c
|
||||||
|
index fdc26c7bd9ba..80b7b0210fd1 100644
|
||||||
|
--- a/usr/iscsi_sysfs.c
|
||||||
|
+++ b/usr/iscsi_sysfs.c
|
||||||
|
@@ -3,6 +3,7 @@
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006 Mike Christie
|
||||||
|
* Copyright (C) 2006 Red Hat, Inc. All rights reserved.
|
||||||
|
+ * Copyright (C) 2015 Peter Hatina <phatina@redhat.com>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published
|
||||||
|
@@ -1146,6 +1147,11 @@ free_info:
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
+const char *iscsi_sysfs_get_session_path(void)
|
||||||
|
+{
|
||||||
|
+ return ISCSI_SESSION_DIR;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int iscsi_sysfs_for_each_iface_on_host(void *data, uint32_t host_no,
|
||||||
|
int *nr_found,
|
||||||
|
iscsi_sysfs_iface_op_fn *fn)
|
||||||
|
diff --git a/usr/iscsi_sysfs.h b/usr/iscsi_sysfs.h
|
||||||
|
index cdcefa65f683..12ad87f96c8c 100644
|
||||||
|
--- a/usr/iscsi_sysfs.h
|
||||||
|
+++ b/usr/iscsi_sysfs.h
|
||||||
|
@@ -3,6 +3,7 @@
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006 Mike Christie
|
||||||
|
* Copyright (C) 2006 Red Hat, Inc. All rights reserved.
|
||||||
|
+ * Copyright (C) 2015 Peter Hatina <phatina@redhat.com>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published
|
||||||
|
@@ -47,6 +48,7 @@ typedef int (iscsi_sysfs_flashnode_op_fn)(void *, struct flashnode_rec *,
|
||||||
|
uint32_t, uint32_t);
|
||||||
|
typedef int (iscsi_sysfs_iface_op_fn)(void *, struct iface_rec *);
|
||||||
|
|
||||||
|
+extern const char *iscsi_sysfs_get_session_path(void);
|
||||||
|
extern int iscsi_sysfs_for_each_iface_on_host(void *data, uint32_t host_no,
|
||||||
|
int *nr_found,
|
||||||
|
iscsi_sysfs_iface_op_fn *fn);
|
||||||
|
--
|
||||||
|
2.14.4
|
||||||
|
|
@ -0,0 +1,25 @@
|
|||||||
|
From 92aac85cf423d1c566d324255a86de0116d33015 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
Date: Mon, 21 Jan 2013 15:43:36 -0800
|
||||||
|
Subject: [PATCH 20/32] 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 4dfef4ccfb77..1334d47c6bb3 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.0-876"
|
||||||
|
+#define ISCSI_VERSION_STR "6.2.0.876-5"
|
||||||
|
#define ISCSI_VERSION_FILE "/sys/module/scsi_transport_iscsi/version"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
--
|
||||||
|
2.14.4
|
||||||
|
|
@ -0,0 +1,32 @@
|
|||||||
|
From 1aa35262d566d829d711bc746f944dee5c2d9e7a Mon Sep 17 00:00:00 2001
|
||||||
|
From: rpm-build <rpm-build>
|
||||||
|
Date: Tue, 28 Feb 2017 09:00:41 -0800
|
||||||
|
Subject: [PATCH 21/32] 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 755c18ca8e3b..bb17dfcafded 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.14.4
|
||||||
|
|
35
SOURCES/0022-libiscsi-format-security-build-errors.patch
Normal file
35
SOURCES/0022-libiscsi-format-security-build-errors.patch
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
From 1b2b6b683bd7ca3a7030889daf8c326dda797319 Mon Sep 17 00:00:00 2001
|
||||||
|
From: rpm-build <rpm-build>
|
||||||
|
Date: Tue, 28 Feb 2017 10:06:42 -0800
|
||||||
|
Subject: [PATCH 22/32] 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 bb17dfcafded..7003388e3346 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.14.4
|
||||||
|
|
36
SOURCES/0023-libiscsi-fix-build-to-use-libopeniscsiusr.patch
Normal file
36
SOURCES/0023-libiscsi-fix-build-to-use-libopeniscsiusr.patch
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
From b0d26441cebf6f1d78a2b4523ee9c348578b3d91 Mon Sep 17 00:00:00 2001
|
||||||
|
From: rpm-build <rpm-build>
|
||||||
|
Date: Thu, 24 May 2018 15:17:05 -0700
|
||||||
|
Subject: [PATCH 23/32] 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 317a7ec4db30..1196bb5c0cf4 100644
|
||||||
|
--- a/libiscsi/Makefile
|
||||||
|
+++ b/libiscsi/Makefile
|
||||||
|
@@ -4,7 +4,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
|
||||||
|
@@ -19,7 +21,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.14.4
|
||||||
|
|
25
SOURCES/0024-dont-install-scripts.patch
Normal file
25
SOURCES/0024-dont-install-scripts.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
From 09485b397990aca06d5e98a855bab2444c9ec572 Mon Sep 17 00:00:00 2001
|
||||||
|
From: rpm-build <rpm-build>
|
||||||
|
Date: Fri, 25 May 2018 09:39:07 -0700
|
||||||
|
Subject: [PATCH 24/32] dont install scripts
|
||||||
|
|
||||||
|
---
|
||||||
|
Makefile | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 80afe86d6558..a35082daa9f9 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -99,7 +99,7 @@ install_udev_rules:
|
||||||
|
$(INSTALL) -d $(DESTDIR)$(rulesdir)
|
||||||
|
$(INSTALL) -m 644 $(RULESFILES) $(DESTDIR)/$(rulesdir)
|
||||||
|
|
||||||
|
-install_programs: $(PROGRAMS) $(SCRIPTS)
|
||||||
|
+install_programs: $(PROGRAMS) # $(SCRIPTS)
|
||||||
|
$(INSTALL) -d $(DESTDIR)$(sbindir)
|
||||||
|
$(INSTALL) -m 755 $^ $(DESTDIR)$(sbindir)
|
||||||
|
|
||||||
|
--
|
||||||
|
2.14.4
|
||||||
|
|
109
SOURCES/0028-use-var-lib-iscsi-in-libopeniscsiusr.patch
Normal file
109
SOURCES/0028-use-var-lib-iscsi-in-libopeniscsiusr.patch
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
From 089cd6910d9f0d1e459e1d8d00b754843437526d Mon Sep 17 00:00:00 2001
|
||||||
|
From: rpm-build <rpm-build>
|
||||||
|
Date: Wed, 30 May 2018 16:08:30 -0700
|
||||||
|
Subject: [PATCH 28/28] 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 3fd0864a797d..c84d332ff949 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 e2355bc0fff0..cd9dd7326ae6 100644
|
||||||
|
--- a/libopeniscsiusr/iface.c
|
||||||
|
+++ b/libopeniscsiusr/iface.c
|
||||||
|
@@ -383,7 +383,7 @@ int iscsi_default_iface_setup(struct iscsi_context *ctx)
|
||||||
|
|
||||||
|
_good(_iscsi_hids_get(ctx, &hids, &hid_count), rc, out);
|
||||||
|
for (i = 0; i < hid_count; ++i) {
|
||||||
|
- /* Create /etc/iscsi/ifaces/<iface_name> file if not found
|
||||||
|
+ /* Create /var/lib/iscsi/ifaces/<iface_name> file if not found
|
||||||
|
*/
|
||||||
|
_good(_iscsi_ifaces_get_from_sysfs(ctx, hids[i], &ifaces, &iface_count),
|
||||||
|
rc, out);
|
||||||
|
diff --git a/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h b/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h
|
||||||
|
index 439590249212..81582da9e1e6 100644
|
||||||
|
--- a/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h
|
||||||
|
+++ b/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr.h
|
||||||
|
@@ -339,7 +339,7 @@ __DLL_EXPORT void iscsi_session_free(struct iscsi_session *se);
|
||||||
|
* * bnx2i
|
||||||
|
*
|
||||||
|
* It will also create configuration files for iSCSI hardware offload cards in
|
||||||
|
- * /etc/iscsi/ifaces/<iface_name>.
|
||||||
|
+ * /var/lib/iscsi/ifaces/<iface_name>.
|
||||||
|
*
|
||||||
|
* @ctx:
|
||||||
|
* Pointer of 'struct iscsi_context'.
|
||||||
|
@@ -369,7 +369,7 @@ __DLL_EXPORT int iscsi_default_iface_setup(struct iscsi_context *ctx);
|
||||||
|
* Retrieves all iSCSI interfaces. For the properties of 'struct iscsi_iface',
|
||||||
|
* please refer to the functions defined in 'libopeniscsiusr_iface.h' file.
|
||||||
|
* The returned results contains default iSCSI interfaces(iser and iscsi_tcp)
|
||||||
|
- * and iSCSI interfaces configured in "/etc/iscsi/ifaces/".
|
||||||
|
+ * and iSCSI interfaces configured in "/var/lib/iscsi/ifaces/".
|
||||||
|
* Illegal configuration file will be skipped and warned.
|
||||||
|
* To generate iSCSI interface configuration when new card installed, please
|
||||||
|
* use iscsi_default_iface_setup().
|
||||||
|
@@ -427,7 +427,7 @@ __DLL_EXPORT void iscsi_ifaces_free(struct iscsi_iface **ifaces,
|
||||||
|
* iscsi_iface_get() - Retrieve specified iSCSI interface.
|
||||||
|
*
|
||||||
|
* Retrieves specified iSCSI interfaces by reading configuration from
|
||||||
|
- * "/etc/iscsi/iface/<iface_name>".
|
||||||
|
+ * "/var/lib/iscsi/iface/<iface_name>".
|
||||||
|
* To generate iSCSI interface configuration when new card installed, please
|
||||||
|
* use iscsi_default_iface_setup().
|
||||||
|
* Illegal configuration file will be treated as error LIBISCSI_ERR_IDBM.
|
||||||
|
@@ -438,7 +438,7 @@ __DLL_EXPORT void iscsi_ifaces_free(struct iscsi_iface **ifaces,
|
||||||
|
* If this pointer is NULL, your program will be terminated by assert.
|
||||||
|
* @iface_name:
|
||||||
|
* String. Name of iSCSI interface. Also the file name of configuration
|
||||||
|
- * file "/etc/iscsi/iface/<iface_name>".
|
||||||
|
+ * file "/var/lib/iscsi/iface/<iface_name>".
|
||||||
|
* If this pointer is NULL or empty string, your program will be terminated
|
||||||
|
* by assert.
|
||||||
|
* @iface:
|
||||||
|
diff --git a/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr_iface.h b/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr_iface.h
|
||||||
|
index a1a255246d20..95b01602fb37 100644
|
||||||
|
--- a/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr_iface.h
|
||||||
|
+++ b/libopeniscsiusr/libopeniscsiusr/libopeniscsiusr_iface.h
|
||||||
|
@@ -182,7 +182,7 @@ __DLL_EXPORT const char *iscsi_iface_name_get(struct iscsi_iface *iface);
|
||||||
|
*
|
||||||
|
* Dump all configurations of specified iSCSI interface. Will skip empty
|
||||||
|
* configuration so that output string could be saved directly to
|
||||||
|
- * /etc/iscsi/ifaces/<iface_name> file.
|
||||||
|
+ * /var/lib/iscsi/ifaces/<iface_name> file.
|
||||||
|
*
|
||||||
|
* @iface:
|
||||||
|
* Pointer of 'struct iscsi_iface'.
|
||||||
|
diff --git a/libopeniscsiusr/node.h b/libopeniscsiusr/node.h
|
||||||
|
index 39e07b3befae..9eba7fa6077c 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.14.4
|
||||||
|
|
7
SOURCES/04-iscsi
Executable file
7
SOURCES/04-iscsi
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
case "$2" in
|
||||||
|
up|vpn-up)
|
||||||
|
/bin/systemctl --no-block reload iscsi.service || :
|
||||||
|
;;
|
||||||
|
esac
|
2
SOURCES/iscsi-tmpfiles.conf
Normal file
2
SOURCES/iscsi-tmpfiles.conf
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
d /run/lock/iscsi 0700 root root -
|
||||||
|
f /run/lock/iscsi/lock 0600 root root -
|
@ -0,0 +1,27 @@
|
|||||||
|
commit d8298fc54eb69d3989878be46e9c7d6ec2055650
|
||||||
|
Author: Lee Duncan <lduncan@suse.com>
|
||||||
|
Date: Mon Sep 24 16:22:18 2018 -0700
|
||||||
|
|
||||||
|
Allow reading sysfs "port" to fail gracefully.
|
||||||
|
|
||||||
|
Do not consider it a fatal error if reading sysfs value
|
||||||
|
for "port" fails, since we allow failure for "address".
|
||||||
|
---
|
||||||
|
libopeniscsiusr/session.c | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libopeniscsiusr/session.c b/libopeniscsiusr/session.c
|
||||||
|
index a8339395fc03..f8c89c323afb 100644
|
||||||
|
--- a/libopeniscsiusr/session.c
|
||||||
|
+++ b/libopeniscsiusr/session.c
|
||||||
|
@@ -205,8 +205,8 @@ int iscsi_session_get(struct iscsi_context *ctx, uint32_t sid,
|
||||||
|
_sysfs_prop_get_str(ctx, sysfs_con_dir_path, "address", (*se)->address,
|
||||||
|
sizeof((*se)->address) / sizeof(char), "");
|
||||||
|
|
||||||
|
- _good(_sysfs_prop_get_i32(ctx, sysfs_con_dir_path, "port",
|
||||||
|
- &((*se)->port), -1, false), rc, out);
|
||||||
|
+ _sysfs_prop_get_i32(ctx, sysfs_con_dir_path, "port",
|
||||||
|
+ &((*se)->port), -1, true);
|
||||||
|
|
||||||
|
if ((strcmp((*se)->address, "") == 0) &&
|
||||||
|
(strcmp((*se)->persistent_address, "") != 0))
|
@ -0,0 +1,48 @@
|
|||||||
|
commit 7df5edbb427c79337bdd651c2bcdda8eb05f077b
|
||||||
|
Author: Lee Duncan <lduncan@suse.com>
|
||||||
|
Date: Mon Sep 24 16:30:34 2018 -0700
|
||||||
|
|
||||||
|
Fix incorrect sysfs logic for port and ip address.
|
||||||
|
|
||||||
|
If "port" is available and "persistent_port" is not, then
|
||||||
|
correctly use the one that is present for both values.
|
||||||
|
Likewise for "address" and "persistent_address".
|
||||||
|
---
|
||||||
|
libopeniscsiusr/session.c | 18 ++++++++----------
|
||||||
|
1 file changed, 8 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libopeniscsiusr/session.c b/libopeniscsiusr/session.c
|
||||||
|
index f8c89c323afb..98601dcf807e 100644
|
||||||
|
--- a/libopeniscsiusr/session.c
|
||||||
|
+++ b/libopeniscsiusr/session.c
|
||||||
|
@@ -208,22 +208,20 @@ int iscsi_session_get(struct iscsi_context *ctx, uint32_t sid,
|
||||||
|
_sysfs_prop_get_i32(ctx, sysfs_con_dir_path, "port",
|
||||||
|
&((*se)->port), -1, true);
|
||||||
|
|
||||||
|
- if ((strcmp((*se)->address, "") == 0) &&
|
||||||
|
- (strcmp((*se)->persistent_address, "") != 0))
|
||||||
|
- _strncpy((*se)->persistent_address, (*se)->address,
|
||||||
|
- sizeof((*se)->persistent_address) / sizeof(char));
|
||||||
|
-
|
||||||
|
if ((strcmp((*se)->address, "") != 0) &&
|
||||||
|
(strcmp((*se)->persistent_address, "") == 0))
|
||||||
|
+ _strncpy((*se)->persistent_address, (*se)->address,
|
||||||
|
+ sizeof((*se)->persistent_address) / sizeof(char));
|
||||||
|
+ else if ((strcmp((*se)->address, "") == 0) &&
|
||||||
|
+ (strcmp((*se)->persistent_address, "") != 0))
|
||||||
|
_strncpy((*se)->address, (*se)->persistent_address,
|
||||||
|
sizeof((*se)->address) / sizeof(char));
|
||||||
|
|
||||||
|
- if (((*se)->persistent_port != -1) &&
|
||||||
|
- ((*se)->port == -1))
|
||||||
|
+ if (((*se)->persistent_port == -1) &&
|
||||||
|
+ ((*se)->port != -1))
|
||||||
|
(*se)->persistent_port = (*se)->port;
|
||||||
|
-
|
||||||
|
- if (((*se)->persistent_port != -1) &&
|
||||||
|
- ((*se)->port == -1))
|
||||||
|
+ else if (((*se)->persistent_port != -1) &&
|
||||||
|
+ ((*se)->port == -1))
|
||||||
|
(*se)->port = (*se)->persistent_port;
|
||||||
|
|
||||||
|
_good(_iscsi_host_id_of_session(ctx, sid, &host_id), rc, out);
|
@ -0,0 +1,73 @@
|
|||||||
|
commit 09d7031cb462889392090e71991a89c522d387bc
|
||||||
|
Author: Lee Duncan <lduncan@suse.com>
|
||||||
|
Date: Mon Sep 24 16:37:19 2018 -0700
|
||||||
|
|
||||||
|
Fix reading of sysfs signed integers when negative.
|
||||||
|
|
||||||
|
The code for reading all sysfs integer types (of all
|
||||||
|
sizes) did not work when reading signed integers and
|
||||||
|
the return value was negative. So when the default was -1
|
||||||
|
and the value was not present, the code tried to return -1.
|
||||||
|
But the logic for checking against "max value" was
|
||||||
|
incorrect, causing INT_MAX to be returned instead of -1.
|
||||||
|
---
|
||||||
|
libopeniscsiusr/sysfs.c | 32 +++++++++++++++++++++++++++-----
|
||||||
|
1 file changed, 27 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libopeniscsiusr/sysfs.c b/libopeniscsiusr/sysfs.c
|
||||||
|
index 08f71b317c55..c4f89a31aca0 100644
|
||||||
|
--- a/libopeniscsiusr/sysfs.c
|
||||||
|
+++ b/libopeniscsiusr/sysfs.c
|
||||||
|
@@ -47,7 +47,7 @@
|
||||||
|
|
||||||
|
#define _SYS_NULL_STR "(null)"
|
||||||
|
|
||||||
|
-#define _sysfs_prop_get_int_func_gen(func_name, out_type, type_max_value) \
|
||||||
|
+#define _sysfs_prop_get_uint_func_gen(func_name, out_type, type_max_value) \
|
||||||
|
int func_name(struct iscsi_context *ctx, const char *dir_path, \
|
||||||
|
const char *prop_name, out_type *val, \
|
||||||
|
out_type default_value, bool ignore_error) \
|
||||||
|
@@ -63,6 +63,28 @@
|
||||||
|
return rc; \
|
||||||
|
}
|
||||||
|
|
||||||
|
+#define _sysfs_prop_get_int_func_gen(func_name, out_type, type_min_value, type_max_value) \
|
||||||
|
+ int func_name(struct iscsi_context *ctx, const char *dir_path, \
|
||||||
|
+ const char *prop_name, out_type *val, \
|
||||||
|
+ out_type default_value, bool ignore_error) \
|
||||||
|
+ { \
|
||||||
|
+ long long int tmp_val = 0; \
|
||||||
|
+ int rc = LIBISCSI_OK; \
|
||||||
|
+ long long int dv = default_value; \
|
||||||
|
+ rc = iscsi_sysfs_prop_get_ll(ctx, dir_path, prop_name, \
|
||||||
|
+ &tmp_val, (long long int) dv, \
|
||||||
|
+ ignore_error); \
|
||||||
|
+ if (rc == LIBISCSI_OK) { \
|
||||||
|
+ if (tmp_val > type_max_value) \
|
||||||
|
+ *val = type_max_value; \
|
||||||
|
+ else if (tmp_val < type_min_value) \
|
||||||
|
+ *val = type_min_value; \
|
||||||
|
+ else \
|
||||||
|
+ *val = tmp_val; \
|
||||||
|
+ } \
|
||||||
|
+ return rc; \
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
|
||||||
|
enum _sysfs_dev_class {
|
||||||
|
_SYSFS_DEV_CLASS_ISCSI_SESSION,
|
||||||
|
@@ -82,10 +104,10 @@ static int iscsi_sysfs_prop_get_ll(struct iscsi_context *ctx,
|
||||||
|
static int sysfs_get_dev_path(struct iscsi_context *ctx, const char *path,
|
||||||
|
enum _sysfs_dev_class class, char **dev_path);
|
||||||
|
|
||||||
|
-_sysfs_prop_get_int_func_gen(_sysfs_prop_get_u8, uint8_t, UINT8_MAX);
|
||||||
|
-_sysfs_prop_get_int_func_gen(_sysfs_prop_get_u16, uint16_t, UINT16_MAX);
|
||||||
|
-_sysfs_prop_get_int_func_gen(_sysfs_prop_get_i32, int32_t, INT32_MAX);
|
||||||
|
-_sysfs_prop_get_int_func_gen(_sysfs_prop_get_u32, uint32_t, UINT32_MAX);
|
||||||
|
+_sysfs_prop_get_uint_func_gen(_sysfs_prop_get_u8, uint8_t, UINT8_MAX);
|
||||||
|
+_sysfs_prop_get_uint_func_gen(_sysfs_prop_get_u16, uint16_t, UINT16_MAX);
|
||||||
|
+_sysfs_prop_get_int_func_gen(_sysfs_prop_get_i32, int32_t, INT32_MIN, INT32_MAX);
|
||||||
|
+_sysfs_prop_get_uint_func_gen(_sysfs_prop_get_u32, uint32_t, UINT32_MAX);
|
||||||
|
|
||||||
|
static int sysfs_read_file(const char *path, uint8_t *buff, size_t buff_size)
|
||||||
|
{
|
@ -0,0 +1,69 @@
|
|||||||
|
commit 7d121d12ad6ba7783308c25ffd338a9fa0cc402b
|
||||||
|
Author: Lee Duncan <lduncan@suse.com>
|
||||||
|
Date: Tue Sep 25 09:48:53 2018 -0700
|
||||||
|
|
||||||
|
Create a new error for "target not connected".
|
||||||
|
|
||||||
|
The session_logout_qtask() function now recognizes
|
||||||
|
a new state of "target likely not connected" if
|
||||||
|
syncing up, in connection wait state, and re-opening
|
||||||
|
the connection.
|
||||||
|
---
|
||||||
|
include/iscsi_err.h | 2 ++
|
||||||
|
usr/initiator.c | 16 +++++++++++++++-
|
||||||
|
usr/iscsi_err.c | 1 +
|
||||||
|
3 files changed, 18 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/include/iscsi_err.h b/include/iscsi_err.h
|
||||||
|
index 506bd8c9bd27..ed000dd00baf 100644
|
||||||
|
--- a/include/iscsi_err.h
|
||||||
|
+++ b/include/iscsi_err.h
|
||||||
|
@@ -68,6 +68,8 @@ enum {
|
||||||
|
ISCSI_ERR_UNKNOWN_DISCOVERY_TYPE = 30,
|
||||||
|
/* child process terminated */
|
||||||
|
ISCSI_ERR_CHILD_TERMINATED = 31,
|
||||||
|
+ /* session likely not connected */
|
||||||
|
+ ISCSI_ERR_SESSION_NOT_CONNECTED = 32,
|
||||||
|
|
||||||
|
/* Always last. Indicates end of error code space */
|
||||||
|
ISCSI_MAX_ERR_VAL,
|
||||||
|
diff --git a/usr/initiator.c b/usr/initiator.c
|
||||||
|
index a86d1e6dee90..935056a3abde 100644
|
||||||
|
--- a/usr/initiator.c
|
||||||
|
+++ b/usr/initiator.c
|
||||||
|
@@ -2056,8 +2056,22 @@ int session_logout_task(int sid, queue_task_t *qtask)
|
||||||
|
return ISCSI_ERR_SESS_NOT_FOUND;
|
||||||
|
}
|
||||||
|
conn = &session->conn[0];
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
- * If syncing up or if this is the initial login and mgmt_ipc
|
||||||
|
+ * If syncing up, in XPT_WAIT, and REOPENing, then return
|
||||||
|
+ * an informative error, since the target for this session
|
||||||
|
+ * is likely not connected
|
||||||
|
+ */
|
||||||
|
+ if (session->notify_qtask &&
|
||||||
|
+ (conn->state == ISCSI_CONN_STATE_XPT_WAIT) &&
|
||||||
|
+ (session->r_stage == R_STAGE_SESSION_REOPEN)) {
|
||||||
|
+ log_warning("session cannot be terminted because it's trying to reconnect: try again later");
|
||||||
|
+ return ISCSI_ERR_SESSION_NOT_CONNECTED;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * If syncing up and not reconnecting,
|
||||||
|
+ * or if this is the initial login and mgmt_ipc
|
||||||
|
* has not been notified of that result fail the logout request
|
||||||
|
*/
|
||||||
|
if (session->notify_qtask ||
|
||||||
|
diff --git a/usr/iscsi_err.c b/usr/iscsi_err.c
|
||||||
|
index 1ba9e648d7c1..23c61fc3574e 100644
|
||||||
|
--- a/usr/iscsi_err.c
|
||||||
|
+++ b/usr/iscsi_err.c
|
||||||
|
@@ -54,6 +54,7 @@ static char *iscsi_err_msgs[] = {
|
||||||
|
/* 29 */ "operation failed but retry may succeed",
|
||||||
|
/* 30 */ "unknown discovery type",
|
||||||
|
/* 31 */ "child process terminated",
|
||||||
|
+ /* 32 */ "target likely not connected",
|
||||||
|
};
|
||||||
|
|
||||||
|
char *iscsi_err_to_str(int err)
|
@ -0,0 +1,26 @@
|
|||||||
|
commit 8bf04a094e572c56d4f8bd30ff064c84c75a0247
|
||||||
|
Author: Lee Duncan <lduncan@suse.com>
|
||||||
|
Date: Tue Sep 25 09:53:55 2018 -0700
|
||||||
|
|
||||||
|
Fix bug in error message when reading sysfs numbers.
|
||||||
|
|
||||||
|
The message printed when ENOENT was returned for
|
||||||
|
a number-type sysfs value was missing the attribute
|
||||||
|
name parameter.
|
||||||
|
---
|
||||||
|
libopeniscsiusr/sysfs.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/libopeniscsiusr/sysfs.c b/libopeniscsiusr/sysfs.c
|
||||||
|
index c4f89a31aca0..5e6532e7746f 100644
|
||||||
|
--- a/libopeniscsiusr/sysfs.c
|
||||||
|
+++ b/libopeniscsiusr/sysfs.c
|
||||||
|
@@ -237,7 +237,7 @@ static int iscsi_sysfs_prop_get_ll(struct iscsi_context *ctx,
|
||||||
|
"Failed to read '%s': "
|
||||||
|
"File '%s' does not exists, using ",
|
||||||
|
"default value %lld",
|
||||||
|
- file_path, default_value);
|
||||||
|
+ prop_name, file_path, default_value);
|
||||||
|
*val = default_value;
|
||||||
|
goto out;
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
commit ae0b2ceb620e2bf527c06d21c110791d1e0e8bf4
|
||||||
|
Author: Lee Duncan <lduncan@suse.com>
|
||||||
|
Date: Tue Sep 25 09:57:46 2018 -0700
|
||||||
|
|
||||||
|
Handle ENOTCONN error separately when reading sysfs values.
|
||||||
|
|
||||||
|
This error happens when the daemon is attempting to
|
||||||
|
reconnect a session when starting up, so should not
|
||||||
|
be considered an internal error.
|
||||||
|
---
|
||||||
|
libopeniscsiusr/sysfs.c | 31 +++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 31 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/libopeniscsiusr/sysfs.c b/libopeniscsiusr/sysfs.c
|
||||||
|
index 5e6532e7746f..2c3f077bf3fa 100644
|
||||||
|
--- a/libopeniscsiusr/sysfs.c
|
||||||
|
+++ b/libopeniscsiusr/sysfs.c
|
||||||
|
@@ -184,6 +184,21 @@ int _sysfs_prop_get_str(struct iscsi_context *ctx, const char *dir_path,
|
||||||
|
_error(ctx, "Failed to read '%s': "
|
||||||
|
"permission deny when reading '%s'", prop_name,
|
||||||
|
file_path);
|
||||||
|
+ } else if (errno_save == ENOTCONN) {
|
||||||
|
+ if (default_value == NULL) {
|
||||||
|
+ rc = LIBISCSI_ERR_SYSFS_LOOKUP;
|
||||||
|
+ _error(ctx, "Failed to read '%s': "
|
||||||
|
+ "error when reading '%s': "
|
||||||
|
+ "Target unavailable",
|
||||||
|
+ prop_name, file_path);
|
||||||
|
+ } else {
|
||||||
|
+ _info(ctx, "Failed to read '%s': "
|
||||||
|
+ "error when reading '%s': "
|
||||||
|
+ "Target unavailable, using default value '%s'",
|
||||||
|
+ prop_name, file_path, default_value);
|
||||||
|
+ memcpy(buff, (void *) default_value,
|
||||||
|
+ strlen(default_value) + 1);
|
||||||
|
+ }
|
||||||
|
} else {
|
||||||
|
rc = LIBISCSI_ERR_BUG;
|
||||||
|
_error(ctx, "Failed to read '%s': "
|
||||||
|
@@ -246,6 +261,22 @@ static int iscsi_sysfs_prop_get_ll(struct iscsi_context *ctx,
|
||||||
|
_error(ctx, "Permission deny when reading '%s'",
|
||||||
|
file_path);
|
||||||
|
goto out;
|
||||||
|
+ } else if (errno_save == ENOTCONN) {
|
||||||
|
+ if (!ignore_error) {
|
||||||
|
+ rc = LIBISCSI_ERR_SYSFS_LOOKUP;
|
||||||
|
+ _error(ctx, "Failed to read '%s': "
|
||||||
|
+ "error when reading '%s': "
|
||||||
|
+ "Target unavailable",
|
||||||
|
+ prop_name, file_path);
|
||||||
|
+ goto out;
|
||||||
|
+ } else {
|
||||||
|
+ _info(ctx, "Failed to read '%s': "
|
||||||
|
+ "error when reading '%s': "
|
||||||
|
+ "Target unavailable, using default value %lld",
|
||||||
|
+ prop_name, file_path, default_value);
|
||||||
|
+ *val = default_value;
|
||||||
|
+ goto out;
|
||||||
|
+ }
|
||||||
|
} else {
|
||||||
|
rc = LIBISCSI_ERR_BUG;
|
||||||
|
_error(ctx, "Error when reading '%s': %d", file_path,
|
@ -0,0 +1,26 @@
|
|||||||
|
commit baa0cb45cfcf10a81283c191b0b236cd1a2f66ee
|
||||||
|
Author: Lee Duncan <lduncan@suse.com>
|
||||||
|
Date: Fri Oct 12 09:57:20 2018 -0700
|
||||||
|
|
||||||
|
Restore space in node-mode level 0 output
|
||||||
|
|
||||||
|
As part of the libopeniscsiusr update, the output
|
||||||
|
of "iscsiadm -m node" dropped a space that needs to
|
||||||
|
be between the portal and the target, for proper
|
||||||
|
parsing.
|
||||||
|
|
||||||
|
Fixes: 87ea50a1c3a97
|
||||||
|
|
||||||
|
diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c
|
||||||
|
index e3ba03c838f3..25c6cdc0ff12 100644
|
||||||
|
--- a/usr/iscsiadm.c
|
||||||
|
+++ b/usr/iscsiadm.c
|
||||||
|
@@ -683,7 +683,7 @@ static int login_portals(struct node_rec *pattern_rec)
|
||||||
|
|
||||||
|
static void print_node_flat(struct iscsi_node *node)
|
||||||
|
{
|
||||||
|
- printf("%s,%" PRIu16 "%s\n",
|
||||||
|
+ printf("%s,%" PRIu16 " %s\n",
|
||||||
|
iscsi_node_portal_get(node),
|
||||||
|
iscsi_node_tpgt_get(node),
|
||||||
|
iscsi_node_target_name_get(node));
|
589
SPECS/iscsi-initiator-utils.spec
Normal file
589
SPECS/iscsi-initiator-utils.spec
Normal file
@ -0,0 +1,589 @@
|
|||||||
|
%global open_iscsi_version 2.0
|
||||||
|
%global open_iscsi_build 876
|
||||||
|
%global commit0 f3c8e90fc0894c088950a15ee6618b427f9e2457
|
||||||
|
%global shortcommit0 %(c=%{commit0}; echo ${c:0:7})
|
||||||
|
|
||||||
|
%if 0%{?rhel} > 7
|
||||||
|
# Disable python2 build by default
|
||||||
|
%bcond_with python2
|
||||||
|
%else
|
||||||
|
%bcond_without python2
|
||||||
|
%endif
|
||||||
|
|
||||||
|
Summary: iSCSI daemon and utility programs
|
||||||
|
Name: iscsi-initiator-utils
|
||||||
|
Version: 6.%{open_iscsi_version}.%{open_iscsi_build}
|
||||||
|
Release: 7.git%{shortcommit0}%{?dist}
|
||||||
|
Group: System Environment/Daemons
|
||||||
|
License: GPLv2+
|
||||||
|
URL: http://www.open-iscsi.org
|
||||||
|
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-idmb_rec_write-check-for-tpgt-first.patch
|
||||||
|
Patch0002: 0002-idbm_rec_write-seperate-old-and-new-style-writes.patch
|
||||||
|
Patch0003: 0003-idbw_rec_write-pick-tpgt-from-existing-record.patch
|
||||||
|
Patch0004: 0004-update-systemd-service-files-add-iscsi.service-for-s.patch
|
||||||
|
Patch0005: 0005-iscsi-boot-related-service-file-updates.patch
|
||||||
|
Patch0006: 0006-update-initscripts-and-docs.patch
|
||||||
|
Patch0007: 0007-use-var-for-config.patch
|
||||||
|
Patch0008: 0008-use-red-hat-for-name.patch
|
||||||
|
Patch0009: 0009-libiscsi.patch
|
||||||
|
Patch0010: 0010-remove-the-offload-boot-supported-ifdef.patch
|
||||||
|
Patch0011: 0011-iscsiuio-systemd-unit-files.patch
|
||||||
|
Patch0012: 0012-Don-t-check-for-autostart-sessions-if-iscsi-is-not-u.patch
|
||||||
|
Patch0013: 0013-Revert-iscsiadm-return-error-when-login-fails.patch
|
||||||
|
Patch0014: 0014-update-handling-of-boot-sessions.patch
|
||||||
|
Patch0015: 0015-update-iscsi.service-for-boot-session-recovery.patch
|
||||||
|
Patch0016: 0016-updates-to-iscsi.service.patch
|
||||||
|
Patch0017: 0017-make-session-shutdown-a-seperate-service.patch.patch
|
||||||
|
Patch0018: 0018-Add-macros-to-release-GIL-lock.patch
|
||||||
|
Patch0019: 0019-libiscsi-introduce-sessions-API.patch
|
||||||
|
Patch0020: 0020-use-Red-Hat-version-string-to-match-RPM-package-vers.patch
|
||||||
|
Patch0021: 0021-libiscsi-fix-discovery-request-timeout-regression.patch
|
||||||
|
Patch0022: 0022-libiscsi-format-security-build-errors.patch
|
||||||
|
Patch0023: 0023-libiscsi-fix-build-to-use-libopeniscsiusr.patch
|
||||||
|
Patch0024: 0024-dont-install-scripts.patch
|
||||||
|
Patch0028: 0028-use-var-lib-iscsi-in-libopeniscsiusr.patch
|
||||||
|
Patch0029: open-iscsi-2.0.876-66-Allow-reading-sysfs-port-to-fail-gracefully.patch
|
||||||
|
Patch0030: open-iscsi-2.0.876-67-Fix-incorrect-sysfs-logic-for-port-and-ip-address.patch
|
||||||
|
Patch0031: open-iscsi-2.0.876-68-Fix-reading-of-sysfs-signed-integers-when-negative.patch
|
||||||
|
Patch0032: open-iscsi-2.0.876-69-Create-a-new-error-for-target-not-connected.patch
|
||||||
|
Patch0033: open-iscsi-2.0.876-70-Fix-bug-in-error-message-when-reading-sysfs-numbers.patch
|
||||||
|
Patch0034: open-iscsi-2.0.876-71-Handle-ENOTCONN-error-separately-when-reading-sysfs-values.patch
|
||||||
|
Patch0035: open-iscsi-2.0.876-93-Restore-space-in-node-mode-level-0-output.patch
|
||||||
|
|
||||||
|
BuildRequires: flex bison doxygen kmod-devel systemd-units
|
||||||
|
BuildRequires: autoconf automake libtool libmount-devel openssl-devel
|
||||||
|
BuildRequires: isns-utils-devel
|
||||||
|
# For dir ownership
|
||||||
|
Requires: %{name}-iscsiuio >= %{version}-%{release}
|
||||||
|
Requires(post): systemd
|
||||||
|
Requires(preun): systemd
|
||||||
|
Requires(postun): systemd
|
||||||
|
|
||||||
|
%global _hardened_build 1
|
||||||
|
%global __provides_exclude_from ^(%{python2_sitearch}/.*\\.so|%{python3_sitearch}/.*\\.so)$
|
||||||
|
|
||||||
|
%description
|
||||||
|
The iscsi package provides the server daemon for the iSCSI protocol,
|
||||||
|
as well as the utility programs used to manage it. iSCSI is a protocol
|
||||||
|
for distributed disk access using SCSI commands sent over Internet
|
||||||
|
Protocol networks.
|
||||||
|
|
||||||
|
# I don't think we're ready to expose these just yet
|
||||||
|
# For now just add the needed library to the base package
|
||||||
|
|
||||||
|
#%package -n libopeniscsiusr
|
||||||
|
#Summary: library providing access to Open-iSCSI initiator functionality
|
||||||
|
#Group: Development/Libraries
|
||||||
|
#License: BSD
|
||||||
|
|
||||||
|
#%description -n libopeniscsiusr
|
||||||
|
#The libopeniscsiusr library provides a C API for access to the Open-iSCSI
|
||||||
|
#initiator. It is used by the Open-iSCSI command line tools.
|
||||||
|
|
||||||
|
#%package -n libopeniscsiusr-devel
|
||||||
|
#Summary: Development files for libopeniscsiusr
|
||||||
|
#Group: Development/Libraries
|
||||||
|
#Requires: libopeniscsiusr = %{version}-%{release}
|
||||||
|
|
||||||
|
#%description -n libopeniscsiusr-devel
|
||||||
|
#The libopeniscsiusr-devel package contains libraries and header files for
|
||||||
|
#developing applications that use libopeniscsiusr.
|
||||||
|
|
||||||
|
%package iscsiuio
|
||||||
|
Summary: Userspace configuration daemon required for some iSCSI hardware
|
||||||
|
Group: System Environment/Daemons
|
||||||
|
License: BSD
|
||||||
|
Requires: %{name} = %{version}-%{release}
|
||||||
|
|
||||||
|
%description iscsiuio
|
||||||
|
The iscsiuio configuration daemon provides network configuration help
|
||||||
|
for some iSCSI offload hardware.
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: Development files for %{name}
|
||||||
|
Group: Development/Libraries
|
||||||
|
Requires: %{name} = %{version}-%{release}
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
The %{name}-devel package contains libraries and header files for
|
||||||
|
developing applications that use %{name}.
|
||||||
|
|
||||||
|
%if %{with python2}
|
||||||
|
%package -n python2-%{name}
|
||||||
|
%{?python_provide:%python_provide python2-%{name}}
|
||||||
|
Summary: Python %{python2_version} bindings to %{name}
|
||||||
|
Group: Development/Libraries
|
||||||
|
|
||||||
|
BuildRequires: python2-devel
|
||||||
|
BuildRequires: python2-setuptools
|
||||||
|
|
||||||
|
%description -n python2-%{name}
|
||||||
|
The %{name}-python2 package contains Python %{python2_version} bindings to the
|
||||||
|
libiscsi interface for interacting with %{name}
|
||||||
|
%endif # with python2
|
||||||
|
|
||||||
|
%package -n python3-%{name}
|
||||||
|
%{?python_provide:%python_provide python3-%{name}}
|
||||||
|
Summary: Python %{python3_version} bindings to %{name}
|
||||||
|
Group: Development/Libraries
|
||||||
|
|
||||||
|
BuildRequires: python3-devel
|
||||||
|
BuildRequires: python3-setuptools
|
||||||
|
|
||||||
|
%description -n python3-%{name}
|
||||||
|
The %{name}-python3 package contains Python %{python3_version} bindings to the
|
||||||
|
libiscsi interface for interacting with %{name}
|
||||||
|
|
||||||
|
%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
|
||||||
|
|
||||||
|
%build
|
||||||
|
|
||||||
|
# configure sub-packages from here
|
||||||
|
# letting the top level Makefile do it will lose setting from rpm
|
||||||
|
cd iscsiuio
|
||||||
|
autoreconf --install
|
||||||
|
%{configure}
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
%{__make} OPTFLAGS="%{optflags} %{?__global_ldflags} -DUSE_KMOD -lkmod"
|
||||||
|
pushd libiscsi
|
||||||
|
%if %{with python2}
|
||||||
|
%py2_build
|
||||||
|
%endif # 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
|
||||||
|
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_sharedstatedir}/iscsi
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_sharedstatedir}/iscsi/nodes
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_sharedstatedir}/iscsi/send_targets
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_sharedstatedir}/iscsi/static
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_sharedstatedir}/iscsi/isns
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_sharedstatedir}/iscsi/slp
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_sharedstatedir}/iscsi/ifaces
|
||||||
|
|
||||||
|
# for %%ghost
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT/var/lock/iscsi
|
||||||
|
touch $RPM_BUILD_ROOT/var/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-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}
|
||||||
|
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_libexecdir}
|
||||||
|
%{__install} -pm 755 etc/systemd/iscsi-mark-root-nodes $RPM_BUILD_ROOT%{_libexecdir}
|
||||||
|
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_sysconfdir}/NetworkManager/dispatcher.d
|
||||||
|
%{__install} -pm 755 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/NetworkManager/dispatcher.d
|
||||||
|
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_tmpfilesdir}
|
||||||
|
%{__install} -pm 644 %{SOURCE5} $RPM_BUILD_ROOT%{_tmpfilesdir}/iscsi.conf
|
||||||
|
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{_libdir}
|
||||||
|
%{__install} -pm 755 libiscsi/libiscsi.so.0 $RPM_BUILD_ROOT%{_libdir}
|
||||||
|
%{__ln_s} libiscsi.so.0 $RPM_BUILD_ROOT%{_libdir}/libiscsi.so
|
||||||
|
%{__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 # with python2
|
||||||
|
%{__install} -d $RPM_BUILD_ROOT%{python3_sitearch}
|
||||||
|
pushd libiscsi
|
||||||
|
%if %{with python2}
|
||||||
|
%py2_install
|
||||||
|
%endif # with python2
|
||||||
|
%py3_install
|
||||||
|
popd
|
||||||
|
|
||||||
|
|
||||||
|
%post
|
||||||
|
/sbin/ldconfig
|
||||||
|
|
||||||
|
%systemd_post iscsi.service iscsi-shutdown.service iscsid.service iscsid.socket
|
||||||
|
|
||||||
|
if [ $1 -eq 1 ]; then
|
||||||
|
if [ ! -f %{_sysconfdir}/iscsi/initiatorname.iscsi ]; then
|
||||||
|
echo "InitiatorName=`/usr/sbin/iscsi-iname`" > %{_sysconfdir}/iscsi/initiatorname.iscsi
|
||||||
|
fi
|
||||||
|
# enable socket activation and persistant session startup by default
|
||||||
|
/bin/systemctl enable iscsi.service >/dev/null 2>&1 || :
|
||||||
|
/bin/systemctl enable iscsid.socket >/dev/null 2>&1 || :
|
||||||
|
fi
|
||||||
|
|
||||||
|
%post iscsiuio
|
||||||
|
%systemd_post iscsiuio.service iscsiuio.socket
|
||||||
|
|
||||||
|
if [ $1 -eq 1 ]; then
|
||||||
|
/bin/systemctl enable iscsiuio.socket >/dev/null 2>&1 || :
|
||||||
|
fi
|
||||||
|
|
||||||
|
%preun
|
||||||
|
%systemd_preun iscsi.service iscsi-shutdown.service iscsid.service iscsiuio.service iscsid.socket iscsiuio.socket
|
||||||
|
|
||||||
|
%preun iscsiuio
|
||||||
|
%systemd_preun iscsiuio.service iscsiuio.socket
|
||||||
|
|
||||||
|
%postun
|
||||||
|
/sbin/ldconfig
|
||||||
|
%systemd_postun
|
||||||
|
|
||||||
|
%postun iscsiuio
|
||||||
|
%systemd_postun
|
||||||
|
|
||||||
|
%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
|
||||||
|
|
||||||
|
|
||||||
|
%files
|
||||||
|
%doc README
|
||||||
|
%dir %{_sharedstatedir}/iscsi
|
||||||
|
%dir %{_sharedstatedir}/iscsi/nodes
|
||||||
|
%dir %{_sharedstatedir}/iscsi/isns
|
||||||
|
%dir %{_sharedstatedir}/iscsi/static
|
||||||
|
%dir %{_sharedstatedir}/iscsi/slp
|
||||||
|
%dir %{_sharedstatedir}/iscsi/ifaces
|
||||||
|
%dir %{_sharedstatedir}/iscsi/send_targets
|
||||||
|
%ghost %{_var}/lock/iscsi
|
||||||
|
%ghost %{_var}/lock/iscsi/lock
|
||||||
|
%{_unitdir}/iscsi.service
|
||||||
|
%{_unitdir}/iscsi-shutdown.service
|
||||||
|
%{_unitdir}/iscsid.service
|
||||||
|
%{_unitdir}/iscsid.socket
|
||||||
|
%{_libexecdir}/iscsi-mark-root-nodes
|
||||||
|
%{_sysconfdir}/NetworkManager/dispatcher.d/04-iscsi
|
||||||
|
%{_tmpfilesdir}/iscsi.conf
|
||||||
|
%dir %{_sysconfdir}/iscsi
|
||||||
|
%attr(0600,root,root) %config(noreplace) %{_sysconfdir}/iscsi/iscsid.conf
|
||||||
|
%{_sbindir}/iscsi-iname
|
||||||
|
%{_sbindir}/iscsiadm
|
||||||
|
%{_sbindir}/iscsid
|
||||||
|
%{_sbindir}/iscsistart
|
||||||
|
%{_libdir}/libiscsi.so.0
|
||||||
|
%{_mandir}/man8/iscsi-iname.8.gz
|
||||||
|
%{_mandir}/man8/iscsiadm.8.gz
|
||||||
|
%{_mandir}/man8/iscsid.8.gz
|
||||||
|
%{_mandir}/man8/iscsistart.8.gz
|
||||||
|
# until we decide to setup libopeniscsiusr as a subpkg for real
|
||||||
|
%{_libdir}/libopeniscsiusr.so.*
|
||||||
|
%exclude %{_libdir}/libopeniscsiusr.so
|
||||||
|
%exclude %{_includedir}/libopeniscsiusr.h
|
||||||
|
%exclude %{_includedir}/libopeniscsiusr_common.h
|
||||||
|
%exclude %{_includedir}/libopeniscsiusr_iface.h
|
||||||
|
%exclude %{_includedir}/libopeniscsiusr_session.h
|
||||||
|
%exclude %{_libdir}/pkgconfig/libopeniscsiusr.pc
|
||||||
|
|
||||||
|
# %files -n libopeniscsiusr
|
||||||
|
# %{_libdir}/libopeniscsiusr.so.*
|
||||||
|
#
|
||||||
|
# %files -n libopeniscsiusr-devel
|
||||||
|
# %{_libdir}/libopeniscsiusr.so
|
||||||
|
# %{_includedir}/libopeniscsiusr.h
|
||||||
|
# %{_includedir}/libopeniscsiusr_common.h
|
||||||
|
# %{_includedir}/libopeniscsiusr_iface.h
|
||||||
|
# %{_includedir}/libopeniscsiusr_session.h
|
||||||
|
# %{_libdir}/pkgconfig/libopeniscsiusr.pc
|
||||||
|
|
||||||
|
%files iscsiuio
|
||||||
|
%{_sbindir}/iscsiuio
|
||||||
|
%{_unitdir}/iscsiuio.service
|
||||||
|
%{_unitdir}/iscsiuio.socket
|
||||||
|
%config(noreplace) %{_sysconfdir}/logrotate.d/iscsiuiolog
|
||||||
|
%{_mandir}/man8/iscsiuio.8.gz
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%doc libiscsi/html
|
||||||
|
%{_libdir}/libiscsi.so
|
||||||
|
%{_includedir}/libiscsi.h
|
||||||
|
|
||||||
|
%if %{with python2}
|
||||||
|
%files -n python2-%{name}
|
||||||
|
%{python2_sitearch}/*
|
||||||
|
%endif # with python2
|
||||||
|
|
||||||
|
%files -n python3-%{name}
|
||||||
|
%{python3_sitearch}/*
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Thu Feb 21 2019 Chris Leech <cleech@redhat.com> - 6.2.0.876-7.gitf3c8e90
|
||||||
|
- 1647826: fix sysfs and output format regressions in libopeniscsi code
|
||||||
|
|
||||||
|
* Thu Jan 03 2019 Chris Leech <cleech@redhat.com> - 6.2.0.876-6.gitf3c8e90
|
||||||
|
- 1650402: fix missing space in node display output
|
||||||
|
|
||||||
|
* Tue Jul 10 2018 Chris Leech <cleech@redhat.com> - 6.2.0.876-5.gitf3c8e90
|
||||||
|
- iscsiuio: add mutex to protect netlink buffer for pass-through xmit
|
||||||
|
- iscsid: get gateway information from sysfs when recovering sessions
|
||||||
|
- enabled MaxOustandingR2T negotiation during login
|
||||||
|
|
||||||
|
* Mon Jun 25 2018 Adam Williamson <awilliam@redhat.com> - 6.2.0.876-4.git4ef9261
|
||||||
|
- Rebuilt for Python 3.7, again
|
||||||
|
|
||||||
|
* Mon Jun 25 2018 Adam Williamson <awilliam@redhat.com> - 6.2.0.876-3.git4ef9261
|
||||||
|
- Link libiscsi against libopeniscsiusr (bz #1594946) (python 3.6 build)
|
||||||
|
|
||||||
|
* Wed Jun 20 2018 Miro Hrončok <mhroncok@redhat.com> - 6.2.0.876-2.git4ef9261
|
||||||
|
- Rebuilt for Python 3.7
|
||||||
|
|
||||||
|
* Tue Jun 19 2018 Chris Leech <cleech@redhat.com> - 6.2.0.876-1.git4ef9261
|
||||||
|
- pull in post 2.0.876 tagged fixes from upstream git
|
||||||
|
- minimal packaging of libopeniscsiusr (internal use only, no dev package yet)
|
||||||
|
|
||||||
|
* Tue Jun 19 2018 Chris Leech <cleech@redhat.com> - 6.2.0.876-1.git24580ad
|
||||||
|
- rebase to upstream 2.0.876
|
||||||
|
|
||||||
|
* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> - 6.2.0.874-10.git86e8892
|
||||||
|
- Rebuilt for Python 3.7
|
||||||
|
|
||||||
|
* Mon May 28 2018 Charalampos Stratakis <cstratak@redhat.com> - 6.2.0.874-10.git86e8892
|
||||||
|
- Conditionalize the python2 subpackage
|
||||||
|
|
||||||
|
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 6.2.0.874-9.git86e8892
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jan 05 2018 Iryna Shcherbina <ishcherb@redhat.com> - 6.2.0.874-8.git86e8892
|
||||||
|
- Update Python 2 dependency declarations to new packaging standards
|
||||||
|
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
|
||||||
|
|
||||||
|
* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 6.2.0.874-7.git86e8892
|
||||||
|
- Python 2 binary package renamed to python2-iscsi-initiator-utils
|
||||||
|
See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3
|
||||||
|
|
||||||
|
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 6.2.0.874-6.git86e8892
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 6.2.0.874-5.git86e8892
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Apr 12 2017 Chris Leech <cleech@redhat.com> - 6.2.0.874-4.git86e8892
|
||||||
|
- rebuild to use shared libisns
|
||||||
|
|
||||||
|
* Tue Feb 28 2017 Chris Leech <cleech@redhat.com> - 6.2.0.874-3.git86e8892
|
||||||
|
- libiscsi: fix discovery command timeout regression
|
||||||
|
- libiscsi: fix format security build errors
|
||||||
|
|
||||||
|
* Thu Feb 16 2017 Chris Leech <cleech@redhat.com> - 6.2.0.874-2.git86e8892
|
||||||
|
- fix regression with iscsiadm discoverydb commands having a 0 timeout
|
||||||
|
|
||||||
|
* Thu Feb 09 2017 Chris Leech <cleech@redhat.com> - 6.2.0.874-1
|
||||||
|
- update to 2.0.874
|
||||||
|
|
||||||
|
* Mon Dec 12 2016 Charalampos Stratakis <cstratak@redhat.com> - 6.2.0.873-35.git4c1f2d9
|
||||||
|
- Rebuild for Python 3.6
|
||||||
|
|
||||||
|
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 6.2.0.873-34.git4c1f2d9
|
||||||
|
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
|
||||||
|
|
||||||
|
* Fri Feb 19 2016 Chris Leech <cleech@redhat.com> - 6.2.0.873-33.git4c1f2d9
|
||||||
|
- sync with upstream
|
||||||
|
- sysfs handling changes to speed up operations over large number of sessions
|
||||||
|
|
||||||
|
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 6.2.0.873-32.git4c9d6f9
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Feb 3 2016 Michael Schwendt <mschwendt@fedoraproject.org> - 6.2.0.873-31.git4c9d6f9
|
||||||
|
- BuildRequires: isns-utils-static for -lisns (bz #1291913)
|
||||||
|
|
||||||
|
* Tue Nov 03 2015 Robert Kuska <rkuska@redhat.com> - 6.2.0.873-30.git4c9d6f9
|
||||||
|
- Rebuilt for Python3.5 rebuild
|
||||||
|
|
||||||
|
* Tue Oct 06 2015 Chris Leech <cleech@redhat.com> - 6.2.0.873-29.git4c9d6f9
|
||||||
|
- rebase with upstream, change Source0 url to github
|
||||||
|
- build with external isns-utils
|
||||||
|
|
||||||
|
* Mon Oct 05 2015 Chris Leech <cleech@redhat.com> - 6.2.0.873-28.git6aa2c9b
|
||||||
|
- fixed broken multiple trigger scripts, removed old pre-systemd migration triggers
|
||||||
|
- added libiscsi session API patch (bz #1262279)
|
||||||
|
|
||||||
|
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 6.2.0.873-27.git6aa2c9b
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jun 10 2015 Chris Leech <cleech@redhat.com> - 6.2.0.873-26.git6aa2c9b
|
||||||
|
- rebase to upstream snapshot
|
||||||
|
- add patch to improve GIL lock performance in libiscsi
|
||||||
|
- Split Python 2 and Python 3 bindings out into subpackages
|
||||||
|
|
||||||
|
* Wed Jan 28 2015 Chris Leech <cleech@redhat.com> - 6.2.0.873-25.gitc9d830b
|
||||||
|
- split out session logout on shutdown to a separate service
|
||||||
|
- 985321 roll up libiscsi patches, update python bindings to support python3
|
||||||
|
- scriptlets were never split out properly for the iscsiuio subpackage
|
||||||
|
- fix regression in network interface binding
|
||||||
|
- created iscsi-shutdown.service to ensure that session cleanup happens
|
||||||
|
- Add --with-slp=no
|
||||||
|
- segfault from unexpected netlink event during discovery
|
||||||
|
- inhibit strict aliasing optimizations in iscsiuio, rpmdiff error
|
||||||
|
|
||||||
|
* Thu Oct 23 2014 Chris Leech <cleech@redhat.com> - 6.2.0.873-24.gitc9d830b
|
||||||
|
- sync with upstream v2.0.873-84-gc9d830b
|
||||||
|
- ignore iscsiadm return in iscsi.service
|
||||||
|
- make sure systemd order against remote mounts is correct
|
||||||
|
- add discovery as a valid mode in iscsiadm.8
|
||||||
|
- make sure to pass --with-security=no to isns configure
|
||||||
|
|
||||||
|
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 6.2.0.873-23
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 6.2.0.873-22
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Apr 14 2014 Chris Leech <cleech@redhat.com> - 6.2.0.873-21
|
||||||
|
- boot session handling improvements
|
||||||
|
- split out iscsiuio into a seperate sub-package
|
||||||
|
- sync with new upstream additions
|
||||||
|
- revert change to return code when calling login_portal for sessions
|
||||||
|
that already exist, as it impacts users scripting around iscsiadm
|
||||||
|
|
||||||
|
* Tue Dec 10 2013 Chris Leech <cleech@redhat.com> - 6.2.0.873-17
|
||||||
|
- fix regression in glob use, inappropriate error code escape
|
||||||
|
- clean up dead node links from discovery when reusing tpgt
|
||||||
|
|
||||||
|
* Mon Nov 25 2013 Chris Leech <cleech@redhat.com> - 6.2.0.873-16
|
||||||
|
- fix iscsiuio socket activation
|
||||||
|
- have systemd start socket units on iscsiadm use, if not already listening
|
||||||
|
|
||||||
|
* Sun Sep 15 2013 Chris Leech <cleech@redhat.com> - 6.2.0.873-15
|
||||||
|
- move /sbin to /usr/sbin
|
||||||
|
- use rpm macros in install rules
|
||||||
|
|
||||||
|
* Fri Sep 13 2013 Chris Leech <cleech@redhat.com> - 6.2.0.873-14
|
||||||
|
- fix iscsiuio hardened build and other compiler flags
|
||||||
|
|
||||||
|
* Fri Aug 23 2013 Andy Grover <agrover@redhat.com> - 6.2.0.873-13
|
||||||
|
- Fix patch 0041 to check session != NULL before calling iscsi_sysfs_read_boot()
|
||||||
|
|
||||||
|
* Tue Aug 20 2013 Chris Leech <cleech@redhat.com> - 6.2.0.873-12
|
||||||
|
- fix regression in last build, database records can't be accessed
|
||||||
|
|
||||||
|
* Mon Aug 19 2013 Chris Leech <cleech@redhat.com> - 6.2.0.873-11
|
||||||
|
- iscsi boot related fixes
|
||||||
|
make sure iscsid gets started if there are any boot sessions running
|
||||||
|
add reload target to fix double session problem when restarting from NM
|
||||||
|
don't rely on session list passed from initrd, never got fully implemented
|
||||||
|
remove patches related to running iscsid from initrd, possible to revisit later
|
||||||
|
|
||||||
|
* Sun Aug 18 2013 Chris Leech <cleech@redhat.com> - 6.2.0.873-10
|
||||||
|
- sync with upstream git, minor context fixes after rebase of out-of-tree patches
|
||||||
|
- iscsiuio is merged upstream, remove old source archive and patches
|
||||||
|
- spec cleanups to fix rpmlint issues
|
||||||
|
|
||||||
|
* Sun Aug 4 2013 Peter Robinson <pbrobinson@fedoraproject.org> 6.2.0.873-9
|
||||||
|
- Fix FTBFS, cleanup spec
|
||||||
|
|
||||||
|
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 6.2.0.873-8
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jun 11 2013 Chris Leech <cleech@redhat.com> - 6.2.0.873-7
|
||||||
|
- Use the systemd tmpfiles service to recreate lockfiles in /var/lock
|
||||||
|
- 955167 build as a position independent executable
|
||||||
|
- 894576 fix order of setuid/setgid and drop additional groups
|
||||||
|
|
||||||
|
* Tue May 28 2013 Chris Leech <cleech@redhat.com> - 6.2.0.873-6
|
||||||
|
- Don't have iscsiadm scan for autostart record if node db is empty (bug #951951)
|
||||||
|
|
||||||
|
* Tue Apr 30 2013 Orion Poplawski <orion@cora.nwra.com> - 6.2.0.873-5
|
||||||
|
- Fix typo in NM dispatcher script (bug #917058)
|
||||||
|
|
||||||
|
* Thu Feb 21 2013 Chris Leech <cleech@redhat.com> - 6.2.0.873-4
|
||||||
|
- build with libkmod support, instead of calling out to modprobe
|
||||||
|
- enable socket activation by default
|
||||||
|
|
||||||
|
* Thu Jan 24 2013 Kalev Lember <kalevlember@gmail.com> - 6.2.0.873-3
|
||||||
|
- Fix the postun script to not use ldconfig as the interpreter
|
||||||
|
|
||||||
|
* Wed Jan 23 2013 Chris Leech <cleech@redhat.com> - 6.2.0.873-2
|
||||||
|
- package iscsi_mark_root_nodes script, it's being referenced by the unit files
|
||||||
|
|
||||||
|
* Tue Jan 22 2013 Chris Leech <cleech@redhat.com> - 6.2.0.873-1
|
||||||
|
- rebase to new upstream code
|
||||||
|
- systemd conversion
|
||||||
|
- 565245 Fix multilib issues caused by timestamp in doxygen footers
|
||||||
|
|
||||||
|
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 6.2.0.872-19
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Feb 14 2012 Mike Christie <mchristi@redhat.com> 6.2.0.872.18
|
||||||
|
- 789683 Fix boot slow down when the iscsi service is started
|
||||||
|
(regression added in 6.2.0.872.16 when the nm wait was added).
|
||||||
|
|
||||||
|
* Mon Feb 6 2012 Mike Christie <mchristi@redhat.com> 6.2.0.872.17
|
||||||
|
- 786174 Change iscsid/iscsi service startup, so it always starts
|
||||||
|
when called.
|
||||||
|
|
||||||
|
* Sat Feb 4 2012 Mike Christie <mchristi@redhat.com> 6.2.0.872.16
|
||||||
|
- 747479 Fix iscsidevs handling of network requirement
|
||||||
|
|
||||||
|
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 6.2.0.872-15
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Nov 30 2011 Mike Christie <mcrhsit@redhat.com> 6.2.0.872.14
|
||||||
|
- Fix version string to reflect fedora and not rhel.
|
||||||
|
|
||||||
|
* Tue Oct 18 2011 Mike Christie <mcrhsit@redhat.com> 6.2.0.872.13
|
||||||
|
- Update iscsi tools.
|
||||||
|
|
||||||
|
* Sat Apr 30 2011 Hans de Goede <hdegoede@redhat.com> - 6.2.0.872-12
|
||||||
|
- Change iscsi init scripts to check for networking being actually up, rather
|
||||||
|
then for NetworkManager being started (#692230)
|
||||||
|
|
||||||
|
* Tue Apr 26 2011 Hans de Goede <hdegoede@redhat.com> - 6.2.0.872-11
|
||||||
|
- Fix iscsid autostarting when upgrading from an older version
|
||||||
|
(add iscsid.startup key to iscsid.conf on upgrade)
|
||||||
|
- Fix printing of [ OK ] when successfully stopping iscsid
|
||||||
|
- systemd related fixes:
|
||||||
|
- Add Should-Start/Stop tgtd to iscsi init script to fix (re)boot from
|
||||||
|
hanging when using locally hosted targets
|
||||||
|
- %%ghost /var/lock/iscsi and contents (#656605)
|
||||||
|
|
||||||
|
* Mon Apr 25 2011 Mike Christie <mchristi@redhat.com> 6.2.0.872-10
|
||||||
|
- Fix iscsi init scripts check for networking being up (#692230)
|
||||||
|
|
||||||
|
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 6.2.0.872-9
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
Loading…
Reference in New Issue
Block a user