Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libiscsi for openSUSE:Factory 
checked in at 2024-03-01 23:34:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libiscsi (Old)
 and      /work/SRC/openSUSE:Factory/.libiscsi.new.1770 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libiscsi"

Fri Mar  1 23:34:47 2024 rev:24 rq:1153223 version:1.20.0+git.20240206

Changes:
--------
--- /work/SRC/openSUSE:Factory/libiscsi/libiscsi.changes        2023-11-15 
21:06:57.720654352 +0100
+++ /work/SRC/openSUSE:Factory/.libiscsi.new.1770/libiscsi.changes      
2024-03-01 23:34:58.912105856 +0100
@@ -1,0 +2,13 @@
+Thu Feb 29 13:02:24 UTC 2024 - Martin Pluskal <[email protected]>
+
+- Update to version 1.20.0+git.20240206:
+  * spelling fixes: eventhough, shoudl, asyncronous, maxium, implicity
+  * COPYING: stop mentioning ld_scsi
+  * New version 1.20.0
+  * Previously, 'task->status' was printed as decimal. In iscsi.h, the values 
that are put into it are defined as hexadecimal. This is a bit confusing 
(grepping through the code for 251658241 did not result in anything while the 
hex variant f000001 resulted in SCSI_STATUS_ERROR).
+  * Fix for https://github.com/sahlberg/libiscsi/issues/409 'ms->pages' was 
not checked for being NULL. This can happen when a target does not return any 
pages.
+  * Improve iSCSI PDU header dump
+  * Abstract value_string as common utility
+  * Drain DATAOUT PDU on timeout
+
+-------------------------------------------------------------------

Old:
----
  libiscsi-1.19.0+git.20231114.obscpio

New:
----
  libiscsi-1.20.0+git.20240206.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libiscsi.spec ++++++
--- /var/tmp/diff_new_pack.YBcexu/_old  2024-03-01 23:34:59.628131750 +0100
+++ /var/tmp/diff_new_pack.YBcexu/_new  2024-03-01 23:34:59.632131895 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package libiscsi
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,13 +16,12 @@
 #
 
 
-%define         sover 9
+%define         sover 10
 Name:           libiscsi
-Version:        1.19.0+git.20231114
+Version:        1.20.0+git.20240206
 Release:        0
 Summary:        iSCSI client library and utilities
 License:        GPL-2.0-only AND LGPL-2.1-only
-Group:          Development/Libraries/C and C++
 URL:            https://github.com/sahlberg/libiscsi
 Source0:        %{name}-%{version}.tar.gz
 Source99:       baselibs.conf
@@ -42,7 +41,6 @@
 
 %package -n %{name}%{sover}
 Summary:        iSCSI client library and utilities
-Group:          System/Libraries
 
 %description -n %{name}%{sover}
 libiscsi is a clientside library to implement the iSCSI protocol
@@ -54,7 +52,6 @@
 
 %package utils
 Summary:        Some utilities for %{name}
-Group:          Productivity/Networking/Other
 
 %description utils
 libiscsi is a clientside library to implement the iSCSI protocol that can
@@ -64,7 +61,6 @@
 
 %package devel
 Summary:        Development files for %{name}
-Group:          Development/Languages/C and C++
 Requires:       %{name}%{sover} = %{version}
 
 %description devel
@@ -72,7 +68,6 @@
 
 %package test
 Summary:        Test utilities for iSCSI
-Group:          System/Base
 
 %description test
 A comprehensive iSCSI transport and SCSI block device test suite based on
@@ -93,8 +88,7 @@
 %make_install
 find %{buildroot} -type f -name "*.la" -delete -print
 
-%post   -n %{name}%{sover} -p /sbin/ldconfig
-%postun -n %{name}%{sover} -p /sbin/ldconfig
+%ldconfig_scriptlets -n %{name}%{sover}
 
 %files -n %{name}%{sover}
 %{_libdir}/libiscsi.so.%{sover}*

