[oe] [meta-networking][PATCH V2] iscsi-initiator-utils: fix invoking 32bit "iscsiadm -m node" failed in 64bit kernel
Hongxu Jia
hongxu.jia at windriver.com
Mon Dec 5 07:52:41 UTC 2016
Take struct iscsi_uevent *ev for example:
In 64bit kernel : sizeof(ev->u): 24, sizeof(ev->r): 16,
but in 32bit iscsid: sizeof(ev->u): 20, sizeof(ev->r): 16.
While invoking 32bit "iscsiadm -m node" in 64bit kernel,
we should force ev->u 8byte aligned.
For "64bit iscsiadm + 64bit kernel" or "32bit iscsiadm + 32bit kernel",
they do not need the fix, so conditionally align by the definition
of macro MULTILIB. (MLPREFIX is not NULL means multilib).
Signed-off-by: Hongxu Jia <hongxu.jia at windriver.com>
---
...g-32bit-iscsiadm-m-node-failed-in-64bit-k.patch | 37 ++++++++++++++++++++++
.../iscsi-initiator-utils_2.0-873.bb | 2 ++
2 files changed, 39 insertions(+)
create mode 100644 meta-networking/recipes-daemons/iscsi-initiator-utils/files/fix-invoking-32bit-iscsiadm-m-node-failed-in-64bit-k.patch
diff --git a/meta-networking/recipes-daemons/iscsi-initiator-utils/files/fix-invoking-32bit-iscsiadm-m-node-failed-in-64bit-k.patch b/meta-networking/recipes-daemons/iscsi-initiator-utils/files/fix-invoking-32bit-iscsiadm-m-node-failed-in-64bit-k.patch
new file mode 100644
index 0000000..9bdb56f
--- /dev/null
+++ b/meta-networking/recipes-daemons/iscsi-initiator-utils/files/fix-invoking-32bit-iscsiadm-m-node-failed-in-64bit-k.patch
@@ -0,0 +1,37 @@
+From 153c61722a95f8d0f0ada8aec96d2e3c84b40a78 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia at windriver.com>
+Date: Mon, 5 Dec 2016 02:24:12 -0500
+Subject: [PATCH] fix invoking 32bit "iscsiadm -m node" failed in 64bit kernel
+
+In 64bit kernel : sizeof(ev->u): 24, sizeof(ev->r): 16,
+but in 32bit iscsid: sizeof(ev->u): 20, sizeof(ev->r): 16.
+
+While invoking 32bit "iscsiadm -m node" in 64bit kernel,
+we should force ev->u 8byte aligned.
+
+Upstream-Status: Inappropriate [upstream does not support multilib]
+
+Signed-off-by: Hongxu Jia <hongxu.jia at windriver.com>
+---
+ include/iscsi_if.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/include/iscsi_if.h b/include/iscsi_if.h
+index dad9fd8..bc68242 100644
+--- a/include/iscsi_if.h
++++ b/include/iscsi_if.h
+@@ -219,7 +219,11 @@ struct iscsi_uevent {
+ uint32_t host_no;
+ uint16_t chap_tbl_idx;
+ } delete_chap;
++#ifdef MULTILIB
++ } __attribute__ ((aligned (sizeof(uint64_t)))) u;
++#else
+ } u;
++#endif
+ union {
+ /* messages k -> u */
+ int retcode;
+--
+2.8.1
+
diff --git a/meta-networking/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_2.0-873.bb b/meta-networking/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_2.0-873.bb
index 4b13155..fd5961d 100644
--- a/meta-networking/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_2.0-873.bb
+++ b/meta-networking/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_2.0-873.bb
@@ -22,6 +22,7 @@ SRC_URI = "http://www.open-iscsi.org/bits/open-iscsi-${PV}.tar.gz \
file://iscsi-initiator.service \
file://iscsi-initiator-targets.service \
file://set_initiatorname \
+ file://fix-invoking-32bit-iscsiadm-m-node-failed-in-64bit-k.patch \
"
SRC_URI[md5sum] = "8b8316d7c9469149a6cc6234478347f7"
SRC_URI[sha256sum] = "7dd9f2f97da417560349a8da44ea4fcfe98bfd5ef284240a2cc4ff8e88ac7cd9"
@@ -37,6 +38,7 @@ do_configure () {
./configure --host=${TARGET_SYS} --build=${BUILD_SYS} --with-security=no )
}
+CFLAGS += "${@base_conditional('MLPREFIX', '', '','-DMULTILIB', d)}"
do_compile () {
#make iscsistart one of PROGRAMS if install_user in do_install
#sed -i -e '/^PROGRAMS = /s;$; usr/iscsistart;' Makefile
--
2.8.1
More information about the Openembedded-devel
mailing list