Browse Source

iscsi-initiator-utils package update

Signed-off-by: basebuilder_pel7ppc64bebuilder0 <basebuilder@powerel.org>
master
basebuilder_pel7ppc64bebuilder0 6 years ago
parent
commit
46cb28e585
  1. 91
      SOURCES/0001-enable-MaxOutstandingR2T-negotiation.patch
  2. 25
      SOURCES/0184-set-iscsid.safe_logout-to-Yes-by-default.patch
  3. 2
      SOURCES/0199-use-Red-Hat-version-string-to-match-RPM-package-vers.patch
  4. 50
      SOURCES/open-iscsi-2.0.874-30-iscsiuio-fix-dhcpv6-transaction-id-mismatch-error.patch
  5. 185
      SOURCES/open-iscsi-2.0.874-31-iscsiuio-serialize-xmit_mutex-lock-to-prevent-iscsiuio-seg-fault.patch
  6. 40
      SOURCES/open-iscsi-2.0.874-32-iscsiuio-allow-ARP-for-non-matching-src-and-dst-addresses.patch
  7. 106
      SOURCES/open-iscsi-2.0.874-33-iscsiuio-v0.7.8.4.patch
  8. 31
      SOURCES/open-iscsi-2.0.876-3-qedi.c-Removed-unused-linux-ethtool.h.patch
  9. 36
      SOURCES/open-iscsi-2.0.876-31-Fix-iscsiuio-segfault-when-shutting-down.patch
  10. 208
      SOURCES/open-iscsi-2.0.876-41-vlan-setting-sync-across-ipv4-ipv6-for-be2iscsi.patch
  11. 248
      SOURCES/open-iscsi-2.0.876-54-iscsiuio-Add-inter-host-mutex-while-doing-xmit.patch
  12. 23
      SPECS/iscsi-initiator-utils.spec

91
SOURCES/0001-enable-MaxOutstandingR2T-negotiation.patch

@ -0,0 +1,91 @@ @@ -0,0 +1,91 @@
From a54966e121ef5deaee2e113d1c912a7dd85aca86 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Wed, 20 Jun 2018 22:09:35 -0700
Subject: [PATCH 1/1] enable MaxOutstandingR2T negotiation

The iscsi_tcp kernel side R2T handling is in libiscsi_tcp and is shared
with at least cxgbi3, and the drivers claim CAP_MULTI_R2T. But the
iscsid login parameter negotiation code never enabled MaxOutstandingR2T.

I've tested this against an LIO target, negotiating to 2 and 4 R2Ts.
The network traces looked good, with the initiator keeping track of
multiple outstanding R2Ts and using the correct next identifier.
Throughput of bulk write data was improved, even over low latency virtio
links.