++++++ _service ++++++
--- /var/tmp/diff_new_pack.YBcexu/_old  2024-03-01 23:34:59.656132763 +0100
+++ /var/tmp/diff_new_pack.YBcexu/_new  2024-03-01 23:34:59.660132907 +0100
@@ -4,7 +4,7 @@
     <param name="scm">git</param>
     <param name="changesgenerate">enable</param>
     <param name="filename">libiscsi</param>
-    <param name="versionformat">@PARENT_TAG@+git.%cd</param>
+    <param name="versionformat">1.20.0+git.%cd</param>
   </service>
   <service mode="manual" name="set_version"/>
   <service name="tar" mode="buildtime"/>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.YBcexu/_old  2024-03-01 23:34:59.676133486 +0100
+++ /var/tmp/diff_new_pack.YBcexu/_new  2024-03-01 23:34:59.680133631 +0100
@@ -3,6 +3,6 @@
                 <param name="url">[email protected]:sahlberg/libiscsi.git</param>
               <param 
name="changesrevision">e6bcdf5fdbf39729399c4f0914661ca1055107a1</param></service><service
 name="tar_scm">
                 <param 
name="url">https://github.com/sahlberg/libiscsi.git</param>
-              <param 
name="changesrevision">03e9ddc0a61fa64d84cb4faa4c06b42f694e2301</param></service></servicedata>
+              <param 
name="changesrevision">fef688aa99804588c09beb6ef7a3313dc9cf7492</param></service></servicedata>
 (No newline at EOF)
 

++++++ baselibs.conf ++++++
--- /var/tmp/diff_new_pack.YBcexu/_old  2024-03-01 23:34:59.696134210 +0100
+++ /var/tmp/diff_new_pack.YBcexu/_new  2024-03-01 23:34:59.700134354 +0100
@@ -1,2 +1,2 @@
-libiscsi9
+libiscsi10
 

++++++ libiscsi-1.19.0+git.20231114.obscpio -> 
libiscsi-1.20.0+git.20240206.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libiscsi-1.19.0+git.20231114/COPYING 
new/libiscsi-1.20.0+git.20240206/COPYING
--- old/libiscsi-1.19.0+git.20231114/COPYING    2023-11-14 08:50:59.000000000 
+0100
+++ new/libiscsi-1.20.0+git.20240206/COPYING    2024-02-06 00:51:38.000000000 
+0100
@@ -15,16 +15,8 @@
 This is the licence that applies to the libiscsi library and its use.
 
 
-src/ld_iscsi.c
-==============
-This LD_PRELOAD utility is licenced under GNU Lesser General Public License
-as published by the Free Software Foundation; either version 2.1 of the
-License, or (at your option) any later version.
-
-
-
-The src, examples and test-tool directories EXCEPT src/ld_iscsi.c
-=============================================================
+The src, examples and test-tool directories
+===========================================
 The utility and example applications using this library, i.e. the src and the
 examples directories, are licenced under the GNU General Public License
 as published by the Free Software Foundation; either version 2 of the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libiscsi-1.19.0+git.20231114/include/utils.h 
