Compare commits

...

No commits in common. "c8s-stream-rhel" and "c9s" have entirely different histories.

17 changed files with 74 additions and 681 deletions

6
.gitignore vendored
View File

@ -1 +1,5 @@
SOURCES/1.18.0.tar.gz
/libiscsi-1.9.0.tar.gz
/libiscsi-1.11.0.tar.gz
/1.15.0.tar.gz
/1.18.0.tar.gz
/libiscsi-20200224-git6ea30ae.tar.xz

View File

@ -1 +0,0 @@
9f0d4732379a3203d1d559543dda043c5f8a49ab SOURCES/1.18.0.tar.gz

18
README.rst Normal file
View File

@ -0,0 +1,18 @@
===================
libiscsi development
===================
libiscsi is maintained in a `source tree`_ rather than directly in dist-git
using packit service that provides way to develope using regular source code
structure and provides way to generate SRPM and build using koji service.
Developers deliver all changes to source-git using merge request. Only maintainers
will be pushing changes sent to source-git to dist-git.
Each release in dist-git is tagged in the source repository so you can easily
check out the source tree for a build. The tags are in the format
name-version-release, but note release doesn't contain the dist tag since the
source can be built in different build roots (Fedora, CentOS, etc.)
.. _source tree: https://gitlab.com/redhat/centos-stream/src/libiscsi

View File

@ -1,25 +0,0 @@
Binary files libiscsi-1.18.0/.git/index and new/.git/index differ
diff -rup libiscsi-1.18.0/lib/iser.c new/lib/iser.c
--- libiscsi-1.18.0/lib/iser.c 2018-04-26 09:51:53.869133618 -0400
+++ new/lib/iser.c 2018-04-26 10:03:45.163899456 -0400
@@ -32,6 +32,20 @@
#include <semaphore.h>
#include <poll.h>
+
+#ifndef container_of
+/**
+ * container_of - cast a member of a structure out to the containing structure
+ * @ptr: the pointer to the member.
+ * @type: the type of the container struct this is embedded in.
+ * @member: the name of the member within the struct.
+ *
+ */
+#define container_of(ptr, type, member) \
+ ((type *) ((uint8_t *)(ptr) - offsetof(type, member)))
+#endif
+
+
#ifdef __linux
static int cq_handle(struct iser_conn *iser_conn);

View File

