On Wed, Aug 26, 2015 at 11:14:29PM +0530, Jagadeesh Krishnanjanappa wrote: > iSCSI Enterprise Target is aimed to develop an > open source iSCSI target with professional features, > that works well in enterprise environment under real > workload, and is scalable and versatile enough to meet the > challenge of future storage needs and developments.
Fails to build in world: http://errors.yoctoproject.org/Errors/Details/21028/ > > Signed-off-by: Jagadeesh Krishnanjanappa <[email protected]> > --- > ...rors-observed-with-linux-3.19-and-greater.patch | 198 > +++++++++++++++++++++ > ...use-kernel-makefile-to-get-kernel-version.patch | 67 +++++++ > .../iscsitarget/iscsitarget_1.4.20.3+svn502.bb | 62 +++++++ > 3 files changed, 327 insertions(+) > create mode 100644 > meta-networking/recipes-extended/iscsitarget/files/fix-errors-observed-with-linux-3.19-and-greater.patch > create mode 100644 > meta-networking/recipes-extended/iscsitarget/files/use-kernel-makefile-to-get-kernel-version.patch > create mode 100644 > meta-networking/recipes-extended/iscsitarget/iscsitarget_1.4.20.3+svn502.bb > > diff --git > a/meta-networking/recipes-extended/iscsitarget/files/fix-errors-observed-with-linux-3.19-and-greater.patch > > b/meta-networking/recipes-extended/iscsitarget/files/fix-errors-observed-with-linux-3.19-and-greater.patch > new file mode 100644 > index 0000000..6878ca2 > --- /dev/null > +++ > b/meta-networking/recipes-extended/iscsitarget/files/fix-errors-observed-with-linux-3.19-and-greater.patch > @@ -0,0 +1,198 @@ > +Fix build errors with linux kernel v3.19 and above > + > +Below errors came up while building iscsitarget for > +qemux86-64 (and others) because, > +1. 'struct user_msghdr' is being used for userland-side msghdr instead > +of 'struct msghdr', which is used for kernel-side msghdr in linux v3.19 > +and above. > + > +error snippet: > +-- snip -- > +| > /CGE7_SHDD/project_yocto_1.8/poky/build/tmp/work/qemux86_64-poky-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/iscsi.c: > In function 'cmnd_skip_pdu': > +| > /CGE7_SHDD/project_yocto_1.8/poky/build/tmp/work/qemux86_64-poky-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/iscsi.c:492:16: > error: 'struct msghdr' has no member named 'msg_iov' > +| conn->read_msg.msg_iov = conn->read_iov; > +-- CUT -- > + > +Reference: > +https://github.com/torvalds/linux/commit/666547ff591cebdedc4679bf6b1b3f3383a8dea3 > + > +2. 'SERVICE_ACTION_IN' has been renamed to SERVICE_ACTION_IN_16 in linux > v3.19 > +and above. > + > +error snippet: > +-- snip -- > +| > /CGE7_SHDD/project_yocto_1.8/poky/build/tmp/work/qemux86_64-poky-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/iscsi.c: > In function 'scsi_cmnd_start': > +| > /CGE7_SHDD/project_yocto_1.8/poky/build/tmp/work/qemux86_64-poky-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/iscsi.c:989:7: > error: 'SERVICE_ACTION_IN' undeclared (first use in this function) > +| case SERVICE_ACTION_IN: > +-- CUT -- > + > +Reference: > +https://github.com/torvalds/linux/commit/eb846d9f147455e4e5e1863bfb5e31974bb69b7c > + > +3. In linux v3.19 and above, f_dentry member has been removed from > +'struct file' structure. > + > +error snippet: > +-- snip -- > +| > /CGE7_SHDD/project_yocto_1.8/poky/build/tmp/work/qemux86_64-poky-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/conn.c: > In function 'iet_socket_bind': > +| > /CGE7_SHDD/project_yocto_1.8/poky/build/tmp/work/qemux86_64-poky-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/conn.c:130:34: > error: 'struct file' has no member named 'f_dentry' > +| conn->sock = SOCKET_I(conn->file->f_dentry->d_inode); > +-- CUT -- > + > +new helper function file_inode(file) should be used instead. > + > +References: > +1. > https://github.com/torvalds/linux/commit/78d28e651f97866d608d9b41f8ad291e65d47dd5 > +2. > https://github.com/torvalds/linux/commit/496ad9aa8ef448058e36ca7a787c61f2e63f0f54 > + > +Upstream-Status: Pending > + > +Signed-off-by: Jagadeesh Krishnanjanappa <[email protected]> > + > +--- iscsitarget-1.4.20.3+svn502_org/kernel/conn.c 2015-08-24 > 16:13:26.481924679 +0530 > ++++ iscsitarget-1.4.20.3+svn502/kernel/conn.c 2015-08-24 > 17:27:06.897653698 +0530 > +@@ -127,7 +127,11 @@ static void iet_socket_bind(struct iscsi > + > + dprintk(D_GENERIC, "%llu\n", (unsigned long long) session->sid); > + > ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) > ++ conn->sock = SOCKET_I(file_inode(conn->file)); > ++#else > + conn->sock = SOCKET_I(conn->file->f_dentry->d_inode); > ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */ > + conn->sock->sk->sk_user_data = conn; > + > + write_lock_bh(&conn->sock->sk->sk_callback_lock); > +--- iscsitarget-1.4.20.3+svn502_org/kernel/file-io.c 2015-08-24 > 16:13:26.481924679 +0530 > ++++ iscsitarget-1.4.20.3+svn502/kernel/file-io.c 2015-08-24 > 17:30:54.390131100 +0530 > +@@ -69,7 +69,11 @@ static int fileio_make_request(struct ie > + static int fileio_sync(struct iet_volume *lu, struct tio *tio) > + { > + struct fileio_data *p = lu->private; > ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) > ++ struct inode *inode = file_inode(p->filp); > ++#else > + struct inode *inode = p->filp->f_dentry->d_inode; > ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */ > + struct address_space *mapping = inode->i_mapping; > + loff_t ppos, count; > + int res; > +@@ -213,7 +217,11 @@ static int fileio_attach(struct iet_volu > + eprintk("%d\n", err); > + goto out; > + } > ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) > ++ inode = file_inode(p->filp); > ++#else > + inode = p->filp->f_dentry->d_inode; > ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */ > + > + if (S_ISREG(inode->i_mode)) > + ; > +--- iscsitarget-1.4.20.3+svn502_org/kernel/iscsi.c 2015-08-24 > 16:13:26.481924679 +0530 > ++++ iscsitarget-1.4.20.3+svn502/kernel/iscsi.c 2015-08-24 > 17:33:50.950490156 +0530 > +@@ -986,7 +986,11 @@ static void scsi_cmnd_start(struct iscsi > + set_cmnd_lunit(req); > + > + switch (req_hdr->scb[0]) { > ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) > ++ case SERVICE_ACTION_IN_16: > ++#else > + case SERVICE_ACTION_IN: > ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */ > + if ((req_hdr->scb[1] & 0x1f) != 0x10) > + goto error; > + case INQUIRY: > +--- iscsitarget-1.4.20.3+svn502_org/kernel/iscsi.h 2015-08-24 > 16:13:26.481924679 +0530 > ++++ iscsitarget-1.4.20.3+svn502/kernel/iscsi.h 2015-08-24 > 17:35:31.354690051 +0530 > +@@ -257,7 +257,11 @@ struct iscsi_conn { > + struct timer_list nop_timer; > + > + struct iscsi_cmnd *read_cmnd; > ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) > ++ struct user_msghdr read_msg; > ++#else > + struct msghdr read_msg; > ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */ > + struct iovec read_iov[ISCSI_CONN_IOV_MAX]; > + u32 read_size; > + u32 read_overflow; > +--- iscsitarget-1.4.20.3+svn502_org/kernel/nthread.c 2015-08-24 > 16:13:26.481924679 +0530 > ++++ iscsitarget-1.4.20.3+svn502/kernel/nthread.c 2015-08-24 > 17:41:56.187428925 +0530 > +@@ -80,8 +80,11 @@ static int is_data_available(struct iscs > + set_fs(oldfs); > + return (res >= 0) ? avail : res; > + } > +- > ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) > ++static void forward_iov(struct user_msghdr *msg, int len) > ++#else > + static void forward_iov(struct msghdr *msg, int len) > ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */ > + { > + while (msg->msg_iov->iov_len <= len) { > + len -= msg->msg_iov->iov_len; > +@@ -96,7 +99,11 @@ static void forward_iov(struct msghdr *m > + static int do_recv(struct iscsi_conn *conn, int state) > + { > + mm_segment_t oldfs; > ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) > ++ struct user_msghdr msg; > ++#else > + struct msghdr msg; > ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */ > + struct iovec iov[ISCSI_CONN_IOV_MAX]; > + int i, len, res; > + > +@@ -461,7 +468,11 @@ static void exit_tx(struct iscsi_conn *c > + static int tx_ddigest(struct iscsi_cmnd *cmnd, int state) > + { > + int res, rest = cmnd->conn->write_size; > ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) > ++ struct user_msghdr msg = {.msg_flags = MSG_NOSIGNAL | MSG_DONTWAIT}; > ++#else > + struct msghdr msg = {.msg_flags = MSG_NOSIGNAL | MSG_DONTWAIT}; > ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */ > + struct kvec iov; > + > + iov.iov_base = (char *) (&cmnd->ddigest) + (sizeof(u32) - rest); > +--- iscsitarget-1.4.20.3+svn502_org/kernel/target_disk.c 2015-08-24 > 16:13:26.481924679 +0530 > ++++ iscsitarget-1.4.20.3+svn502/kernel/target_disk.c 2015-08-24 > 17:43:42.167625159 +0530 > +@@ -606,7 +606,11 @@ static int disk_execute_cmnd(struct iscs > + case REQUEST_SENSE: > + send_data_rsp(cmnd, build_request_sense_response); > + break; > ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) > ++ case SERVICE_ACTION_IN_16: > ++#else > + case SERVICE_ACTION_IN: > ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */ > + send_data_rsp(cmnd, build_service_action_in_response); > + break; > + case READ_6: > +--- iscsitarget-1.4.20.3+svn502_org/kernel/volume.c 2015-08-24 > 16:13:26.477924674 +0530 > ++++ iscsitarget-1.4.20.3+svn502/kernel/volume.c 2015-08-24 > 18:28:15.697074780 +0530 > +@@ -398,7 +398,11 @@ int is_volume_reserved(struct iet_volume > + case READ_CAPACITY: > + /* allowed commands when reserved */ > + break; > ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) > ++ case SERVICE_ACTION_IN_16: > ++#else > + case SERVICE_ACTION_IN: > ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */ > + if ((scb[1] & 0x1F) == 0x10) > + break; > + /* fall through */ > +@@ -465,7 +469,11 @@ int is_volume_reserved(struct iet_volume > + if (excl_access_ro && !registered) > + err = -EBUSY; > + break; > ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) > ++ case SERVICE_ACTION_IN_16: > ++#else > + case SERVICE_ACTION_IN: > ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */ > + if ((scb[1] & 0x1F) == 0x10) > + break; > + /* fall through */ > diff --git > a/meta-networking/recipes-extended/iscsitarget/files/use-kernel-makefile-to-get-kernel-version.patch > > b/meta-networking/recipes-extended/iscsitarget/files/use-kernel-makefile-to-get-kernel-version.patch > new file mode 100644 > index 0000000..95bd047 > --- /dev/null > +++ > b/meta-networking/recipes-extended/iscsitarget/files/use-kernel-makefile-to-get-kernel-version.patch > @@ -0,0 +1,67 @@ > +Get linux kernel version from Makefile of kernel source > + > +We get below messages while building iscsitarget, > + > +-- snip -- > +x86_64-poky-linux-gcc: error: > +/CGE7_SHDD/project_yocto_1.8/poky/build/tmp/work-shared/qemux86-64/kernel-source/include/linux/version.h: > +No such file or directory > +x86_64-poky-linux-gcc: fatal error: no input files > +compilation terminated. > +/bin/sh: line 0: [: too many arguments > +/bin/sh: line 0: [: too many arguments > +/bin/sh: line 0: [: too many arguments > +/bin/sh: line 0: [: too many arguments > +/bin/sh: line 0: [: too many arguments > +/bin/sh: line 0: [: too many arguments > +/bin/sh: line 0: [: too many arguments > +/bin/sh: line 0: [: too many arguments > +/bin/sh: line 0: [: too many arguments > +/bin/sh: line 0: [: too many arguments > +/bin/sh: line 0: [: too many arguments > +/bin/sh: line 0: [: too many arguments > +-- CUT -- > + > +These messages are due to absence of include/linux/version.h file in > +kernel source directory and failed to compute linux kernel version. > +So, use kernel source Makefile ( i.e $(KSRC)/Makefile) to find out > +actual kernel version. > + > +Upstream-Status: Pending > + > +Signed-off-by: Jagadeesh Krishnanjanappa <[email protected]> > + > +--- iscsitarget-1.4.20.3+svn499_org/Makefile 2014-01-27 00:00:45.000000000 > +0530 > ++++ iscsitarget-1.4.20.3+svn499/Makefile 2015-07-23 10:44:47.013600285 > +0530 > +@@ -18,27 +18,11 @@ ifeq ($(KSRC),) > + endif > + > + > +-ifneq ($(wildcard $(KSRC)/include/generated/utsrelease.h),) > +- VERSION_FILE := $(KSRC)/include/generated/utsrelease.h > +-else > +- ifneq ($(wildcard $(KSRC)/include/linux/utsrelease.h),) > +- VERSION_FILE := $(KSRC)/include/linux/utsrelease.h > +- else > +- VERSION_FILE := $(KSRC)/include/linux/version.h > +- endif > +-endif > +- > +-KVER := $(shell $(CC) $(CFLAGS) $(LDFLAGS) -E -dM $(VERSION_FILE) | \ > +- grep UTS_RELEASE | awk '{ print $$3 }' | sed 's/\"//g') > +- > + KMOD := /lib/modules/$(KVER)/extra > +- > +-KMAJ := $(shell echo $(KVER) | \ > +- sed -e 's/^\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*.*/\1/') > +-KMIN := $(shell echo $(KVER) | \ > +- sed -e 's/^[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*.*/\1/') > +-KREV := $(shell echo $(KVER) | \ > +- sed -e 's/^[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/') > ++KMAJ := $(shell cat $(KSRC)/Makefile | grep ^VERSION | gawk -F " " '{ print > $$NF }') > ++KMIN := $(shell cat $(KSRC)/Makefile | grep ^PATCHLEVEL | gawk -F " " '{ > print $$NF }') > ++KREV := $(shell cat $(KSRC)/Makefile | grep ^SUBLEVEL | gawk -F " " '{ > print $$NF }') > ++KVER := ${KMAJ}.${KMIN}.${KREV} > + > + kver_eq = $(shell [ $(KMAJ) -eq $(1) -a $(KMIN) -eq $(2) -a $(KREV) -eq > $(3) ] && \ > + echo 1 || echo 0) > diff --git > a/meta-networking/recipes-extended/iscsitarget/iscsitarget_1.4.20.3+svn502.bb > b/meta-networking/recipes-extended/iscsitarget/iscsitarget_1.4.20.3+svn502.bb > new file mode 100644 > index 0000000..c96810b > --- /dev/null > +++ > b/meta-networking/recipes-extended/iscsitarget/iscsitarget_1.4.20.3+svn502.bb > @@ -0,0 +1,62 @@ > +DESCRIPTION = "iSCSI Enterprise Target is aimed to develop an \ > + open source iSCSI target with professional features, \ > + that works well in enterprise environment under real \ > + workload, and is scalable and versatile enough to meet the \ > + challenge of future storage needs and developments." > +HOMEPAGE = "http://iscsitarget.sourceforge.net/" > +LICENSE = "GPLv2" > +LIC_FILES_CHKSUM = "file://COPYING;md5=6e233eda45c807aa29aeaa6d94bc48a2" > +DEPENDS = "openssl virtual/kernel" > + > +SRC_URI = > "http://ftp.heanet.ie/mirrors/ubuntu/pool/universe/i/${BPN}/${BPN}_${PV}.orig.tar.gz > \ > + file://use-kernel-makefile-to-get-kernel-version.patch \ > + file://fix-errors-observed-with-linux-3.19-and-greater.patch \ > + " > +SRC_URI[md5sum] = "ef9bc823bbabd3c772208c00d5f2d089" > +SRC_URI[sha256sum] = > "d3196ccb78a43266dce28587bfe30d8ab4db7566d7bce96057dfbb84100babb5" > + > +inherit module-base > + > +# Add make_scripts task to create kernel scripts > +addtask make_scripts after do_patch before do_compile > + > +do_configure[noexec] = "1" > + > +# make_scripts requires kernel source directory to create > +# kernel scripts > +do_make_scripts[depends] += "virtual/kernel:do_shared_workdir" > + > +# Make sure we don't have race condition against "make scripts" > +do_make_scripts[lockfiles] = "${TMPDIR}/kernel-scripts.lock" > + > +do_compile() { > + oe_runmake KSRC=${STAGING_KERNEL_DIR} CFLAGS='${CFLAGS}' LDFLAGS='' \ > + CC="${CC}" V=1 > +} > + > +do_install() { > + # Module > + install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/iscsi > + install -m 0644 kernel/iscsi_trgt.ko \ > + ${D}/lib/modules/${KERNEL_VERSION}/kernel/iscsi/iscsi_trgt.ko > + > + # Userspace utilities > + install -d ${D}${sbindir} > + install -m 0755 usr/ietd ${D}${sbindir}/ietd > + install -m 0755 usr/ietadm ${D}${sbindir}/ietadm > + > + # Config files, init scripts > + mkdir -p ${D}${sysconfdir}/iet > + install -m 0644 etc/ietd.conf ${D}/${sysconfdir}/iet/ietd.conf > + install -m 0644 etc/initiators.allow > ${D}${sysconfdir}/iet/initiators.allow > + install -m 0644 etc/targets.allow ${D}${sysconfdir}/iet/targets.allow > + mkdir -p ${D}${sysconfdir}/init.d > + install -m 0755 etc/initd/initd ${D}${sysconfdir}/init.d/iscsi-target > + install -m 0644 etc/initiators.deny ${D}${sysconfdir}/iet/initiators.deny > +} > + > +FILES_${PN} += "${sbindir} \ > + /lib \ > + ${sysconfdir}" > + > +RRECOMMENDS_${PN} = "kernel-module-crc32c kernel-module-libcrc32c" > -- > 1.8.2.3 > > -- > _______________________________________________ > Openembedded-devel mailing list > [email protected] > http://lists.openembedded.org/mailman/listinfo/openembedded-devel -- Martin 'JaMa' Jansa jabber: [email protected]
signature.asc
Description: Digital signature
-- _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-devel