new/libiscsi-1.20.0+git.20240206/include/utils.h
--- old/libiscsi-1.19.0+git.20231114/include/utils.h    1970-01-01 
01:00:00.000000000 +0100
+++ new/libiscsi-1.20.0+git.20240206/include/utils.h    2024-02-06 
00:51:38.000000000 +0100
@@ -0,0 +1,37 @@
+/*
+   Utility helper functions.
+
+   Copyright (C) 2023 by zhenwei pi <[email protected]>
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+#ifndef __iscsi_utils_h__
+#define __iscsi_utils_h__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct iscsi_value_string {
+   int value;
+   const char *string;
+};
+
+const char *iscsi_value_string_find(struct iscsi_value_string *values, int 
value, const char *not_found);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __iscsi_utils_h__ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libiscsi-1.19.0+git.20231114/lib/Makefile.am 
new/libiscsi-1.20.0+git.20240206/lib/Makefile.am
--- old/libiscsi-1.19.0+git.20231114/lib/Makefile.am    2023-11-14 
08:50:59.000000000 +0100
+++ new/libiscsi-1.20.0+git.20240206/lib/Makefile.am    2024-02-06 
00:51:38.000000000 +0100
@@ -6,7 +6,7 @@
        connect.c crc32c.c discovery.c init.c \
        login.c nop.c pdu.c iscsi-command.c \
        scsi-lowlevel.c socket.c sync.c task_mgmt.c \
-       logging.c
+       logging.c utils.c
 
 if TARGET_OS_IS_WIN32
 libiscsipriv_la_SOURCES += ../win32/win32_compat.c
@@ -45,7 +45,7 @@
 
 EXTRA_libiscsi_la_DEPENDENCIES = libiscsi.syms
 
-SOCURRENT=9
+SOCURRENT=10
 SOREVISON=0
 SOAGE=0
 libiscsi_la_LDFLAGS = \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libiscsi-1.19.0+git.20231114/lib/pdu.c 
new/libiscsi-1.20.0+git.20240206/lib/pdu.c
--- old/libiscsi-1.19.0+git.20231114/lib/pdu.c  2023-11-14 08:50:59.000000000 
+0100
+++ new/libiscsi-1.20.0+git.20240206/lib/pdu.c  2024-02-06 00:51:38.000000000 
+0100
@@ -48,6 +48,7 @@
 #include "iscsi-private.h"
 #include "scsi-lowlevel.h"
 #include "slist.h"
+#include "utils.h"
 
 /* This adds 32-bit serial comparision as defined in RFC1982.
  * It returns 0 for equality, 1 if s1 is greater than s2 and
@@ -78,19 +79,106 @@
        return old_itt;
 }
 
+static const char *
+iscsi_opcode_str(int opcode)
+{
+       static struct iscsi_value_string opcode_strings[] = {
+               { ISCSI_PDU_NOP_OUT,
+                       "NOP_OUT" },
+               { ISCSI_PDU_SCSI_REQUEST,
+                       "SCSI_REQUEST" },
+               { ISCSI_PDU_SCSI_TASK_MANAGEMENT_REQUEST,
+                       "SCSI_TASK_MANAGEMENT_REQUEST" },
+               { ISCSI_PDU_LOGIN_REQUEST,
+                       "LOGIN_REQUEST" },
+               { ISCSI_PDU_TEXT_REQUEST,
+                       "TEXT_REQUEST" },
+               { ISCSI_PDU_DATA_OUT,
+                       "DATA_OUT" },
+               { ISCSI_PDU_LOGOUT_REQUEST,
+                       "LOGOUT_REQUEST" },
+               { ISCSI_PDU_NOP_IN,
+                       "NOP_IN" },
+               { ISCSI_PDU_SCSI_RESPONSE,
+                       "SCSI_RESPONSE" },
+               { ISCSI_PDU_SCSI_TASK_MANAGEMENT_RESPONSE,
+                       "SCSI_TASK_MANAGEMENT_RESPONSE" },
+               { ISCSI_PDU_LOGIN_RESPONSE,
+                       "LOGIN_RESPONSE" },
+               { ISCSI_PDU_TEXT_RESPONSE,
+                       "TEXT_RESPONSE" },
+               { ISCSI_PDU_DATA_IN,
+                       "DATA_IN" },
+               { ISCSI_PDU_LOGOUT_RESPONSE,
+                       "LOGOUT_RESPONSE" },
+               { ISCSI_PDU_R2T,
+                       "R2T" },
+               { ISCSI_PDU_ASYNC_MSG,
+                       "ASYNC_MSG" },
+               { ISCSI_PDU_REJECT,
+                       "REJECT" },
+               { ISCSI_PDU_NO_PDU,
+                       "NO_PDU" },
+               {0, NULL}
+       };
+
+       return iscsi_value_string_find(opcode_strings, opcode, "UNKNOWN");
+}
+
 void iscsi_dump_pdu_header(struct iscsi_context *iscsi, unsigned char *data) {
-       char dump1[33*3+1]={0};
-       char dump2[(ISCSI_RAW_HEADER_SIZE-33)*3+1]={0};
-       const char *opcode;
-       int i;
-       for (i=0;i<33;i++) {
-               snprintf(&dump1[i * 3], 4, " %02x", data[i]);
-       }
-       opcode = scsi_opcode_str(data[32]);
-       for (;i<ISCSI_RAW_HEADER_SIZE;i++) {
-               snprintf(&dump2[(i-33) * 3], 4, " %02x", data[i]);
+       char output[1024] = { 0 };
+       unsigned char iscsi_opcode;
+       const char *iscsi_opcode_string;
+       size_t output_off = 0;
+       int data_off = 0;
+
+
+       /* start to dump iSCSI opcode - data[0] */
+       iscsi_opcode = data[data_off];
+       iscsi_opcode_string = iscsi_opcode_str(iscsi_opcode);
+       output_off += snprintf(&output[output_off], sizeof(output) - output_off 
- 1, "%02x[%s]",
+                       iscsi_opcode, iscsi_opcode_string);
+       data_off++;
+
+       if (iscsi_opcode == ISCSI_PDU_SCSI_REQUEST) {
+               unsigned char scsi_opcode;
+               const char *scsi_opcode_string;
+
+               /* the rest iSCSI PDU: data[1] - data[31] */
+               for ( ; data_off < 32; data_off++) {
+                       if (sizeof(output) - 1 > output_off) {
+                               output_off += snprintf(&output[output_off], 
sizeof(output) - output_off - 1,
+                                               " %02x", data[data_off]);
+                       }
+               }
+
+               /* SCSI opcode: data[32] */
+               scsi_opcode = data[data_off];
+               scsi_opcode_string = scsi_opcode_str(scsi_opcode);
+               if (sizeof(output) - 1 > output_off) {
+                       output_off += snprintf(&output[output_off], 
sizeof(output) - output_off - 1,
+                                       " %02x[%s]", scsi_opcode, 
scsi_opcode_string);
+                       data_off++;
+               }
+
+               /* the rest SCSI PDU: data[33] - data[ISCSI_RAW_HEADER_SIZE - 
1] */
+               for ( ; data_off < ISCSI_RAW_HEADER_SIZE; data_off++) {
+                       if (sizeof(output) - 1 > output_off) {
+                               output_off += snprintf(&output[output_off], 
sizeof(output) - output_off - 1,
+                                               " %02x", data[data_off]);
+                       }
+               }
+       } else {
+               /* the rest iSCSI PDU: data[1] - data[ISCSI_RAW_HEADER_SIZE - 
1] */
+               for ( ; data_off < ISCSI_RAW_HEADER_SIZE; data_off++) {
+                       if (sizeof(output) - 1 > output_off) {
+                               output_off += snprintf(&output[output_off], 
sizeof(output) - output_off - 1,
+                                               " %02x", data[data_off]);
+                       }
+               }
        }