Signed-off-by: Chris Leech <cleech@redhat.com>
---
usr/initiator.h | 1 +
usr/initiator_common.c | 3 ++-
usr/login.c | 14 +++++---------
3 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/usr/initiator.h b/usr/initiator.h
index 4f96d6b6e2c5..3ee1454b6de2 100644
--- a/usr/initiator.h
+++ b/usr/initiator.h
@@ -212,6 +212,7 @@ typedef struct iscsi_session {
int erl;
uint32_t imm_data_en;
uint32_t initial_r2t_en;
+ uint32_t max_r2t;
uint32_t fast_abort;
uint32_t first_burst;
uint32_t max_burst;
diff --git a/usr/initiator_common.c b/usr/initiator_common.c
index 191e779bb942..d00bd9e7469b 100644
--- a/usr/initiator_common.c
+++ b/usr/initiator_common.c
@@ -173,6 +173,7 @@ iscsi_copy_operational_params(struct iscsi_conn *conn,
/* session's operational parameters */
session->initial_r2t_en = session_conf->InitialR2T;
+ session->max_r2t = session_conf->MaxOutstandingR2T;
session->imm_data_en = session_conf->ImmediateData;
session->first_burst = align_32_down(session_conf->FirstBurstLength);
/*
@@ -375,7 +376,7 @@ int iscsi_session_set_neg_params(struct iscsi_conn *conn)
.conn_only = 0,
}, {
.param = ISCSI_PARAM_MAX_R2T,
- .value = &one, /* FIXME: session->max_r2t */
+ .value = &session->max_r2t,
.type = ISCSI_INT,
.conn_only = 0,
}, {
diff --git a/usr/login.c b/usr/login.c
index 294ad0bf73fd..d7dad21180cf 100644
--- a/usr/login.c
+++ b/usr/login.c
@@ -524,14 +524,9 @@ get_op_params_text_keys(iscsi_session_t *session, int cid,
text = value_end;
} else if (iscsi_find_key_value("MaxOutstandingR2T", text, end, &value,
&value_end)) {
- if (session->type == ISCSI_SESSION_TYPE_NORMAL) {
- if (strcmp(value, "1")) {
- log_error("Login negotiation "
- "failed, can't accept Max"
- "OutstandingR2T %s", value);
- return LOGIN_NEGOTIATION_FAILED;
- }
- } else
+ if (session->type == ISCSI_SESSION_TYPE_NORMAL)
+ session->max_r2t = strtoul(value, NULL, 0);
+ else
session->irrelevant_keys_bitmap |=
IRRELEVANT_MAXOUTSTANDINGR2T;
text = value_end;
@@ -810,8 +805,9 @@ add_params_normal_session(iscsi_session_t *session, struct iscsi_hdr *pdu,
return 0;
/* these we must have */
+ sprintf(value, "%d", session->max_r2t);
if (!iscsi_add_text(pdu, data, max_data_length,
- "MaxOutstandingR2T", "1"))
+ "MaxOutstandingR2T", value))
return 0;
if (!iscsi_add_text(pdu, data, max_data_length,
"MaxConnections", "1"))
--
2.14.4

25
SOURCES/0184-set-iscsid.safe_logout-to-Yes-by-default.patch

@ -0,0 +1,25 @@ @@ -0,0 +1,25 @@
From 486110e2564cd9b677c485ec87b5df1bcb5750f2 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Wed, 29 Aug 2018 16:20:27 -0700
Subject: [PATCH 184/184] set iscsid.safe_logout to Yes by default

---
etc/iscsid.conf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/etc/iscsid.conf b/etc/iscsid.conf
index cbf2c05aff59..1af8ed2732de 100644
--- a/etc/iscsid.conf
+++ b/etc/iscsid.conf
@@ -25,7 +25,7 @@ iscsid.startup = /bin/systemctl start iscsid.socket iscsiuio.socket
# Check for active mounts on devices reachable through a session
# and refuse to logout if there are any. Defaults to "No".
-# iscsid.safe_logout = Yes
+iscsid.safe_logout = Yes
#############################
# NIC/HBA and driver settings
--
2.14.4

2
SOURCES/0199-use-Red-Hat-version-string-to-match-RPM-package-vers.patch

@ -16,7 +16,7 @@ index 20f07946be1f..baa8c00c7185 100644 @@ -16,7 +16,7 @@ index 20f07946be1f..baa8c00c7185 100644
* some other maintainer could merge a patch without going through us
*/
-#define ISCSI_VERSION_STR "2.0-874"
+#define ISCSI_VERSION_STR "6.2.0.874-7"
+#define ISCSI_VERSION_STR "6.2.0.874-10"
#define ISCSI_VERSION_FILE "/sys/module/scsi_transport_iscsi/version"
#endif

50
SOURCES/open-iscsi-2.0.874-30-iscsiuio-fix-dhcpv6-transaction-id-mismatch-error.patch

@ -0,0 +1,50 @@ @@ -0,0 +1,50 @@
From: Chris Leech <cleech@redhat.com>
Subject: iscsiuio: fix dhcpv6 transaction-id mismatch error

Bugzilla: ZZZ
Upstream Status:
Build Info: XXX
Tested:

commit 5fd6428435f3063b4e980ead1fe0671856a20183
Author: Nilesh Javali <nilesh.javali@cavium.com>
Date: Thu Feb 16 08:44:19 2017 -0500

iscsiuio: fix dhcpv6 transaction-id mismatch error
Initialize the transaction-id within the dhcpv6 packet with
correct byte order.
Signed-off-by: Nilesh Javali <nilesh.javali@cavium.com>
---
iscsiuio/src/apps/dhcpc/dhcpv6.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/iscsiuio/src/apps/dhcpc/dhcpv6.c b/iscsiuio/src/apps/dhcpc/dhcpv6.c
index a4e25f0bdbbd..461af0ec2a11 100644
--- a/iscsiuio/src/apps/dhcpc/dhcpv6.c
+++ b/iscsiuio/src/apps/dhcpc/dhcpv6.c
@@ -153,7 +153,7 @@ static u16_t dhcpv6_init_packet(struct dhcpv6_context *context, u8_t type)
if (dhcpv6->dhcpv6_type != type)
context->dhcpv6_transaction_id++;
- dhcpv6->dhcpv6_trans_id = context->dhcpv6_transaction_id;
+ dhcpv6->dhcpv6_trans_id = HOST_TO_NET16(context->dhcpv6_transaction_id);
dhcpv6->dhcpv6_type = type;
/* Keep track of length of all DHCP options. */
@@ -265,8 +265,13 @@ void ipv6_udp_handle_dhcp(struct dhcpv6_context *context)
dhcpv6 = (union dhcpv6_hdr *)((u8_t *)context->udp +
sizeof(struct udp_hdr));
- if (dhcpv6->dhcpv6_trans_id != context->dhcpv6_transaction_id)
+ if (dhcpv6->dhcpv6_trans_id !=
+ HOST_TO_NET16(context->dhcpv6_transaction_id)) {
+ LOG_ERR("DHCPv6 transaction-id error, sent %x, received %x",
+ HOST_TO_NET16(context->dhcpv6_transaction_id),
+ dhcpv6->dhcpv6_trans_id);
return;
+ }
dhcpv6_len =
NET_TO_HOST16(context->udp->length) - sizeof(struct udp_hdr);

185
SOURCES/open-iscsi-2.0.874-31-iscsiuio-serialize-xmit_mutex-lock-to-prevent-iscsiuio-seg-fault.patch

@ -0,0 +1,185 @@ @@ -0,0 +1,185 @@
From: Chris Leech <cleech@redhat.com>
Subject: iscsiuio: serialize xmit_mutex lock to prevent iscsiuio seg fault

Bugzilla: ZZZ
Upstream Status:
Build Info: XXX
Tested:

commit a1be9c4ec348f87923f63ce2dbc23893a3b9e45c
Author: Nilesh Javali <nilesh.javali@cavium.com>
Date: Thu May 18 23:04:20 2017 +0530

iscsiuio: serialize xmit_mutex lock to prevent iscsiuio seg fault
Signed-off-by: Nilesh Javali <nilesh.javali@cavium.com>
---
iscsiuio/src/unix/libs/bnx2x.c | 24 +++++++++++-------------
iscsiuio/src/unix/libs/cnic.c | 9 +++------
iscsiuio/src/unix/libs/qedi.c | 19 +++++++++++--------
3 files changed, 25 insertions(+), 27 deletions(-)

diff --git a/iscsiuio/src/unix/libs/bnx2x.c b/iscsiuio/src/unix/libs/bnx2x.c
index 19cbcecaacca..1e8f532edcdf 100644
--- a/iscsiuio/src/unix/libs/bnx2x.c
+++ b/iscsiuio/src/unix/libs/bnx2x.c
@@ -1316,7 +1316,6 @@ void bnx2x_start_xmit(nic_t *nic, size_t len, u16_t vlan_id)
if ((rx_bd->addr_hi == 0) && (rx_bd->addr_lo == 0)) {
LOG_PACKET(PFX "%s: trying to transmit when device is closed",
nic->log_name);
- pthread_mutex_unlock(&nic->xmit_mutex);
return;
}
@@ -1343,12 +1342,9 @@ void bnx2x_start_xmit(nic_t *nic, size_t len, u16_t vlan_id)
(bp->tx_bd_prod << 16));
bnx2x_flush_doorbell(bp, bp->tx_doorbell);
} else {
- /* If the doorbell is not rung, the packet will not
- get sent. Hence, the xmit_mutex lock will not
- get freed.
- */
- pthread_mutex_unlock(&nic->xmit_mutex);
+ LOG_ERR(PFX "Pkt transmission failed.");
}
+
LOG_PACKET(PFX "%s: sent %d bytes using bp->tx_prod: %d",
nic->log_name, len, bp->tx_prod);
}
@@ -1412,6 +1408,8 @@ int bnx2x_write(nic_t *nic, nic_interface_t *nic_iface, packet_t *pkt)
nic->log_name, pkt->buf_size,
bp->tx_cons, bp->tx_prod, bp->tx_bd_prod);
+ pthread_mutex_unlock(&nic->xmit_mutex);
+
return 0;
}
@@ -1560,17 +1558,16 @@ static int bnx2x_clear_tx_intr(nic_t *nic)
hw_cons = bp->get_tx_cons(bp);
if (bp->tx_cons == hw_cons) {
- if (bp->tx_cons == bp->tx_prod) {
- /* Make sure the xmit_mutex lock is unlock */
- if (pthread_mutex_trylock(&nic->xmit_mutex))
- LOG_ERR(PFX "bnx2x tx lock with prod == cons");
-
- pthread_mutex_unlock(&nic->xmit_mutex);
+ if (bp->tx_cons == bp->tx_prod)
return 0;
- }
return -EAGAIN;
}
+ if (pthread_mutex_trylock(&nic->xmit_mutex)) {
+ LOG_ERR(PFX "%s: unable to get xmit_mutex.", nic->log_name);
+ return -EINVAL;
+ }
+
LOG_PACKET(PFX "%s: clearing tx interrupt [%d %d]",
nic->log_name, bp->tx_cons, hw_cons);
bp->tx_cons = hw_cons;
@@ -1600,6 +1597,7 @@ static int bnx2x_clear_tx_intr(nic_t *nic)
nic->log_name, pkt->buf_size,
bp->tx_cons, bp->tx_prod, bp->tx_bd_prod);
+ pthread_mutex_unlock(&nic->xmit_mutex);
return 0;
}
diff --git a/iscsiuio/src/unix/libs/cnic.c b/iscsiuio/src/unix/libs/cnic.c
index 5d60f898ad57..a009f25f0814 100644
--- a/iscsiuio/src/unix/libs/cnic.c
+++ b/iscsiuio/src/unix/libs/cnic.c
@@ -141,6 +141,7 @@ static int cnic_arp_send(nic_t *nic, nic_interface_t *nic_iface, int fd,
memcpy(&addr.s_addr, &dst_ip, sizeof(addr.s_addr));
LOG_DEBUG(PFX "%s: Sent cnic arp request for IP: %s",
nic->log_name, addr_str);
+ pthread_mutex_unlock(&nic->xmit_mutex);
return 0;
}
@@ -204,6 +205,8 @@ static int cnic_neigh_soliciation_send(nic_t *nic,
LOG_DEBUG(PFX "%s: Sent cnic ICMPv6 neighbor request %s",
nic->log_name, addr_str);
+ pthread_mutex_unlock(&nic->xmit_mutex);
+
return 0;
}
@@ -433,9 +436,6 @@ done:
rc = -EIO;
}
- if (status != 0 || rc != 0)
- pthread_mutex_unlock(&nic->xmit_mutex);
-
if (ev) {
cnic_nl_neigh_rsp(nic, fd, ev, path, mac_addr,
nic_iface, status, AF_INET);
@@ -632,9 +632,6 @@ done:
rc = -EIO;
}
- if (status != 0 || rc != 0)
- pthread_mutex_unlock(&nic->xmit_mutex);
-
if (ev) {
cnic_nl_neigh_rsp(nic, fd, ev, path, mac_addr,
nic_iface, status, AF_INET6);
diff --git a/iscsiuio/src/unix/libs/qedi.c b/iscsiuio/src/unix/libs/qedi.c
index c2096e59dad1..c6ff6e7724a3 100644
--- a/iscsiuio/src/unix/libs/qedi.c
+++ b/iscsiuio/src/unix/libs/qedi.c
@@ -887,7 +887,6 @@ void qedi_start_xmit(nic_t *nic, size_t len, u16_t vlan_id)
nic->log_name, len, bp->tx_prod);
} else {
LOG_ERR(PFX "Pkt transmission failed: %d", rc);
- pthread_mutex_unlock(&nic->xmit_mutex);
}
free(ubuf);
@@ -950,6 +949,10 @@ int qedi_write(nic_t *nic, nic_interface_t *nic_iface, packet_t *pkt)
nic->log_name, pkt->buf_size,
bp->tx_cons, bp->tx_prod, bp->tx_bd_prod);
+ LOG_DEBUG(PFX "%s: host:%d - releasing xmit mutex",
+ nic->log_name, nic->host_no);
+ pthread_mutex_unlock(&nic->xmit_mutex);
+
return 0;
}
@@ -1059,17 +1062,16 @@ static int qedi_clear_tx_intr(nic_t *nic)
hw_cons = uctrl->hw_tx_cons;
if (bp->tx_cons == hw_cons) {
- if (bp->tx_cons == bp->tx_prod) {
- /* Make sure the xmit_mutex lock is unlock */
- if (pthread_mutex_trylock(&nic->xmit_mutex))
- LOG_ERR(PFX "qedi tx lock with prod == cons");
-
- pthread_mutex_unlock(&nic->xmit_mutex);
+ if (bp->tx_cons == bp->tx_prod)
return 0;
- }
return -EAGAIN;
}
+ if (pthread_mutex_trylock(&nic->xmit_mutex)) {
+ LOG_ERR(PFX "%s: unable to get xmit_mutex.", nic->log_name);
+ return -EINVAL;
+ }
+
LOG_PACKET(PFX "%s: clearing tx interrupt [%d %d]",
nic->log_name, bp->tx_cons, hw_cons);
bp->tx_cons = hw_cons;
@@ -1099,6 +1101,7 @@ static int qedi_clear_tx_intr(nic_t *nic)
nic->log_name, pkt->buf_size,
bp->tx_cons, bp->tx_prod, bp->tx_bd_prod);
+ pthread_mutex_unlock(&nic->xmit_mutex);
return 0;
}

