Hello community,

here is the log from the commit of package tcmu-runner for openSUSE:Factory 
checked in at 2017-10-31 15:44:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tcmu-runner (Old)
 and      /work/SRC/openSUSE:Factory/.tcmu-runner.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "tcmu-runner"

Tue Oct 31 15:44:40 2017 rev:5 rq:537761 version:1.2.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/tcmu-runner/tcmu-runner.changes  2017-08-16 
16:13:30.947050300 +0200
+++ /work/SRC/openSUSE:Factory/.tcmu-runner.new/tcmu-runner.changes     
2017-10-31 15:44:42.112247511 +0100
@@ -1,0 +2,13 @@
+Wed Sep 20 22:59:29 UTC 2017 - ldun...@suse.com
+
+- Add two patches: make target_core_user.h local, to insulate
+  tcmu-runner from kernel version/data structure/naming
+  changes, and add include of <sys/uio.h> to that file,
+  to fix "stuct iovec" not defined issue  (bsc#1058303),
+  adding patches:
+  * tcmu-runner-add-local-target_core_user-h
+  * tcmu-runner-remove-uio-include-for-iovec.patch
+  The latter patch is added only for SUSE version >= 13.3,
+  since it is only needed there.
+
+-------------------------------------------------------------------

New:
----
  tcmu-runner-add-local-target_core_user-h
  tcmu-runner-remove-uio-include-for-iovec.patch

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

Other differences:
------------------
++++++ tcmu-runner.spec ++++++
--- /var/tmp/diff_new_pack.lPDZPW/_old  2017-10-31 15:44:42.908218656 +0100
+++ /var/tmp/diff_new_pack.lPDZPW/_new  2017-10-31 15:44:42.912218511 +0100
@@ -41,6 +41,8 @@
 Patch5:         
fixed-a-number-of-memory-leaks-with-deregistering-of-dbus-handlers
 Patch6:         
removed-all-check_config-callback-implementations-to-avoid-security-issues
 Patch7:         %{name}-remove-handler-path-install-prefix.patch
+Patch8:         %{name}-add-local-target_core_user-h
+Patch9:         %{name}-remove-uio-include-for-iovec.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  cmake
 BuildRequires:  glib2-devel
@@ -135,6 +137,10 @@
 %patch5 -p1
 %patch6 -p1
 %patch7 -p1
+%patch8 -p1
+%if 0%{?suse_version} >= 1330
+%patch9 -p1
+%endif
 
 %build
 CMAKE_OPTIONS="\

++++++ tcmu-runner-add-local-target_core_user-h ++++++
From: Mike Christie <mchri...@redhat.com>
Date: Thu, 6 Jul 2017 14:41:25 -0500
Subject: runner: add local target_core_user.h
Git-commit: 976ea46ce26443ff2d6cfecc96fbad144c9ed7e6
Patch-mainline: v1.3.0-rc1

It is kind of a pain to coordinate our upstream releases with
kernel headers releases. To allow users to be able to not have
to update kernel headers, and use newer runner versions, this adds a
local target_core_user.h which will stay in sync with the upstream
kernel.

Acked-by: Lee Duncan <ldun...@suse.com>
---
 consumer.c               |    2 
 libtcmu.c                |    2 
 main.c                   |    2 
 target_core_user_local.h |  157 +++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 160 insertions(+), 3 deletions(-)

--- a/consumer.c
+++ b/consumer.c
@@ -36,7 +36,7 @@
 #include <stdint.h>
 #include <scsi/scsi.h>
 #define _BITS_UIO_H
-#include <linux/target_core_user.h>
+#include "target_core_user_local.h"
 #include "libtcmu.h"
 #include "scsi_defs.h"
 
--- a/libtcmu.c
+++ b/libtcmu.c
@@ -28,12 +28,12 @@
 #include <dirent.h>
 #include <scsi/scsi.h>
 
-#include <linux/target_core_user.h>
 
 #include <libnl3/netlink/genl/genl.h>
 #include <libnl3/netlink/genl/mngt.h>
 #include <libnl3/netlink/genl/ctrl.h>
 
+#include "target_core_user_local.h"
 #include "libtcmu.h"
 #include "libtcmu_log.h"
 #include "libtcmu_priv.h"
--- a/main.c
+++ b/main.c
@@ -39,7 +39,7 @@
 #include <scsi/scsi.h>
 
 #include <libkmod.h>
-#include <linux/target_core_user.h>
+#include "target_core_user_local.h"
 #include "darray.h"
 #include "tcmu-runner.h"
 #include "libtcmu.h"
--- /dev/null
+++ b/target_core_user_local.h
@@ -0,0 +1,157 @@
+#ifndef __TARGET_CORE_USER_H
+#define __TARGET_CORE_USER_H
+
+/* This header will be used by application too */
+
+#include <linux/types.h>
+#include <linux/uio.h>
+
+#define TCMU_VERSION "2.0"
+
+/*
+ * Ring Design
+ * -----------
+ *
+ * The mmaped area is divided into three parts:
+ * 1) The mailbox (struct tcmu_mailbox, below)
+ * 2) The command ring
+ * 3) Everything beyond the command ring (data)
+ *
+ * The mailbox tells userspace the offset of the command ring from the
+ * start of the shared memory region, and how big the command ring is.
+ *
+ * The kernel passes SCSI commands to userspace by putting a struct
+ * tcmu_cmd_entry in the ring, updating mailbox->cmd_head, and poking
+ * userspace via uio's interrupt mechanism.
+ *
+ * tcmu_cmd_entry contains a header. If the header type is PAD,
+ * userspace should skip hdr->length bytes (mod cmdr_size) to find the
+ * next cmd_entry.
+ *
+ * Otherwise, the entry will contain offsets into the mmaped area that
+ * contain the cdb and data buffers -- the latter accessible via the
+ * iov array. iov addresses are also offsets into the shared area.
+ *
+ * When userspace is completed handling the command, set
+ * entry->rsp.scsi_status, fill in rsp.sense_buffer if appropriate,
+ * and also set mailbox->cmd_tail equal to the old cmd_tail plus
+ * hdr->length, mod cmdr_size. If cmd_tail doesn't equal cmd_head, it
+ * should process the next packet the same way, and so on.
+ */
+
+#define TCMU_MAILBOX_VERSION 2
+#define ALIGN_SIZE 64 /* Should be enough for most CPUs */
+#define TCMU_MAILBOX_FLAG_CAP_OOOC (1 << 0) /* Out-of-order completions */
+
+struct tcmu_mailbox {
+       __u16 version;
+       __u16 flags;
+       __u32 cmdr_off;
+       __u32 cmdr_size;
+
+       __u32 cmd_head;
+
+       /* Updated by user. On its own cacheline */
+       __u32 cmd_tail __attribute__((__aligned__(ALIGN_SIZE)));
+
+} __attribute__((packed));
+
+enum tcmu_opcode {
+       TCMU_OP_PAD = 0,
+       TCMU_OP_CMD,
+};
+
+/*
+ * Only a few opcodes, and length is 8-byte aligned, so use low bits for 
opcode.
+ */
+struct tcmu_cmd_entry_hdr {
+       __u32 len_op;
+       __u16 cmd_id;
+       __u8 kflags;
+#define TCMU_UFLAG_UNKNOWN_OP 0x1
+       __u8 uflags;
+
+} __attribute__((packed));
+
+#define TCMU_OP_MASK 0x7
+
+static __inline__ enum tcmu_opcode tcmu_hdr_get_op(__u32 len_op)
+{
+       return len_op & TCMU_OP_MASK;
+}
+
+static __inline__ void tcmu_hdr_set_op(__u32 *len_op, enum tcmu_opcode op)
+{
+       *len_op &= ~TCMU_OP_MASK;
+       *len_op |= (op & TCMU_OP_MASK);
+}
+
+static __inline__ __u32 tcmu_hdr_get_len(__u32 len_op)
+{
+       return len_op & ~TCMU_OP_MASK;
+}
+
+static __inline__ void tcmu_hdr_set_len(__u32 *len_op, __u32 len)
+{
+       *len_op &= TCMU_OP_MASK;
+       *len_op |= len;
+}
+
+/* Currently the same as SCSI_SENSE_BUFFERSIZE */
+#define TCMU_SENSE_BUFFERSIZE 96
+
+struct tcmu_cmd_entry {
+       struct tcmu_cmd_entry_hdr hdr;
+
+       union {
+               struct {
+                       uint32_t iov_cnt;
+                       uint32_t iov_bidi_cnt;
+                       uint32_t iov_dif_cnt;
+                       uint64_t cdb_off;
+                       uint64_t __pad1;
+                       uint64_t __pad2;
+                       struct iovec iov[0];
+               } req;
+               struct {
+                       uint8_t scsi_status;
+                       uint8_t __pad1;
+                       uint16_t __pad2;
+                       uint32_t __pad3;
+                       char sense_buffer[TCMU_SENSE_BUFFERSIZE];
+               } rsp;
+       };
+
+} __attribute__((packed));
+
+#define TCMU_OP_ALIGN_SIZE sizeof(uint64_t)
+
+enum tcmu_genl_cmd {
+       TCMU_CMD_UNSPEC,
+       TCMU_CMD_ADDED_DEVICE,
+       TCMU_CMD_REMOVED_DEVICE,
+       TCMU_CMD_RECONFIG_DEVICE,
+       TCMU_CMD_ADDED_DEVICE_DONE,
+       TCMU_CMD_REMOVED_DEVICE_DONE,
+       TCMU_CMD_RECONFIG_DEVICE_DONE,
+       TCMU_CMD_SET_FEATURES,
+       __TCMU_CMD_MAX,
+};
+#define TCMU_CMD_MAX (__TCMU_CMD_MAX - 1)
+
+enum tcmu_genl_attr {
+       TCMU_ATTR_UNSPEC,
+       TCMU_ATTR_DEVICE,
+       TCMU_ATTR_MINOR,
+       TCMU_ATTR_PAD,
+       TCMU_ATTR_DEV_CFG,
+       TCMU_ATTR_DEV_SIZE,
+       TCMU_ATTR_WRITECACHE,
+       TCMU_ATTR_CMD_STATUS,
+       TCMU_ATTR_DEVICE_ID,
+       TCMU_ATTR_SUPP_KERN_CMD_REPLY,
+       __TCMU_ATTR_MAX,
+};
+#define TCMU_ATTR_MAX (__TCMU_ATTR_MAX - 1)
+
+#endif
++++++ tcmu-runner-remove-uio-include-for-iovec.patch ++++++
From: Lee Duncan <ldun...@suse.com>
Date: Wed Oct 25 14:45:04 PDT 2017
Subject: remove uio include for iovec

Newer versions of the kernel and glibc-devel cause
compiles of tcmu-runner to complain about duplicate
"struct iovec" definitions. This fixes that issue
by including files in the correct order.

Signed-off-by: Lee Duncan <ldun...@suse.com>
--- 
diff -aurp tcmu-runner-1.2.0.orig/consumer.c tcmu-runner-1.2.0/consumer.c
--- tcmu-runner-1.2.0.orig/consumer.c   2017-10-25 11:18:25.805340765 -0700
+++ tcmu-runner-1.2.0/consumer.c        2017-10-25 14:38:56.456122857 -0700
@@ -32,6 +32,7 @@
 #include <unistd.h>
 #include <sys/mman.h>
 #include <poll.h>
+#include <sys/uio.h>
 
 #include <stdint.h>
 #include <scsi/scsi.h>
diff -aurp tcmu-runner-1.2.0.orig/target_core_user_local.h 
tcmu-runner-1.2.0/target_core_user_local.h
--- tcmu-runner-1.2.0.orig/target_core_user_local.h     2017-10-25 
11:18:25.805340765 -0700
+++ tcmu-runner-1.2.0/target_core_user_local.h  2017-10-25 14:39:48.618507387 
-0700
@@ -4,7 +4,6 @@
 /* This header will be used by application too */
 
 #include <linux/types.h>
-#include <linux/uio.h>
 
 #define TCMU_VERSION "2.0"
 

Reply via email to