@ -1,13 +0,0 @@
diff --git a/configure.ac b/configure.ac
index e1d01c6..72a5019 100644
--- a/configure.ac
+++ b/configure.ac
@@ -118,7 +118,7 @@
fi
AM_CONDITIONAL(ISCSITEST, [test "$ac_cv_have_cunit" = yes -a "$enable_shared" = "yes"])
-AM_CONDITIONAL(LD_ISCSI, [expr "(" "$host_os" : "linux" ")" "&" "$enable_shared" "=" "yes"])
+AM_CONDITIONAL(LD_ISCSI, [false])
AC_CHECK_MEMBER([struct CU_SuiteInfo.pSetUpFunc],
[AC_DEFINE([HAVE_CU_SUITEINFO_PSETUPFUNC], 1,

View File

@ -1,117 +0,0 @@
From a239423a0f9250dad9998152fa4b4b46accdf641 Mon Sep 17 00:00:00 2001
From: Michal Suchanek <msuchanek@suse.de>
Date: Mon, 14 Nov 2016 17:28:31 +0100
Subject: [PATCH] Fix 32bit build.
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
---
lib/iser.c | 7 ++++---
test-tool/test_compareandwrite_invalid_dataout_size.c | 4 ++--
test-tool/test_writesame10_invalid_dataout_size.c | 4 ++--
test-tool/test_writesame16_invalid_dataout_size.c | 4 ++--
4 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/lib/iser.c b/lib/iser.c
index ad3adb3..17832c3 100644
--- a/lib/iser.c
+++ b/lib/iser.c
@@ -23,6 +23,7 @@
#include <string.h>
#include <stdbool.h>
#include <unistd.h>
+#include <inttypes.h>
#include "iscsi.h"
#include "iser-private.h"
#include "iscsi-private.h"
@@ -524,7 +525,7 @@ iser_prepare_read_cmd(struct iser_conn *iser_conn,struct iser_pdu *iser_pdu)
}
tx_desc->data_dir = DATA_READ;
- hdr->read_va = htobe64((uint64_t)tx_desc->data_buff);
+ hdr->read_va = htobe64((intptr_t)tx_desc->data_buff);
hdr->read_stag = htobe32((uint32_t)tx_desc->data_mr->rkey);
hdr->flags |= ISER_RSV;
@@ -565,7 +566,7 @@ iser_prepare_write_cmd(struct iser_conn *iser_conn, struct iser_pdu *iser_pdu)
hdr->flags |= ISER_WSV;
hdr->write_stag = htobe32((uint32_t)(tx_desc->data_mr->rkey));
- hdr->write_va = htobe64((uint64_t)(tx_desc->data_buff));
+ hdr->write_va = htobe64((intptr_t)(tx_desc->data_buff));
return 0;
}
@@ -1146,7 +1147,7 @@ static int iser_handle_wc(struct ibv_wc *wc,struct iser_conn *iser_conn)
wc->wr_id, wc->status, wc->vendor_err);
return iscsi_service_reconnect_if_loggedin(iscsi);
} else {
- iscsi_set_error(iscsi, "flush error: wr id %lx\n", wc->wr_id);
+ iscsi_set_error(iscsi, "flush error: wr id %" PRIx64 "\n", wc->wr_id);
return 0;
}
diff --git a/test-tool/test_compareandwrite_invalid_dataout_size.c b/test-tool/test_compareandwrite_invalid_dataout_size.c
index b27b4f8..76da1e0 100644
--- a/test-tool/test_compareandwrite_invalid_dataout_size.c
+++ b/test-tool/test_compareandwrite_invalid_dataout_size.c
@@ -64,7 +64,7 @@ test_compareandwrite_invalid_dataout_size(void)
logging(LOG_VERBOSE, "Check too small DataOut");
- logging(LOG_VERBOSE, "COMPAREANDWRITE with DataOut==%ld (4 blocks) "
+ logging(LOG_VERBOSE, "COMPAREANDWRITE with DataOut==%zd (4 blocks) "
"and TL == 1 ", 4 * block_size);
new_tl = 1;
@@ -74,7 +74,7 @@ test_compareandwrite_invalid_dataout_size(void)
EXPECT_STATUS_GENERIC_BAD);
logging(LOG_VERBOSE, "Check too large DataOut");
- logging(LOG_VERBOSE, "COMPAREANDWRITE with DataOut==%ld (4 blocks) "
+ logging(LOG_VERBOSE, "COMPAREANDWRITE with DataOut==%zd (4 blocks) "
"and TL == 3 ", 4 * block_size);
new_tl = 2;
diff --git a/test-tool/test_writesame10_invalid_dataout_size.c b/test-tool/test_writesame10_invalid_dataout_size.c
index f521908..119d786 100644
--- a/test-tool/test_writesame10_invalid_dataout_size.c
+++ b/test-tool/test_writesame10_invalid_dataout_size.c
@@ -41,13 +41,13 @@ test_writesame10_invalid_dataout_size(void)
memset(scratch, 0xa6, block_size);
logging(LOG_VERBOSE, "Check too small DataOut");
- logging(LOG_VERBOSE, "Unmap with DataOut==%ld (block_size==%ld)",
+ logging(LOG_VERBOSE, "Unmap with DataOut==%zd (block_size==%zd)",
block_size / 2, block_size);
WRITESAME10(sd, 0, block_size / 2, 1, 0, 1, 0, 0, scratch,
EXPECT_STATUS_GENERIC_BAD);
logging(LOG_VERBOSE, "Check too large DataOut");
- logging(LOG_VERBOSE, "Unmap with DataOut==%ld (block_size==%ld)",
+ logging(LOG_VERBOSE, "Unmap with DataOut==%zd (block_size==%zd)",
block_size * 2, block_size);
WRITESAME10(sd, 0, block_size * 2, 1, 0, 1, 0, 0, scratch,
EXPECT_STATUS_GENERIC_BAD);
diff --git a/test-tool/test_writesame16_invalid_dataout_size.c b/test-tool/test_writesame16_invalid_dataout_size.c
index 128673f..a2e22bb 100644
--- a/test-tool/test_writesame16_invalid_dataout_size.c
+++ b/test-tool/test_writesame16_invalid_dataout_size.c
@@ -41,13 +41,13 @@ test_writesame16_invalid_dataout_size(void)
memset(scratch, 0xa6, block_size);
logging(LOG_VERBOSE, "Check too small DataOut");
- logging(LOG_VERBOSE, "Unmap with DataOut==%ld (block_size==%ld)",
+ logging(LOG_VERBOSE, "Unmap with DataOut==%zd (block_size==%zd)",
block_size / 2, block_size);
WRITESAME16(sd, 0, block_size / 2, 1, 0, 1, 0, 0, scratch,
EXPECT_STATUS_GENERIC_BAD);
logging(LOG_VERBOSE, "Check too large DataOut");
- logging(LOG_VERBOSE, "Unmap with DataOut==%ld (block_size==%ld)",
+ logging(LOG_VERBOSE, "Unmap with DataOut==%zd (block_size==%zd)",
block_size * 2, block_size);
WRITESAME16(sd, 0, block_size * 2, 1, 0, 1, 0, 0, scratch,
EXPECT_STATUS_GENERIC_BAD);
--
2.13.6

View File

@ -1,35 +0,0 @@
upstream commits 854e37aab7d7d2093a0a6620a3257b8f2a1d405c
and fb45f0343e3de45f2bc7516591d36c7466c2184e
diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c
index cbadf85..20993d4 100644
--- a/test-tool/iscsi-support.c
+++ b/test-tool/iscsi-support.c
@@ -2931,16 +2931,17 @@ void populate_ident_tgt_desc(unsigned char *buf, struct scsi_device *dev)
for (desig = inq_di->designators; desig; desig = desig->next) {
switch (desig->designator_type) {
- case SCSI_DESIGNATOR_TYPE_VENDOR_SPECIFIC:
- case SCSI_DESIGNATOR_TYPE_T10_VENDORT_ID:
- case SCSI_DESIGNATOR_TYPE_EUI_64:
- case SCSI_DESIGNATOR_TYPE_NAA:
- if (prev_type <= desig->designator_type) {
- tgt_desig = desig;
- prev_type = desig->designator_type;
- }
- default:
- continue;
+ case SCSI_DESIGNATOR_TYPE_VENDOR_SPECIFIC:
+ case SCSI_DESIGNATOR_TYPE_T10_VENDORT_ID:
+ case SCSI_DESIGNATOR_TYPE_EUI_64:
+ case SCSI_DESIGNATOR_TYPE_NAA:
+ if (prev_type <= desig->designator_type) {
+ tgt_desig = desig;
+ prev_type = desig->designator_type;
+ }
+ continue;
+ default:
+ continue;
}
}
if (tgt_desig == NULL) {

View File

@ -1,38 +0,0 @@
From aa9406371751329a23fed8b8799046369c3e1686 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini@redhat.com>
Date: Tue, 9 Oct 2018 15:14:18 +0100
Subject: [PATCH 5/6] avoid fallthrough
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
Message-id: <20181009151419.20418-6-pbonzini@redhat.com>
Patchwork-id: 82502
O-Subject: [RHEL8 libiscsi PATCH 5/6] avoid fallthrough
Bugzilla: 1634541
RH-Acked-by: Thomas Huth <thuth@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
Avoid the new warning in GCC 8.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
(cherry picked from commit 679d0abe7c142df178a907397551c4d9695cc667)
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
---
lib/scsi-lowlevel.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/scsi-lowlevel.c b/lib/scsi-lowlevel.c
index 9c98c62..83cff18 100644
--- a/lib/scsi-lowlevel.c
+++ b/lib/scsi-lowlevel.c
@@ -1058,6 +1058,7 @@ scsi_maintenancein_datain_getfullsize(struct scsi_task *task)
(task_get_uint8(task, 1) & 0x80) ? 12 : 0 +
task_get_uint16(task, 2);
}
+ return -1;
default:
return -1;
}
--
1.8.3.1

View File

@ -1,43 +0,0 @@
From 871a0636a3f624d504e284da2336c75dd635d587 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini@redhat.com>
Date: Tue, 9 Oct 2018 15:14:19 +0100
Subject: [PATCH 6/6] avoid truncation when logging message that includes
target name
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
Message-id: <20181009151419.20418-7-pbonzini@redhat.com>
Patchwork-id: 82507
O-Subject: [RHEL8 libiscsi PATCH 6/6] avoid truncation when logging message that includes target name
Bugzilla: 1634541
RH-Acked-by: Thomas Huth <thuth@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
Avoid truncation warning from GCC 8.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
(cherry picked from commit bffafc1c3003c2ee05d28eaa345e5854bc36014d)
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
---
lib/logging.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/logging.c b/lib/logging.c
index bc31f24..727860b 100644
--- a/lib/logging.c
+++ b/lib/logging.c
@@ -73,9 +73,9 @@ iscsi_log_message(struct iscsi_context *iscsi, int level, const char *format, ..
}
if (iscsi->target_name[0]) {
- static char message2[1024];
+ static char message2[1282];
- snprintf(message2, 1024, "%s [%s]", message, iscsi->target_name);
+ snprintf(message2, 1282, "%s [%s]", message, iscsi->target_name);
iscsi->log_fn(level, message2);
}
else
--
1.8.3.1

View File

@ -1,39 +0,0 @@
From 2d293bde99f4214d8adb1932579bfbb6e59cf0a5 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini@redhat.com>
Date: Tue, 9 Oct 2018 15:14:17 +0100
Subject: [PATCH 4/6] do not warn for strncpy
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
Message-id: <20181009151419.20418-5-pbonzini@redhat.com>
Patchwork-id: 82504
O-Subject: [RHEL8 libiscsi PATCH 4/6] do not warn for strncpy
Bugzilla: 1634541
RH-Acked-by: Thomas Huth <thuth@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
strncpy use in iscsi_reconnect is just fine. Do not warn for it, and
also do not warn if clang does not recognize the flag.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
(cherry picked from commit 4728d4eaa605a02cfc767dd40e5436c670e88b0f)
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
---
configure.ac | 1 +
1 file changed, 1 insertion(+)
diff --git a/configure.ac b/configure.ac
index f0bbc00..1ccfc59 100644
--- a/configure.ac
+++ b/configure.ac
@@ -29,6 +29,7 @@ AC_ARG_ENABLE([werror], [AS_HELP_STRING([--disable-werror],
if test "$ac_cv_prog_gcc" = yes; then
WARN_CFLAGS="-Wall -W -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing"
+ WARN_CFLAGS="$WARN_CFLAGS -Wno-unknown-warning-option -Wno-stringop-truncation"
if test "x$enable_werror" != "xno"; then
WARN_CFLAGS="$WARN_CFLAGS -Werror"
fi
--
1.8.3.1

View File

@ -1,86 +0,0 @@
From 68f9e40e4daf0a758132c520ab81fe12c13f40a7 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini@redhat.com>
Date: Tue, 4 Dec 2018 17:38:39 +0000
Subject: [PATCH] fix connection to LUN with IPv6 address
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
Message-id: <20181204173839.18385-1-pbonzini@redhat.com>
Patchwork-id: 83252
O-Subject: [RHEL-8.0 libiscsi PATCH] fix connection to LUN with IPv6 address
Bugzilla: 1597942
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
RH-Acked-by: Daniel P. Berrange <berrange@redhat.com>
From: Ronnie Sahlberg <ronniesahlberg@gmail.com>
Bugzilla: 1597942
Brew build: 19370266
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
(cherry picked from commit 179f6b33d43f26cbca133ff03fa1bacc7e8a6120)
The patch has no commit message upstream, but it is pretty simple.
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
---
lib/socket.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/lib/socket.c b/lib/socket.c
index 036b4f4..a335f33 100644
--- a/lib/socket.c
+++ b/lib/socket.c
@@ -188,6 +188,20 @@ static int iscsi_tcp_connect(struct iscsi_context *iscsi, union socket_address *
int socksize;
+ switch (ai_family) {
+ case AF_INET:
+ socksize = sizeof(struct sockaddr_in);
+ break;
+ case AF_INET6:
+ socksize = sizeof(struct sockaddr_in6);
+ break;
+ default:
+ iscsi_set_error(iscsi, "Unknown address family :%d. "
+ "Only IPv4/IPv6 supported so far.",
+ ai_family);
+ return -1;
+ }
+
iscsi->fd = socket(ai_family, SOCK_STREAM, 0);
if (iscsi->fd == -1) {
iscsi_set_error(iscsi, "Failed to open iscsi socket. "
@@ -246,8 +260,6 @@ static int iscsi_tcp_connect(struct iscsi_context *iscsi, union socket_address *
ISCSI_LOG(iscsi,3,"TCP_NODELAY set to 1");
}
- socksize = sizeof(struct sockaddr_in); // Work-around for now, need to fix it
-
if (connect(iscsi->fd, &sa->sa, socksize) != 0
&& errno != EINPROGRESS) {
iscsi_set_error(iscsi, "Connect failed with errno : "
@@ -332,6 +344,7 @@ iscsi_connect_async(struct iscsi_context *iscsi, const char *portal,
case AF_INET:
socksize = sizeof(struct sockaddr_in);
memcpy(&sa.sin, ai->ai_addr, socksize);
+ sa.sin.sin_family = AF_INET;
sa.sin.sin_port = htons(port);
#ifdef HAVE_SOCK_SIN_LEN
sa.sin.sin_len = socksize;
@@ -341,6 +354,7 @@ iscsi_connect_async(struct iscsi_context *iscsi, const char *portal,
case AF_INET6:
socksize = sizeof(struct sockaddr_in6);
memcpy(&sa.sin6, ai->ai_addr, socksize);
+ sa.sin6.sin6_family = AF_INET6;
sa.sin6.sin6_port = htons(port);
#ifdef HAVE_SOCK_SIN_LEN
sa.sin6.sin6_len = socksize;
--
1.8.3.1

View File

@ -1,91 +0,0 @@
From 4c41675adc85891f6605bc94aaa1baf7f7dd67e7 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini@redhat.com>
Date: Wed, 10 Oct 2018 13:27:49 +0100
Subject: [PATCH 2/6] iser: fix posting of receive descriptors
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
Message-id: <20181010132749.7381-1-pbonzini@redhat.com>
Patchwork-id: 82566
O-Subject: [RHEL8 libiscsi PATCH 2/6] iser: fix posting of receive descriptors
Bugzilla: 1634541
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
RH-Acked-by: Thomas Huth <thuth@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
The old code is effectively always posting iser_conn->min_posted_rx
descriptors, since it is
if (outstanding + iser_conn->min_posted_rx <= iser_conn->qp_max_recv_dtos) {
if(iser_conn->qp_max_recv_dtos - outstanding > iser_conn->min_posted_rx)
count = iser_conn->min_posted_rx;
else
count = iser_conn->qp_max_recv_dtos - outstanding;
which is equivalent to
if(iser_conn->qp_max_recv_dtos - outstanding >= iser_conn->min_posted_rx)
if(iser_conn->qp_max_recv_dtos - outstanding > iser_conn->min_posted_rx)
count = iser_conn->min_posted_rx;
else
count = iser_conn->min_posted_rx;
So the "if" is redundant and the "min_posted_rx" is actually behaving more
like a _maximum_ number of posted descriptors in one iser_post_recvm.
Fix it with the (presumably) intended logic and remove a goto along
the way.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
(cherry picked from commit f0fcee72c477dea57f0a50887b7368ba6d4ec33b)
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
---
lib/iser.c | 24 +++++++++---------------
1 file changed, 9 insertions(+), 15 deletions(-)
diff --git a/lib/iser.c b/lib/iser.c
index 4b314be..e5c8435 100644
--- a/lib/iser.c
+++ b/lib/iser.c
@@ -1021,7 +1021,7 @@ iser_rcv_completion(struct iser_rx_desc *rx_desc,
struct iser_conn *iser_conn)
{
struct iscsi_in_pdu *in = NULL;
- int outstanding, count = 0, err;
+ int empty, err;
struct iscsi_context *iscsi = iser_conn->cma_id->context;
in = iscsi_malloc(iscsi, sizeof(*in));
@@ -1089,23 +1089,17 @@ nop_target:
* for the posted rx bufs refcount to become zero handles everything */
iser_conn->post_recv_buf_count--;
- if ((unsigned char *)rx_desc == iser_conn->login_resp_buf)
- goto receive;
-
- outstanding = iser_conn->post_recv_buf_count;
- if (outstanding + iser_conn->min_posted_rx <= iser_conn->qp_max_recv_dtos) {
- if(iser_conn->qp_max_recv_dtos - outstanding > iser_conn->min_posted_rx)
- count = iser_conn->min_posted_rx;
- else
- count = iser_conn->qp_max_recv_dtos - outstanding;
- err = iser_post_recvm(iser_conn, count);
- if (err) {
- err = -1;
- goto error;
+ if ((unsigned char *)rx_desc != iser_conn->login_resp_buf) {
+ empty = iser_conn->qp_max_recv_dtos - iser_conn->post_recv_buf_count;
+ if (empty >= iser_conn->min_posted_rx) {
+ err = iser_post_recvm(iser_conn, empty);
+ if (err) {
+ err = -1;
+ goto error;
+ }
}
}
-receive:
err = iscsi_process_pdu(iscsi, in);
error:
--
1.8.3.1

View File

@ -1,86 +0,0 @@
From b8cc526501b02438713e6cf88c709c4a12d11507 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini@redhat.com>
Date: Tue, 9 Oct 2018 15:14:14 +0100
Subject: [PATCH 1/6] iser_rcv_completion: unify error handling
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
Message-id: <20181009151419.20418-2-pbonzini@redhat.com>
Patchwork-id: 82505
O-Subject: [RHEL8 libiscsi PATCH 1/6] iser_rcv_completion: unify error handling
Bugzilla: 1634541
RH-Acked-by: Thomas Huth <thuth@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
Move the iscsi_set_error to iser_post_recv, and avoid leaking the
input buffer "in".
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
(cherry picked from commit 346fb947cb46ee8afcf5b2205e40af4ce8d29a79)
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
---
lib/iser.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/lib/iser.c b/lib/iser.c
index aa7244c..4b314be 100644
--- a/lib/iser.c
+++ b/lib/iser.c
@@ -957,7 +957,7 @@ iser_post_recvm(struct iser_conn *iser_conn, int count)
iser_conn->post_recv_buf_count += count;
ret = ibv_post_recv(iser_conn->qp, iser_conn->rx_wr, &rx_wr_failed);
if (ret) {
- iscsi_set_error(iscsi, "ib_post_recv failed ret=%d", ret);
+ iscsi_set_error(iscsi, "posting %d rx bufs, ib_post_recv failed ret=%d", count, ret);
iser_conn->post_recv_buf_count -= count;
} else
iser_conn->rx_desc_head = my_rx_head;
@@ -1030,12 +1030,13 @@ iser_rcv_completion(struct iser_rx_desc *rx_desc,
if (iscsi->session_type == ISCSI_SESSION_NORMAL) {
if(iser_alloc_rx_descriptors(iser_conn,255)) {
iscsi_set_error(iscsi, "iser_alloc_rx_descriptors Failed\n");
- return -1;
+ err = -1;
+ goto error;
}
err = iser_post_recvm(iser_conn, ISER_MIN_POSTED_RX);
if (err) {
- iscsi_set_error(iscsi, "posting %d rx bufs err %d", count, err);
- return -1;
+ err = -1;
+ goto error;
}
}
in->hdr = (unsigned char*)rx_desc->iscsi_header;
@@ -1082,7 +1083,6 @@ iser_rcv_completion(struct iser_rx_desc *rx_desc,
ISCSI_LIST_ADD_END(&iser_conn->tx_desc, iser_pdu->desc);
nop_target:
-
/* decrementing conn->post_recv_buf_count only --after-- freeing the *
* task eliminates the need to worry on tasks which are completed in *
* parallel to the execution of iser_conn_term. So the code that waits *
@@ -1100,16 +1100,16 @@ nop_target:
count = iser_conn->qp_max_recv_dtos - outstanding;
err = iser_post_recvm(iser_conn, count);
if (err) {
- iscsi_set_error(iscsi, "posting %d rx bufs err %d", count, err);
- return -1;
+ err = -1;
+ goto error;
}
}
receive:
-
err = iscsi_process_pdu(iscsi, in);
- iscsi_free(iscsi, in);
+error:
+ iscsi_free(iscsi, in);
return err;
}
--
1.8.3.1

View File

@ -1,58 +0,0 @@
From cc34aab2a455546431da8e8abb0d854a70c71962 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini@redhat.com>
Date: Tue, 9 Oct 2018 15:14:16 +0100
Subject: [PATCH 3/6] sync: remove unnecessary checks
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
Message-id: <20181009151419.20418-4-pbonzini@redhat.com>
Patchwork-id: 82506
O-Subject: [RHEL8 libiscsi PATCH 3/6] sync: remove unnecessary checks
Bugzilla: 1634541
RH-Acked-by: Thomas Huth <thuth@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
state is always non-NULL in iscsi_sync_cb and iscsi_discovery_cb.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
(cherry picked from commit f507c94774bff0c851880813d95f5d0a8fbdace8)
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
---
lib/sync.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/lib/sync.c b/lib/sync.c
index 9fb78e7..34ed64e 100644
--- a/lib/sync.c
+++ b/lib/sync.c
@@ -85,10 +85,8 @@ iscsi_sync_cb(struct iscsi_context *iscsi _U_, int status,
{
struct iscsi_sync_state *state = private_data;
- if (state != NULL) {
- state->status = status;
- state->finished = 1;
- }
+ state->status = status;
+ state->finished = 1;
}
int
@@ -1818,11 +1816,9 @@ iscsi_discovery_cb(struct iscsi_context *iscsi _U_, int status,
}
}
- if (state != NULL) {
- state->status = status;
- state->finished = 1;
- state->ptr = dahead;
- }
+ state->status = status;
+ state->finished = 1;
+ state->ptr = dahead;
}
struct iscsi_discovery_address *
--
1.8.3.1

8
gating.yaml Normal file
View File

@ -0,0 +1,8 @@
# recipients: kvmqe-ci, yfu, zxichen
--- !Policy
product_versions:
- rhel-9
decision_context: osci_compose_gate
subject_type: brew-build
rules:
- !PassingTestCaseRule {test_case_name: kvm-ci.libiscsi.x86_64.brew-build.gating.tier1.functional}

View File

@ -1,37 +1,23 @@
Name: libiscsi
Summary: iSCSI client library
Version: 1.18.0
Release: 8%{?dist}
Version: 1.19.0
Release: 5%{?dist}
License: LGPLv2+
URL: https://github.com/sahlberg/%{name}
Source: https://github.com/sahlberg/%{name}/archive/%{version}.tar.gz
Patch1: disable-ld_iscsi.patch
Patch2: fix-gcc7-warnings.patch
Patch3: fix-32bit-build.patch
Patch4: container_of.patch
# For bz#1634541 - Fix important coverity issues (libiscsi)
Patch5: libiscsi-iser_rcv_completion-unify-error-handling.patch
# For bz#1634541 - Fix important coverity issues (libiscsi)
Patch6: libiscsi-iser-fix-posting-of-receive-descriptors.patch
# For bz#1634541 - Fix important coverity issues (libiscsi)
Patch7: libiscsi-sync-remove-unnecessary-checks.patch
# For bz#1634541 - Fix important coverity issues (libiscsi)
Patch8: libiscsi-do-not-warn-for-strncpy.patch
# For bz#1634541 - Fix important coverity issues (libiscsi)
Patch9: libiscsi-avoid-fallthrough.patch
# For bz#1634541 - Fix important coverity issues (libiscsi)
Patch10: libiscsi-avoid-truncation-when-logging-message-that-includes-.patch
# For bz#1597942 - Qemu-kvm fails to connect to iscsi LUN by IPV6 address
Patch11: libiscsi-fix-connection-to-LUN-with-IPv6-address.patch
#Source: https://github.com/sahlberg/libiscsi/archive/{version}.tar.gz
Source: libiscsi-20200224-git6ea30ae.tar.xz
BuildRequires: make
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
BuildRequires: popt-devel
BuildRequires: CUnit-devel
BuildRequires: libgcrypt-devel
%ifnarch %{arm}
BuildRequires: rdma-core-devel
%endif
%description
libiscsi is a library for attaching to iSCSI resources across
@ -51,7 +37,7 @@ a network.
%build
sh autogen.sh
%configure --libdir=%{libiscsi_libdir}
%configure --libdir=%{libiscsi_libdir} --disable-werror
make %{?_smp_mflags}
%install
@ -61,8 +47,6 @@ echo %{libiscsi_libdir} > $RPM_BUILD_ROOT/etc/ld.so.conf.d/%{name}-%{_arch}.conf
rm $RPM_BUILD_ROOT/%{libiscsi_libdir}/libiscsi.a
rm $RPM_BUILD_ROOT/%{libiscsi_libdir}/libiscsi.la
# Remove "*.old" files
find $RPM_BUILD_ROOT -name "*.old" -exec rm -f {} \;
%post -p /sbin/ldconfig
@ -72,6 +56,7 @@ find $RPM_BUILD_ROOT -name "*.old" -exec rm -f {} \;
%license COPYING LICENCE-LGPL-2.1.txt
%doc README TODO
%dir %{libiscsi_libdir}
%{libiscsi_libdir}/libiscsi.so.9
%{libiscsi_libdir}/libiscsi.so.*
%config /etc/ld.so.conf.d/*
@ -112,36 +97,45 @@ The libiscsi-devel package includes the header files for libiscsi.
%{_libdir}/pkgconfig/libiscsi.pc
%changelog
* Fri Jun 28 2019 Danilo de Paula <ddepaula@redhat.com> - 1.18.0-8
- Rebuild all virt packages to fix RHEL's upgrade path
- Resolves: rhbz#1695587
(Ensure modular RPM upgrade path)
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1.19.0-5
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Thu Apr 11 2019 Danilo Cesar Lemes de Paula <ddepaula@redhat.com> - 1.18.0-7.el8
- libiscsi-redhat-Remove-disable-werror-from-spec-file.patch [bz#1581025]
- Resolves: bz#1581025
(Remove --disable-werror from spec file)
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.19.0-4
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Fri Dec 14 2018 Danilo Cesar Lemes de Paula <ddepaula@redhat.com> -
- libiscsi-fix-connection-to-LUN-with-IPv6-address.patch [bz#1597942]
- Resolves: bz#1597942
(Qemu-kvm fails to connect to iscsi LUN by IPV6 address)
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.19.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Fri Oct 12 2018 Danilo Cesar Lemes de Paula <ddepaula@redhat.com> - 1.18.0-5.el8
- libiscsi-iser_rcv_completion-unify-error-handling.patch [bz#1634541]
- libiscsi-iser-fix-posting-of-receive-descriptors.patch [bz#1634541]
- libiscsi-sync-remove-unnecessary-checks.patch [bz#1634541]
- libiscsi-do-not-warn-for-strncpy.patch [bz#1634541]
- libiscsi-avoid-fallthrough.patch [bz#1634541]
- libiscsi-avoid-truncation-when-logging-message-that-includes-.patch [bz#1634541]
- Resolves: bz#1634541
(Fix important coverity issues (libiscsi))
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.19.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Feb 25 2020 Cole Robinson <aintdiscole@gmail.com> - 1.19.0-1
- Update to 1.9.0 git snapshot
* Mon May 21 2018 Danilo Cesar Lemes de Paula <ddepaula@redhat.com> - 1.18.0-4.el8
- Fixed a build issue with the latest rdma-core
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.18.0-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Fri Mar 23 2018 Cole Robinson <crobinso@redhat.com> - 1.18.0-2
* Mon Dec 2 2019 Daniel P. Berrangé <berrange@redhat.com> - 1.18.0-9
- Disable RDMA on arm 32-bit (rhbz #1778517)
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.18.0-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.18.0-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Fri Nov 30 2018 Paolo Bonzini <pbonzini@redhat.com> - 1.18.0-6
- Backport upstream fix for IPv6 connections
- Backport upstream fix for issues reported by coverity
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.18.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Mon Apr 30 2018 Cole Robinson <crobinso@redhat.com> - 1.18.0-4
- Fix build with newer rdma-core
* Fri Mar 23 2018 Cole Robinson <crobinso@redhat.com> - 1.18.0-3
- Fix rdma deps and don't restrict archs
- Add --disable-werror to fix gcc8 build (bz #1556044)
- Spec file cleanups (bz #1483290)

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (libiscsi-20200224-git6ea30ae.tar.xz) = 425b15c21f4078f9c4ce761595438c340c468cee59aa56c4f4a7890a7dc8f50385041d8e5cf134e50ece8b189763b929f2432cd58359689c04386a0c4d00cb50