-       ISCSI_LOG(iscsi, 2, "PDU header:%s[%s]%s", dump1, opcode, dump2);
+
+       ISCSI_LOG(iscsi, 2, "PDU header: %s", output);
 }
 
 struct iscsi_pdu*
@@ -715,6 +803,55 @@
        scsi_set_uint32(&pdu->outdata.data[20], expxferlen);
 }
 
+/*
+ * A WRITE16 command[w] handles R2T, and queues DATAOUT PDU m,x,y,z:
+ *
+ *           outqueue->DATAOUT[x]->DATAOUT[y]->DATAOUT[z]...
+ *   outqueue_current->DATAOUT[m]
+ *          waitqueue->WRITE16[w]...
+ *
+ * 1, Once x, y, z gets released in initiator side, the target still expects 
the remaining
+ * DATAOUT PDUs.
+ * 2, Once command w timeout and callback to uplayer, uplayers usually 
releases memory of
+ *    iscsi task(include memory referenced by iovec.iov_base). DATAOUT[m] 
would access
+ *    invalid memory iovce.iov_base.
+ */
+static int iscsi_pdu_data_out_inprocess(struct iscsi_context *iscsi, struct 
iscsi_pdu *pdu)
+{
+       struct iscsi_pdu *tmp_pdu, *next_pdu;
+       enum scsi_opcode opcode = pdu->outdata.data[32];
+
+       /* only care DATA OUT command here */
+       if ((pdu->outdata.data[0] & 0x3f) != ISCSI_PDU_SCSI_REQUEST) {
+               return 0;
+       }
+
+       switch (opcode) {
+               case SCSI_OPCODE_WRITE10:
+               case SCSI_OPCODE_WRITE12:
+               case SCSI_OPCODE_WRITE16:
+                       break;
+               default:
+                       return 0;
+       };
+
+       /* current outgoing one is part of the PDU? */
+       if (iscsi->outqueue_current && 
(iscsi->outqueue_current->scsi_cbdata.task == pdu->scsi_cbdata.task)) {
+               return 1;
+       }
+
+       /* any child DATAOUT PDU in outqueue? */
+       for (tmp_pdu = iscsi->outqueue; tmp_pdu; tmp_pdu = next_pdu) {
+               next_pdu = tmp_pdu->next;
+
+               if (tmp_pdu->scsi_cbdata.task == pdu->scsi_cbdata.task) {
+                       return 1;
+               }
+       }
+
+       return 0;
+}
+
 void
 iscsi_timeout_scan(struct iscsi_context *iscsi)
 {
@@ -741,6 +878,8 @@
                    (pdu->outdata.data[0] & 0x3f) != ISCSI_PDU_DATA_OUT) {
                        iscsi->cmdsn--;
                        cmdsn_gap++;
+               } else {
+                       continue;
                }
                ISCSI_LIST_REMOVE(&iscsi->outqueue, pdu);
                iscsi_set_error(iscsi, "command timed out from outqueue");