40
SOURCES/open-iscsi-2.0.874-32-iscsiuio-allow-ARP-for-non-matching-src-and-dst-addresses.patch

@ -0,0 +1,40 @@ @@ -0,0 +1,40 @@
From: Chris Leech <cleech@redhat.com>
Subject: iscsiuio: allow ARP for non-matching src and dst addresses

Bugzilla: ZZZ
Upstream Status:
Build Info: XXX
Tested:

commit e43d687dc23e66c609491f9bfa8d8f29be7ef72d
Author: Nilesh Javali <nilesh.javali@cavium.com>
Date: Thu Feb 22 07:25:58 2018 -0500

iscsiuio: allow ARP for non-matching src and dst addresses
For source and destination IP addresses in different
networks, continue with the ARP retries and further login process
instead of assuming abrupt failure. iSCSI offload adapters may not rely on
netmask information for successful iSCSI target login.
Signed-off-by: Nilesh Javali <nilesh.javali@cavium.com>
---
iscsiuio/src/unix/libs/cnic.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/iscsiuio/src/unix/libs/cnic.c b/iscsiuio/src/unix/libs/cnic.c
index a009f25f0814..32166edf243f 100644
--- a/iscsiuio/src/unix/libs/cnic.c
+++ b/iscsiuio/src/unix/libs/cnic.c
@@ -362,9 +362,8 @@ int cnic_handle_ipv4_iscsi_path_req(nic_t *nic, int fd,
&nic_iface->ustack.default_route_addr,
sizeof(dst_addr));
} else {
- arp_retry = MAX_ARP_RETRY;
- LOG_DEBUG(PFX "%s: no default", nic->log_name);
- goto done;
+ LOG_DEBUG(PFX "%s: no default route address",
+ nic->log_name);
}
}
arp_retry = 0;

106
SOURCES/open-iscsi-2.0.874-33-iscsiuio-v0.7.8.4.patch

@ -0,0 +1,106 @@ @@ -0,0 +1,106 @@
From: Chris Leech <cleech@redhat.com>
Subject: iscsiuio: v0.7.8.4

Bugzilla: ZZZ
Upstream Status:
Build Info: XXX
Tested:

commit 5481f86e46d1668917bbf41ed2355b6eb558de69
Author: Nilesh Javali <nilesh.javali@cavium.com>
Date: Thu Feb 22 08:04:13 2018 -0500

iscsiuio: v0.7.8.4
Signed-off-by: Nilesh Javali <nilesh.javali@cavium.com>
---
iscsiuio/README | 4 ++--
iscsiuio/RELEASE.TXT | 39 +++++++++++++++++++++++++++++++++++++--
iscsiuio/configure.ac | 4 ++--
3 files changed, 41 insertions(+), 6 deletions(-)

diff --git a/iscsiuio/README b/iscsiuio/README
index ca2da16a7342..9cbf7ce6717a 100644
--- a/iscsiuio/README
+++ b/iscsiuio/README
@@ -1,6 +1,6 @@
Iscsiuio Userspace Tool
-Version 0.7.8.3
-Sept 28, 2016
+Version 0.7.8.4
+Feb 22, 2018
------------------------------------------------------
This tool is to be used in conjunction with the QLogic NetXtreme II Linux
diff --git a/iscsiuio/RELEASE.TXT b/iscsiuio/RELEASE.TXT
index 69c5b5f6bd61..ca51b26338a1 100644
--- a/iscsiuio/RELEASE.TXT
+++ b/iscsiuio/RELEASE.TXT
@@ -1,7 +1,7 @@
Release Notes
QLogic uIP Linux Driver
- Version 0.7.8.3
- 9/28/2016
+ Version 0.7.8.4
+ 2/22/2018
QLogic Corporation
26650 Aliso Viejo Pkwy,
@@ -12,6 +12,41 @@
All rights reserved
+
+uIP v0.7.8.4 (Feb 22, 2018)
+=======================================================
+ Fixes:
+ -------
+ 1. Problem: CQ95605: iSCSI BFS in DHCP config intermittently fails to boot
+ into the OS when source and destination addresses are in
+ different networks.
+ Change: Allow ARP for non-matching source and destination addresses.
+ For source and destination IP addresses in different networks,
+ continue with the ARP retries and further login process
+ instead of assuming abrupt failure. iSCSI offload adapters
+ may not rely on netmask information for successful iSCSI
+ target login.
+ Impact: All
+
+uIP v0.7.8.3 (May 18, 2017)
+=======================================================
+ Fixes:
+ -------
+ 1. Problem: CQ93985: iscsiuio seg faults if discovery done to not
+ reachable target
+ Change: Serialize xmit_mutex lock to prevent iscsiuio seg fault.
+ Impact: All
+
+ 2. Problem: CQ91497 - Initiator fails to acquire IPv6 DHCP address
+ from the DHCP server
+ Change: Initialize the transaction-id within the dhcpv6 packet with
+ correct byte order, to fix the trans-id mismatch error.
+ Impact: All
+
+ 3. Problem: Missing qedi ping transport hook
+ Change: Add qedi ping transport hook
+ Impact: 10/25/40/50GGbE Controller (iSCSI)
+
uIP v0.7.8.3 (Sept 28, 2016)
=======================================================
Enhancements
diff --git a/iscsiuio/configure.ac b/iscsiuio/configure.ac
index 075d07d04f34..fa67ea74c47a 100644
--- a/iscsiuio/configure.ac
+++ b/iscsiuio/configure.ac
@@ -12,9 +12,9 @@ dnl Benjamin Li (benli@broadcom.com)
dnl
PACKAGE=iscsiuio
-VERSION=0.7.8.3
+VERSION=0.7.8.4
-AC_INIT([iscsiuio], [0.7.8.3], [QLogic-Storage-Upstream@cavium.com])
+AC_INIT([iscsiuio], [0.7.8.4], [QLogic-Storage-Upstream@cavium.com])
AM_INIT_AUTOMAKE
AC_CONFIG_HEADER(config.h)

31
SOURCES/open-iscsi-2.0.876-3-qedi.c-Removed-unused-linux-ethtool.h.patch

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
From: Chris Leech <cleech@redhat.com>
Subject: qedi.c: Removed unused linux/ethtool.h

Bugzilla: ZZZ
Upstream Status:
Build Info: XXX
Tested:

commit 197713ad7e3e944102bbd792e1ab9ec4a67100c0
Author: Khem Raj <raj.khem@gmail.com>
Date: Fri Feb 2 23:25:21 2018 -0800

qedi.c: Removed unused linux/ethtool.h
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
iscsiuio/src/unix/libs/qedi.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/iscsiuio/src/unix/libs/qedi.c b/iscsiuio/src/unix/libs/qedi.c
index b81fecdfe78f..24cb89ad3580 100644
--- a/iscsiuio/src/unix/libs/qedi.c
+++ b/iscsiuio/src/unix/libs/qedi.c
@@ -49,7 +49,6 @@
#include <arpa/inet.h>
#include <linux/types.h>
#include <linux/sockios.h>
-#include <linux/ethtool.h>
#include <linux/netlink.h>
#include <sys/mman.h>
#include <sys/ioctl.h>