@@ -762,6 +901,9 @@
                        /* not expired yet */
                        continue;
                }
+               if (iscsi_pdu_data_out_inprocess(iscsi, pdu)) {
+                       continue;
+               }
                ISCSI_LIST_REMOVE(&iscsi->waitpdu, pdu);
                iscsi_set_error(iscsi, "command timed out from waitqueue");
                iscsi_dump_pdu_header(iscsi, pdu->outdata.data);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libiscsi-1.19.0+git.20231114/lib/scsi-lowlevel.c 
new/libiscsi-1.20.0+git.20240206/lib/scsi-lowlevel.c
--- old/libiscsi-1.19.0+git.20231114/lib/scsi-lowlevel.c        2023-11-14 
08:50:59.000000000 +0100
+++ new/libiscsi-1.20.0+git.20240206/lib/scsi-lowlevel.c        2024-02-06 
00:51:38.000000000 +0100
@@ -56,6 +56,7 @@
 #include <errno.h>
 #include "slist.h"
 #include "scsi-lowlevel.h"
+#include "utils.h"
 
 void scsi_task_set_iov_out(struct scsi_task *task, struct scsi_iovec *iov, int 
niov);
 
@@ -116,26 +117,10 @@
        return &mem->buf[0];
 }
 
-struct value_string {
-   int value;
-   const char *string;
-};
-
-static const char *
-value_string_find(struct value_string *values, int value)
-{
-       for (; values->string; values++) {
-               if (value == values->value) {
-                       return values->string;
-               }
-       }
-       return NULL;
-}
-
 const char *
 scsi_sense_key_str(int key)
 {
-       static struct value_string keys[] = {
+       static struct iscsi_value_string keys[] = {
                {SCSI_SENSE_NO_SENSE,
                 "NO SENSE"},
                {SCSI_SENSE_RECOVERED_ERROR,
@@ -167,13 +152,13 @@
               {0, NULL}
        };
 
-       return value_string_find(keys, key);
+       return iscsi_value_string_find(keys, key, "UNKNOWN");
 }
 
 const char *
 scsi_sense_ascq_str(int ascq)
 {
-       static struct value_string ascqs[] = {
+       static struct iscsi_value_string ascqs[] = {
                {SCSI_SENSE_ASCQ_SANITIZE_IN_PROGRESS,
                 "SANITIZE_IN_PROGRESS"},
                {SCSI_SENSE_ASCQ_WRITE_AFTER_SANITIZE_REQUIRED,
@@ -239,13 +224,13 @@
               {0, NULL}
        };
 
-       return value_string_find(ascqs, ascq);
+       return iscsi_value_string_find(ascqs, ascq, "UNKNOWN");
 }
 
 const char *
 scsi_pr_type_str(enum scsi_persistent_out_type pr_type)
 {
-       static struct value_string pr_type_strings[] = {
+       static struct iscsi_value_string pr_type_strings[] = {
                {SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE,
                 "Write Exclusive"},
                {SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS,
@@ -261,13 +246,13 @@
                {0, NULL}
        };
 
-       return value_string_find(pr_type_strings, pr_type);
+       return iscsi_value_string_find(pr_type_strings, pr_type, "UNKNOWN");
 }
 
 const char *
 scsi_opcode_str(int opcode)
 {
-       static struct value_string opcode_strings[] = {
+       static struct iscsi_value_string opcode_strings[] = {
                {SCSI_OPCODE_TESTUNITREADY,
                 "TESTUNITREADY"},
                {SCSI_OPCODE_READ6,
@@ -361,7 +346,7 @@
                {0, NULL}
        };
 
-       return value_string_find(opcode_strings, opcode);
+       return iscsi_value_string_find(opcode_strings, opcode, "UNKNOWN");
 }
 
 uint64_t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libiscsi-1.19.0+git.20231114/lib/utils.c 
new/libiscsi-1.20.0+git.20240206/lib/utils.c
--- old/libiscsi-1.19.0+git.20231114/lib/utils.c        1970-01-01 
01:00:00.000000000 +0100
+++ new/libiscsi-1.20.0+git.20240206/lib/utils.c        2024-02-06 
00:51:38.000000000 +0100
@@ -0,0 +1,35 @@
+/*
+   Utility helper functions.
+
+   Copyright (C) 2023 by zhenwei pi <[email protected]>
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "utils.h"
+
+const char *iscsi_value_string_find(struct iscsi_value_string *values,
+                                    int value, const char *not_found)
+{
+       for ( ; values->string; values++) {
+               if (value == values->value) {
+                       return values->string;
+               }
+       }
+
+       return not_found;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libiscsi-1.19.0+git.20231114/packaging/RPM/libiscsi.spec.in 
new/libiscsi-1.20.0+git.20240206/packaging/RPM/libiscsi.spec.in
--- old/libiscsi-1.19.0+git.20231114/packaging/RPM/libiscsi.spec.in     
2023-11-14 08:50:59.000000000 +0100
+++ new/libiscsi-1.20.0+git.20240206/packaging/RPM/libiscsi.spec.in     
2024-02-06 00:51:38.000000000 +0100
@@ -1,6 +1,6 @@
 Name: libiscsi
 Summary: iSCSI client library
-Version: 1.19.0
+Version: 1.20.0
 Release: 1GITHASH%{?dist}
 License: LGPLv2+
 Group: System Environment/Libraries
@@ -109,6 +109,8 @@
 
 
 %changelog
+* Mon Feb 5 2024 : 1.20.0
+ - Various updates to the test tool
 * Sun Jul 14 2019 : 1.19.0
  - iSER improvements
  - Add support to senable/disable digests via URL arguments
@@ -229,7 +231,7 @@
  - Change all default iqn names so they are valid iqn names.
 * Mon Jul 9 2012 : 1.5.0
  - Make sure we can handle racy eventsystems which might call us for 
-   POLLIN eventhough there is no longer any data to read from the socket.
+   POLLIN even though there is no longer any data to read from the socket.
  - Only set up tcp keepalives on systems that support them.
  - Only export symbols we really want to make public
  - FreeBSD and Illumos does not define SOL_TCP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libiscsi-1.19.0+git.20231114/test-tool/iscsi-support.c 
new/libiscsi-1.20.0+git.20240206/test-tool/iscsi-support.c
--- old/libiscsi-1.19.0+git.20231114/test-tool/iscsi-support.c  2023-11-14 
08:50:59.000000000 +0100
+++ new/libiscsi-1.20.0+git.20240206/test-tool/iscsi-support.c  2024-02-06 
00:51:38.000000000 +0100
@@ -202,7 +202,7 @@
         }
         if (status == SCSI_STATUS_GOOD && task->status != SCSI_STATUS_GOOD) {
                 logging(LOG_NORMAL,
-                        "[FAILED] %s command failed with status %d / sense key 
%s(0x%02x) / ASCQ %s(0x%04x)",
+                        "[FAILED] %s command failed with status 0x%x / sense 
key %s(0x%02x) / ASCQ %s(0x%04x)",
                         opcode, task->status,
                         scsi_sense_key_str(task->sense.key), task->sense.key,
                         scsi_sense_ascq_str(task->sense.ascq), 
task->sense.ascq);
@@ -2735,7 +2735,7 @@
         logging(LOG_VERBOSE, "[SUCCESS] CONTROL page fetched.");
 
         ms = scsi_datain_unmarshall(sense_task);
-        if (ms == NULL) {
+        if (ms == NULL || ms->pages == NULL) {
                 logging(LOG_NORMAL, "failed to unmarshall mode sense datain "
                         "blob");
                 ret = -1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libiscsi-1.19.0+git.20231114/test-tool/test_compareandwrite_miscompare.c 
new/libiscsi-1.20.0+git.20240206/test-tool/test_compareandwrite_miscompare.c
--- 
old/libiscsi-1.19.0+git.20231114/test-tool/test_compareandwrite_miscompare.c    
    2023-11-14 08:50:59.000000000 +0100
+++ 
new/libiscsi-1.20.0+git.20240206/test-tool/test_compareandwrite_miscompare.c    
    2024-02-06 00:51:38.000000000 +0100
@@ -95,7 +95,7 @@
                 for (j = 0; j < i * block_size; j++) {
                         if (scratch[j] != 'A') {
                                 logging(LOG_VERBOSE, "[FAILED] Data changed "
-                                        "eventhough there was a miscompare");
+                                        "even though there was a miscompare");
                                 CU_FAIL("Block was written to");
                                 return;
                         }
@@ -151,7 +151,7 @@
                 for (j = 0; j < i * block_size; j++) {
                         if (scratch[j] != 'A') {
                                 logging(LOG_VERBOSE, "[FAILED] Data changed "
-                                        "eventhough there was a miscompare");
+                                        "even though there was a miscompare");
                                 CU_FAIL("Block was written to");
                                 return;
                         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libiscsi-1.19.0+git.20231114/test-tool/test_sanitize_block_erase.c 
new/libiscsi-1.20.0+git.20240206/test-tool/test_sanitize_block_erase.c
--- old/libiscsi-1.19.0+git.20231114/test-tool/test_sanitize_block_erase.c      
2023-11-14 08:50:59.000000000 +0100
+++ new/libiscsi-1.20.0+git.20240206/test-tool/test_sanitize_block_erase.c      
2024-02-06 00:51:38.000000000 +0100
@@ -161,7 +161,7 @@
                         lbas->descriptors[i].lba + 
lbas->descriptors[i].num_blocks);
                 if (lbas->descriptors[i].provisioning == 
SCSI_PROVISIONING_TYPE_MAPPED) {
                           logging(LOG_VERBOSE, "[FAILED] Descriptor %d is 
MAPPED."
-                                "All descriptors shoudl be either DEALLOCATED "
+                                "All descriptors should be either DEALLOCATED "
                                 "or ANCHORED after SANITIZE", i);
                           CU_FAIL("[FAILED] LBA status descriptor is MAPPED.");
                 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libiscsi-1.19.0+git.20231114/test-tool/test_sanitize_reset.c 
new/libiscsi-1.20.0+git.20240206/test-tool/test_sanitize_reset.c
--- old/libiscsi-1.19.0+git.20231114/test-tool/test_sanitize_reset.c    
2023-11-14 08:50:59.000000000 +0100
+++ new/libiscsi-1.20.0+git.20240206/test-tool/test_sanitize_reset.c    
2024-02-06 00:51:38.000000000 +0100
@@ -58,7 +58,7 @@
                 return;
         }
 
-        logging(LOG_VERBOSE, "Send an asyncronous SANITIZE to the target.");
+        logging(LOG_VERBOSE, "Send an asynchronous SANITIZE to the target.");
         data.size = block_size + 4;
         data.data = alloca(data.size);
         memset(&data.data[4], 0, block_size);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libiscsi-1.19.0+git.20231114/utils/iscsi-perf.c 
new/libiscsi-1.20.0+git.20240206/utils/iscsi-perf.c
--- old/libiscsi-1.19.0+git.20231114/utils/iscsi-perf.c 2023-11-14 
08:50:59.000000000 +0100
+++ new/libiscsi-1.20.0+git.20240206/utils/iscsi-perf.c 2024-02-06 
00:51:38.000000000 +0100
@@ -151,7 +151,7 @@
        if (status == SCSI_STATUS_BUSY ||
                (status == SCSI_STATUS_CHECK_CONDITION && task->sense.key == 
SCSI_SENSE_UNIT_ATTENTION)) {
                if (client->retry_cnt++ > 4 * max_in_flight) {
-                       fprintf(stderr, "maxium number of command retries 
reached...\n");
+                       fprintf(stderr, "maximum number of command retries 
reached...\n");
                        client->err_cnt++;
                        goto out;
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libiscsi-1.19.0+git.20231114/utils/iscsi-pr.c 
new/libiscsi-1.20.0+git.20240206/utils/iscsi-pr.c
--- old/libiscsi-1.19.0+git.20231114/utils/iscsi-pr.c   2023-11-14 
08:50:59.000000000 +0100
+++ new/libiscsi-1.20.0+git.20240206/utils/iscsi-pr.c   2024-02-06 
00:51:38.000000000 +0100
@@ -236,7 +236,7 @@
         fprintf(stderr, "  -S, --param-sark=SARK          PR Out: parameter 
service action reservation key (SARK is in hex)\n");
         fprintf(stderr, "  -T, --prout-type=TYPE          PR Out: type 
field\n");
         fprintf(stderr, "  -G, --register                 PR Out: Register\n");
-        fprintf(stderr, "  -R, --reserve                  PR Out: Reserve, 
SARK only(register sark implicity)\n");
+        fprintf(stderr, "  -R, --reserve                  PR Out: Reserve, 
SARK only(register sark implicitly)\n");
         fprintf(stderr, "  -L, --release                  PR Out: Release, 
SARK only. This program releases TYPE 7 and TYPE 8 only\n");
         fprintf(stderr, "  -C, --clear                    PR Out: Clear, SARK 
only\n");
         fprintf(stderr, "  -P, --preempt                  PR Out: Preempt, use 
SARK to preempt reservation from RK\n");

++++++ libiscsi.obsinfo ++++++
--- /var/tmp/diff_new_pack.YBcexu/_old  2024-03-01 23:34:59.948143323 +0100
+++ /var/tmp/diff_new_pack.YBcexu/_new  2024-03-01 23:34:59.952143468 +0100
@@ -1,5 +1,5 @@
 name: libiscsi
-version: 1.19.0+git.20231114
-mtime: 1699948259
-commit: 03e9ddc0a61fa64d84cb4faa4c06b42f694e2301
+version: 1.20.0+git.20240206
+mtime: 1707177098
+commit: fef688aa99804588c09beb6ef7a3313dc9cf7492
 

Reply via email to