36
SOURCES/open-iscsi-2.0.876-31-Fix-iscsiuio-segfault-when-shutting-down.patch

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
From: Chris Leech <cleech@redhat.com>
Subject: Fix iscsiuio segfault when shutting down.

Bugzilla: ZZZ
Upstream Status:
Build Info: XXX
Tested:

commit 2bdcae8a9969295183377342cfe218d1c5d263db
Author: Lee Duncan <lduncan@suse.com>
Date: Thu May 31 08:42:58 2018 -0700

Fix iscsiuio segfault when shutting down.
If iscsiuio is stopped when first starting up, it can easily
hit a window where pthread_cancel() is called before pthread_create()
finishesx The problem was found by kiyo@jp.fujitsu.com, who also
proposed the fix.
---
iscsiuio/src/unix/iscsid_ipc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/iscsiuio/src/unix/iscsid_ipc.c b/iscsiuio/src/unix/iscsid_ipc.c
index d4322350fcf6..2acac485af72 100644
--- a/iscsiuio/src/unix/iscsid_ipc.c
+++ b/iscsiuio/src/unix/iscsid_ipc.c
@@ -1245,7 +1245,8 @@ void iscsid_cleanup()
{
int rc;
- if (iscsid_opts.fd != INVALID_FD) {
+ if (iscsid_opts.fd != INVALID_FD &&
+ iscsid_opts.thread != INVALID_THREAD) {
rc = pthread_cancel(iscsid_opts.thread);
if (rc != 0) {
LOG_ERR("Could not cancel iscsid listening thread: %s",

208
SOURCES/open-iscsi-2.0.876-41-vlan-setting-sync-across-ipv4-ipv6-for-be2iscsi.patch

@ -0,0 +1,208 @@ @@ -0,0 +1,208 @@
From 2cee7f4a011619480c83d8279fe5d15de6e37ea8 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Fri, 22 Jun 2018 12:25:05 -0700
Subject: [PATCH 1/1] vlan setting sync across ipv4/ipv6 for be2iscsi

be2iscsi exports two ifaces per host port for ipv4 and ipv6 network
configurations. But, they need to have the same link level configuration
including vlan settings. If vlan setting are modified in only one iface
record, then whichever record is applied last (filesystem dependant I
think) will take effect and things may not work.

This change to iscsiadm applies vlan updates to all records with
matching MAC addresses if a flag is set on the transport.
The new transport flag is only set for be2iscsi.
---
usr/iscsiadm.c | 132 ++++++++++++++++++++++++++++++++++++++++++++------------
usr/transport.c | 1 +
usr/transport.h | 3 ++
3 files changed, 108 insertions(+), 28 deletions(-)

diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c
index 6245e89d46cb..9083132942e2 100644
--- a/usr/iscsiadm.c
+++ b/usr/iscsiadm.c
@@ -2311,6 +2311,89 @@ static int verify_iface_params(struct list_head *params, struct node_rec *rec)
return 0;
}
+static int iface_param_update(struct iface_rec *iface, struct list_head *params)
+{
+ struct node_rec *rec;
+ int rc = 0;
+
+ rec = idbm_create_rec(NULL, -1, NULL, -1, iface, 1);
+ if (!rec) {
+ rc = ISCSI_ERR_INVAL;
+ goto update_fail;
+ }
+
+ if (iscsi_check_for_running_session(rec))
+ log_warning("Updating iface while iscsi sessions "
+ "are using it. You must logout the running "
+ "sessions then log back in for the "
+ "new settings to take affect.");
+
+ rc = verify_iface_params(params, rec);
+ if (rc)
+ goto update_fail;
+
+ rc = iface_conf_update(params, &rec->iface);
+ if (rc)
+ goto update_fail;
+
+ rc = __for_each_matched_rec(0, rec, params, idbm_node_set_param);
+ if (rc == ISCSI_ERR_NO_OBJS_FOUND)
+ rc = 0;
+ else if (rc)
+ goto update_fail;
+
+ printf("%s updated.\n", iface->name);
+ free(rec);
+ return rc;
+
+update_fail:
+ log_error("Could not update iface %s: %s",
+ iface->name, iscsi_err_to_str(rc));
+ free(rec);
+ return rc;
+}
+
+struct iface_param_sync {
+ struct iface_rec *primary;
+ struct list_head *params;
+ int count;
+};
+
+static int update_sync_params(void *data, struct iface_rec *iface)
+{
+ struct iface_param_sync *iface_params = data;
+ struct iface_rec *primary = iface_params->primary;
+ struct list_head *params = iface_params->params;
+
+ if ((strcmp(primary->transport_name, iface->transport_name)) ||
+ (strcmp(primary->hwaddress, iface->hwaddress)) ||
+ (primary->iface_num != iface->iface_num))
+ return 0;
+
+ return iface_param_update(iface, params);
+}
+
+static int split_vlan_params(struct list_head *params, struct list_head *vlan_params)
+{
+ struct user_param *param, *tmp;
+
+ list_for_each_entry_safe(param, tmp, params, list) {
+ if (!strncmp(param->name, "iface.vlan", 10)) {
+ list_move_tail(&param->list, vlan_params);
+ }
+ }
+ return 0;
+}
+
+static inline void list_splice_tail(struct list_head *list, struct list_head *head)
+{
+ list->prev->next = head;
+ list->next->prev = head->prev;
+ head->prev->next = list->next;
+ head->prev = list->prev;
+ INIT_LIST_HEAD(list);
+}
+
/* TODO: merge iter helpers and clean them up, so we can use them here */
static int exec_iface_op(int op, int do_show, int info_level,
struct iface_rec *iface, uint64_t host_no,
@@ -2320,6 +2403,8 @@ static int exec_iface_op(int op, int do_show, int info_level,
struct node_rec *rec = NULL;
int rc = 0;
+ LIST_HEAD(vlan_params);
+ struct iscsi_transport *t;
switch (op) {
case OP_NEW:
if (!iface) {
@@ -2381,36 +2466,27 @@ delete_fail:
rec = idbm_create_rec(NULL, -1, NULL, -1, iface, 1);
if (!rec) {
rc = ISCSI_ERR_INVAL;
- goto update_fail;
+ break;
}
-
- if (iscsi_check_for_running_session(rec))
- log_warning("Updating iface while iscsi sessions "
- "are using it. You must logout the running "
- "sessions then log back in for the "
- "new settings to take affect.");
-
- rc = verify_iface_params(params, rec);
- if (rc)
+ t = iscsi_sysfs_get_transport_by_name(rec->iface.transport_name);
+ if (!t) {
+ log_error("Cound not locate transport for iface %s", iface->name);
+ rc = ISCSI_ERR_INVAL;
break;
-
- /* pass rec's iface because it has the db values */
- rc = iface_conf_update(params, &rec->iface);
- if (rc)
- goto update_fail;
-
- rc = __for_each_matched_rec(0, rec, params,
- idbm_node_set_param);
- if (rc == ISCSI_ERR_NO_OBJS_FOUND)
- rc = 0;
- else if (rc)
- goto update_fail;
-
- printf("%s updated.\n", iface->name);
- break;
-update_fail:
- log_error("Could not update iface %s: %s",
- iface->name, iscsi_err_to_str(rc));
+ }
+ if (t->template->sync_vlan_settings) {
+ /* sync shared vlan settings across ifaces */
+ int nr_found = 0;
+ struct iface_param_sync sync_params = {
+ .primary = &rec->iface,
+ .params = &vlan_params,
+ .count = 0,
+ };
+ split_vlan_params(params, &vlan_params);
+ iface_for_each_iface(&sync_params, 1, &nr_found, update_sync_params);
+ }
+ iface_param_update(&rec->iface, params);
+ list_splice_tail(&vlan_params, params);
break;
case OP_APPLY:
if (!iface) {
diff --git a/usr/transport.c b/usr/transport.c
index 3b7a00a2245e..35a8ccd4a400 100644
--- a/usr/transport.c
+++ b/usr/transport.c
@@ -91,6 +91,7 @@ struct iscsi_transport_template bnx2i = {
struct iscsi_transport_template be2iscsi = {
.name = "be2iscsi",
.bind_ep_required = 1,
+ .sync_vlan_settings = 1,
.create_conn = be2iscsi_create_conn,
.ep_connect = ktransport_ep_connect,
.ep_poll = ktransport_ep_poll,
diff --git a/usr/transport.h b/usr/transport.h
index b67776b47288..07027564e46b 100644
--- a/usr/transport.h
+++ b/usr/transport.h
@@ -40,6 +40,9 @@ struct iscsi_transport_template {
uint8_t use_boot_info;
uint8_t bind_ep_required;
uint8_t no_netdev;
+ /* be2iscsi has a single host vlan setting,
+ * but uses 2 ifaces for ipv4 and ipv6 settings; keep them in sync */
+ uint8_t sync_vlan_settings;
int (*ep_connect) (struct iscsi_conn *conn, int non_blocking);
int (*ep_poll) (struct iscsi_conn *conn, int timeout_ms);
void (*ep_disconnect) (struct iscsi_conn *conn);
--
2.14.4

248
SOURCES/open-iscsi-2.0.876-54-iscsiuio-Add-inter-host-mutex-while-doing-xmit.patch

@ -0,0 +1,248 @@ @@ -0,0 +1,248 @@
From d469a2e15e8558cf8ba34db376b4b777177a016b Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Fri, 22 Jun 2018 12:30:09 -0700
Subject: [PATCH 1/1] iscsiuio: Add inter-host mutex while doing xmit

Bugzilla: ZZZ
Upstream Status:
Build Info: XXX
Tested:

commit 9501dcaf5be474b4cb882a5e00f875f8c57e0e8e
Author: Manish Rangankar <manish.rangankar@cavium.com>
Date: Wed Jun 20 02:33:36 2018 -0400

iscsiuio: Add inter-host mutex while doing xmit

This avoids the netlink buffer corruption when more than one host
try to xmit packet at the same time.

Signed-off-by: Manish Rangankar <manish.rangankar@cavium.com>
---
iscsiuio/src/unix/libs/cnic.c | 2 ++
iscsiuio/src/unix/libs/qedi.c | 38 +++++++++++++++++++++++++++++++++-----
iscsiuio/src/unix/nic.c | 15 ++++++++++++---
iscsiuio/src/unix/nic_utils.c | 4 ++++
4 files changed, 51 insertions(+), 8 deletions(-)

diff --git a/iscsiuio/src/unix/libs/cnic.c b/iscsiuio/src/unix/libs/cnic.c
index 32166edf243f..b953278e5eab 100644
--- a/iscsiuio/src/unix/libs/cnic.c
+++ b/iscsiuio/src/unix/libs/cnic.c
@@ -106,6 +106,8 @@ static int cnic_arp_send(nic_t *nic, nic_interface_t *nic_iface, int fd,
static const uint8_t multicast_mac[] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
+ LOG_DEBUG(PFX "%s: host:%d - try getting xmit mutex cnic arp send",
+ nic->log_name, nic->host_no);
rc = pthread_mutex_trylock(&nic->xmit_mutex);
if (rc != 0) {
LOG_DEBUG(PFX "%s: could not get xmit_mutex", nic->log_name);
diff --git a/iscsiuio/src/unix/libs/qedi.c b/iscsiuio/src/unix/libs/qedi.c
index 5bb0682c8bed..32cab48fed17 100644
--- a/iscsiuio/src/unix/libs/qedi.c
+++ b/iscsiuio/src/unix/libs/qedi.c
@@ -74,6 +74,8 @@
extern int nl_sock;
+static pthread_mutex_t host_mutex = PTHREAD_MUTEX_INITIALIZER;
+
/* Foward struct declarations */
struct nic_ops qedi_op;
@@ -812,15 +814,26 @@ static void qedi_prepare_xmit_packet(nic_t *nic,
struct uip_vlan_eth_hdr *eth_vlan = (struct uip_vlan_eth_hdr *)pkt->buf;
struct uip_eth_hdr *eth = (struct uip_eth_hdr *)bp->tx_pkt;
+ LOG_DEBUG(PFX "%s: pkt->buf_size=%d tpid=0x%x", nic->log_name,
+ pkt->buf_size, eth_vlan->tpid);
+
if (eth_vlan->tpid == htons(UIP_ETHTYPE_8021Q)) {
memcpy(bp->tx_pkt, pkt->buf, sizeof(struct uip_eth_hdr));
eth->type = eth_vlan->type;
pkt->buf_size -= (sizeof(struct uip_vlan_eth_hdr) -
sizeof(struct uip_eth_hdr));
+
+ LOG_DEBUG(PFX "%s: pkt->buf_size=%d type=0x%x", nic->log_name,
+ pkt->buf_size, eth->type);
+ LOG_DEBUG(PFX "%s: pkt->buf_size - eth_hdr_size = %d", nic->log_name,
+ pkt->buf_size - sizeof(struct uip_eth_hdr));
+
memcpy(bp->tx_pkt + sizeof(struct uip_eth_hdr),
pkt->buf + sizeof(struct uip_vlan_eth_hdr),
pkt->buf_size - sizeof(struct uip_eth_hdr));
} else {
+ LOG_DEBUG(PFX "%s: NO VLAN pkt->buf_size=%d", nic->log_name,
+ pkt->buf_size);
memcpy(bp->tx_pkt, pkt->buf, pkt->buf_size);
}
@@ -876,11 +889,18 @@ void qedi_start_xmit(nic_t *nic, size_t len, u16_t vlan_id)
path_data->handle = QEDI_PATH_HANDLE;
path_data->vlan_id = vlan_id;
uctrl->host_tx_pkt_len = len;
+ LOG_DEBUG(PFX "%s: host_no:%d vlan_id=%d, tx_pkt_len=%d",
+ nic->log_name, ev->u.set_path.host_no, path_data->vlan_id, uctrl->host_tx_pkt_len);
+ LOG_DEBUG(PFX "%s: ACQUIRE HOST MUTEX", nic->log_name);
+ pthread_mutex_lock(&host_mutex);
rc = __kipc_call(nl_sock, ev, buflen);
if (rc > 0) {
bp->tx_prod++;
uctrl->host_tx_prod++;
+ LOG_DEBUG(PFX "%s: bp->tx_prod: %d, uctrl->host_tx_prod=%d",
+ nic->log_name, bp->tx_prod, uctrl->host_tx_prod);
+
msync(uctrl, sizeof(struct qedi_uio_ctrl), MS_SYNC);
LOG_PACKET(PFX "%s: sent %d bytes using bp->tx_prod: %d",
nic->log_name, len, bp->tx_prod);
@@ -888,6 +908,8 @@ void qedi_start_xmit(nic_t *nic, size_t len, u16_t vlan_id)
LOG_ERR(PFX "Pkt transmission failed: %d", rc);
}
+ LOG_DEBUG(PFX "%s: RELEASE HOST MUTEX", nic->log_name);
+ pthread_mutex_unlock(&host_mutex);
free(ubuf);
}
@@ -923,14 +945,18 @@ int qedi_write(nic_t *nic, nic_interface_t *nic_iface, packet_t *pkt)
struct timespec sleep_req = {.tv_sec = 0, .tv_nsec = 5000000 },
sleep_rem;
+ LOG_DEBUG(PFX "%s: host:%d - calling clear_tx_intr from qedi_write",
+ nic->log_name, nic->host_no);
if (qedi_clear_tx_intr(nic) == 0)
break;
nanosleep(&sleep_req, &sleep_rem);
}
+ LOG_DEBUG(PFX "%s: host:%d - try getting xmit mutex",
+ nic->log_name, nic->host_no);
if (pthread_mutex_trylock(&nic->xmit_mutex) != 0) {
- LOG_PACKET(PFX "%s: Dropped previous transmitted packet",
+ LOG_DEBUG(PFX "%s: Dropped previous transmitted packet",
nic->log_name);
return -EINVAL;
}
@@ -944,7 +970,7 @@ int qedi_write(nic_t *nic, nic_interface_t *nic_iface, packet_t *pkt)
nic->stats.tx.packets++;
nic->stats.tx.bytes += uip->uip_len;
- LOG_PACKET(PFX "%s: transmitted %d bytes dev->tx_cons: %d, dev->tx_prod: %d, dev->tx_bd_prod:%d",
+ LOG_DEBUG(PFX "%s: transmitted %d bytes dev->tx_cons: %d, dev->tx_prod: %d, dev->tx_bd_prod:%d",
nic->log_name, pkt->buf_size,
bp->tx_cons, bp->tx_prod, bp->tx_bd_prod);
@@ -1071,7 +1097,7 @@ static int qedi_clear_tx_intr(nic_t *nic)
return -EINVAL;
}
- LOG_PACKET(PFX "%s: clearing tx interrupt [%d %d]",
+ LOG_DEBUG(PFX "%s: clearing tx interrupt [%d %d]",
nic->log_name, bp->tx_cons, hw_cons);
bp->tx_cons = hw_cons;
@@ -1083,7 +1109,7 @@ static int qedi_clear_tx_intr(nic_t *nic)
packet_t *pkt;
int i;
- LOG_PACKET(PFX "%s: sending queued tx packet", nic->log_name);
+ LOG_DEBUG(PFX "%s: sending queued tx packet", nic->log_name);
pkt = nic_dequeue_tx_packet(nic);
/* Got a TX packet buffer of the TX queue and put it onto
@@ -1096,7 +1122,7 @@ static int qedi_clear_tx_intr(nic_t *nic)
(pkt->nic_iface->vlan_priority << 12) |
pkt->nic_iface->vlan_id);
- LOG_PACKET(PFX "%s: transmitted queued packet %d bytes, dev->tx_cons: %d, dev->tx_prod: %d, dev->tx_bd_prod:%d",
+ LOG_DEBUG(PFX "%s: transmitted queued packet %d bytes, dev->tx_cons: %d, dev->tx_prod: %d, dev->tx_bd_prod:%d",
nic->log_name, pkt->buf_size,
bp->tx_cons, bp->tx_prod, bp->tx_bd_prod);
@@ -1124,6 +1150,8 @@ static int qedi_clear_tx_intr(nic_t *nic)
}
}
+ LOG_DEBUG(PFX "%s: host:%d - releasing xmit mutex",
+ nic->log_name, nic->host_no);
pthread_mutex_unlock(&nic->xmit_mutex);
return 0;
diff --git a/iscsiuio/src/unix/nic.c b/iscsiuio/src/unix/nic.c
index a5f714a91923..dfc2ad0a7a7b 100644
--- a/iscsiuio/src/unix/nic.c
+++ b/iscsiuio/src/unix/nic.c
@@ -799,6 +799,8 @@ int nic_process_intr(nic_t *nic, int discard_check)
nic->intr_count = count;
+ LOG_DEBUG(PFX "%s: host:%d - calling clear_tx_intr from process_intr",
+ nic->log_name, nic->host_no);
(*nic->ops->clear_tx_intr) (nic);
ret = 1;
}
@@ -1036,9 +1038,11 @@ int process_packets(nic_t *nic,
case UIP_ETHTYPE_IPv4:
case UIP_ETHTYPE_ARP:
af_type = AF_INET;
+ LOG_DEBUG(PFX "%s: ARP or IPv4 vlan:0x%x ethertype:0x%x",
+ nic->log_name, vlan_id, type);
break;
default:
- LOG_PACKET(PFX "%s: Ignoring vlan:0x%x ethertype:0x%x",
+ LOG_DEBUG(PFX "%s: Ignoring vlan:0x%x ethertype:0x%x",
nic->log_name, vlan_id, type);
goto done;
}
@@ -1064,7 +1068,7 @@ int process_packets(nic_t *nic,
if (nic_iface == NULL) {
/* Matching nic_iface not found */
pthread_mutex_unlock(&nic->nic_mutex);
- LOG_PACKET(PFX "%s: Couldn't find interface for "
+ LOG_DEBUG(PFX "%s: Couldn't find interface for "
"VLAN: %d af_type %d",
nic->log_name, vlan_id, af_type);
rc = EINVAL; /* Return the +error code */
@@ -1118,6 +1122,8 @@ nic_iface_present:
prepare_ipv4_packet(nic, nic_iface,
ustack, pkt);
+ LOG_DEBUG(PFX "%s: write called after arp_ipin, uip_len=%d",
+ nic->log_name, ustack->uip_len);
(*nic->ops->write) (nic, nic_iface, pkt);
}
@@ -1129,8 +1135,11 @@ nic_iface_present:
* in data that should be sent out on the
* network, the global variable uip_len
* is set to a value > 0. */
- if (pkt->buf_size > 0)
+ if (pkt->buf_size > 0) {
+ LOG_DEBUG(PFX "%s: write called after arp_arpin, bufsize=%d",
+ nic->log_name, pkt->buf_size);
(*nic->ops->write) (nic, nic_iface, pkt);
+ }
break;
}
ustack->uip_len = 0;
diff --git a/iscsiuio/src/unix/nic_utils.c b/iscsiuio/src/unix/nic_utils.c
index 6e580f862eea..988905bca2a9 100644
--- a/iscsiuio/src/unix/nic_utils.c
+++ b/iscsiuio/src/unix/nic_utils.c
@@ -1435,6 +1435,10 @@ nic_interface_t *nic_find_nic_iface(nic_t *nic,
nic_interface_t *current_vlan = NULL;
while (current != NULL) {
+ LOG_DEBUG(PFX "%s: incoming protocol: %d, vlan_id:%d iface_num: %d, request_type: %d",
+ nic->log_name, protocol, vlan_id, iface_num, request_type);
+ LOG_DEBUG(PFX "%s: host:%d iface_num: 0x%x VLAN: %d protocol: %d",
+ nic->log_name, nic->host_no, current->iface_num, current->vlan_id, current->protocol);
if (current->protocol != protocol)
goto next;
--
2.14.4

23
SPECS/iscsi-initiator-utils.spec

@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
Summary: iSCSI daemon and utility programs
Name: iscsi-initiator-utils
Version: 6.%{open_iscsi_version}.%{open_iscsi_build}
Release: 7%{?dist}
Release: 10%{?dist}
Group: System Environment/Daemons
License: GPLv2+
URL: http://www.open-iscsi.org
@ -48,7 +48,17 @@ Patch168: 0168-update-handling-of-boot-sessions.patch @@ -48,7 +48,17 @@ Patch168: 0168-update-handling-of-boot-sessions.patch
Patch169: 0169-update-iscsi.service-for-boot-session-recovery.patch
Patch170: 0170-fix-systemd-unit-wants.patch
Patch172: 0172-move-cleanup-to-seperate-service.patch
Patch175: be2iscsi-vlan.patch
Patch175: open-iscsi-2.0.876-41-vlan-setting-sync-across-ipv4-ipv6-for-be2iscsi.patch
Patch176: 0001-enable-MaxOutstandingR2T-negotiation.patch
Patch177: open-iscsi-2.0.874-30-iscsiuio-fix-dhcpv6-transaction-id-mismatch-error.patch
Patch178: open-iscsi-2.0.874-31-iscsiuio-serialize-xmit_mutex-lock-to-prevent-iscsiuio-seg-fault.patch
Patch179: open-iscsi-2.0.874-32-iscsiuio-allow-ARP-for-non-matching-src-and-dst-addresses.patch
Patch180: open-iscsi-2.0.874-33-iscsiuio-v0.7.8.4.patch
Patch181: open-iscsi-2.0.876-3-qedi.c-Removed-unused-linux-ethtool.h.patch
Patch182: open-iscsi-2.0.876-31-Fix-iscsiuio-segfault-when-shutting-down.patch
Patch183: open-iscsi-2.0.876-54-iscsiuio-Add-inter-host-mutex-while-doing-xmit.patch
Patch184: 0184-set-iscsid.safe_logout-to-Yes-by-default.patch

# upstream removed internal open-isns, but not taking that here just yet
# it requires repackaging isns-utils to provide a debug package
Patch198: keep-open-isns.patch
@ -274,6 +284,15 @@ fi @@ -274,6 +284,15 @@ fi
%{_includedir}/libiscsi.h

%changelog
* Wed Aug 29 2018 Chris Leech <cleech@redhat.com> - 6.2.0.874-10
- 1185734 set iscsid.safe_logout to Yes by default

* Fri Jun 22 2018 Chris Leech <cleech@redhat.com> - 6.2.0.874-9
- 1578984 update iscsiuio to v0.7.8.4

* Fri Jun 22 2018 Chris Leech <cleech@redhat.com> - 6.2.0.874-8
- 1278438 enable MaxOutstandingR2T negotiation during login

* Thu Nov 30 2017 Chris Leech <cleech@redhat.com> - 6.2.0.874-7
- 1328694 keep vlan settings in sync for ipv4/ipv6 iface records with be2iscsi


Loading…
Cancel
Save