Fix patch to be able to work kernel < 4.12.0
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
1. Removes lines related "LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)",
as they are included in recent
build_with_updated_bio_struct_of_linux_v4.3_and_above.patch.
2. Updated incorrect "#if 0//LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)" line.
3. Updated patch to have in compliance with recent
build_with_updated_bio_struct_of_linux_v4.3_and_above.patch.
Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
1. The original patch is at
http://launchpadlibrarian.net/227478885/iscsitarget_1.4.20.3+svn502-2ubuntu2_1.4.20.3+svn502-2ubuntu3.diff.gz,
those changes were taken using #ifs to allow compilation of iscsitarget
package with kernel versions < 4.3.
2. It helps to maintain the patches in future, when iscsitarget is updated.
Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
The below changes in kernel source, triggered iscsitarget
build fail with linux kernel v4.8.
1. An extra 'flags' argument has been passed to vfs_readv/vfs_writev
syscalls in v4.8. So, set this argument to "0" for now
(as there is no real need for that).
Ref: 793b80ef14
Solves:
-- snip --
TOPDIR/tmp-glibc/work/qemux86-oe-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/nthread.c: In function 'write_data':
TOPDIR/tmp-glibc/work/qemux86-oe-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/nthread.c:350:9: error: too few arguments to function 'vfs_writev'
res = vfs_writev(file, (struct iovec __user *) iop, count, &off);
^~~~~~~~~~
-- snip --
2. Redefine dropped PAGE_CACHE_* and page_cache_{get,release} definitions,
as they have been dropped with v4.8
Ref: 1fa64f198b
Solves:
-- snip --
TOPDIR/tmp-glibc/work/qemux86-oe-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/param.c: In function 'sess_param_check':
TOPDIR/tmp-glibc/work/qemux86-oe-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/param.c:48:41: error: 'PAGE_CACHE_SIZE' undeclared (first use in this function)
(u32) ((ISCSI_CONN_IOV_MAX - 1) * PAGE_CACHE_SIZE));
^
-- snip --
3. Replace crypto_hash interfaces with crypto_ahash interfaces,
Ref: 8965450987
Ref: https://www.redhat.com/archives/dm-devel/2016-January/msg00244.html
Solves:
-- snip --
TOPDIR/tmp-glibc/work/qemux86-oe-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/digest.c: In function 'digest_init':
TOPDIR/tmp-glibc/work/qemux86-oe-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/digest.c:42:23: error: implicit declaration of function 'crypto_alloc_hash' [-Werror=implicit-function-declaration]
conn->rx_hash.tfm = crypto_alloc_hash("crc32c", 0,
^~~~~~~~~~~~~~~~~
TOPDIR/tmp-glibc/work/qemux86-oe-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/digest.c: In function 'digest_cleanup':
TOPDIR/tmp-glibc/work/qemux86-oe-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/digest.c:77:3: error: implicit declaration of function 'crypto_free_hash' [-Werror=implicit-function-declaration]
crypto_free_hash(conn->tx_hash.tfm);
^~~~~~~~~~~~~~~~
-- snip --
4. The earlier "rw" parameter has been set in "bi_rw" within
bio structure, hence remove "rw" argument.
Ref: 4e49ea4a3d
Solves:
-- snip --
TOPDIR/tmp-glibc/work/qemux86-oe-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/block-io.c:140:14: warning: passing argument 1 of 'submit_bio' makes pointer from integer without a cast [-Wint-conversion]
submit_bio(rw, bio);
^~
-- snip --
5. The 'len' argument from sk_data_ready() callback has been removed in
linux kernel v4.3 and above.
Ref: 676d23690f
Solves:
-- snip --
TOPDIR/tmp-glibc/work/qemux86-oe-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/conn.c: In function 'iet_socket_bind':
TOPDIR/tmp-glibc/work/qemux86-oe-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/conn.c:143:38: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types]
target->nthread_info.old_data_ready = conn->sock->sk->sk_data_ready;
^
TOPDIR/tmp-glibc/work/qemux86-oe-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/conn.c:144:32: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types]
conn->sock->sk->sk_data_ready = iet_data_ready;
^
-- snip --
6.
A. The "size" argument has been dropped from sock_recvmsg syscall in v4.8,
as all callers have it equal to msg_data_left(msg).
B. '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, so typecase it while calling sock_recvmsg syscall.
Ref: 2da62906b1666547ff59
Solves:
-- snip --
TOPDIR/tmp-glibc/work-shared/qemux86/kernel-source/include/linux/net.h:222:5: note: expected 'struct msghdr *' but argument is of type 'struct user_msghdr *'
int sock_recvmsg(struct socket *sock, struct msghdr *msg, int flags);
^~~~~~~~~~~~
TOPDIR/tmp-glibc/work/qemux86-oe-linux/iscsitarget/1.4.20.3+svn502-r0/iscsitarget-1.4.20.3+svn502/kernel/nthread.c:129:8: error: too many arguments to function 'sock_recvmsg'
res = sock_recvmsg(conn->sock, &msg, len, MSG_DONTWAIT | MSG_NOSIGNAL);
^~~~~~~~~~~~
-- snip --
Detailed error log is at: http://errors.yoctoproject.org/Errors/Details/83334/
Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
1. test_bit was used to return true boolean value, if
BIO_UPTODATE bit of bio->bi_flags is set. But the same
job can be done by checking bio->bi_error, implemented in
linux kernel 4.3 and above. If bio->bi_error is set, then
it denotes error.
Ref: 4246a0b63b
It solves below build error:
-- snip --
iscsitarget-1.4.20.3+svn502/kernel/block-io.c:40:19: error: 'BIO_UPTODATE' undeclared (first use in this function)
error = test_bit(BIO_UPTODATE, &bio->bi_flags) ? error : -EIO;
-- CUT --
2. bio can always be filled to a maximum value of BIO_MAX_PAGES,
so no need to check for min value for linux kernel 4.3 and above.
Ref: b54ffb73ca
It solves below build error:
-- snip --
iscsitarget-1.4.20.3+svn502/kernel/block-io.c:80:15: error: implicit declaration of function 'bio_get_nr_vecs' [-Werror=implicit-function-declaration]
max_pages = bio_get_nr_vecs(bio_data->bdev);
-- CUT --
3. Remove unwanted explicit setting of CFLAGS and CC flags. Setting them in
oe_runmake command, will override CFLAGS mentioned in iscsitarget Makefile
and resulting in a below error:
-- snip --
In file included from iscsid.c:38:0:
iscsid.h:38:19: fatal error: iet_u.h: No such file or directory
compilation terminated.
In file included from conn.c:15:0:
iscsid.h:38:19: fatal error: iet_u.h: No such file or directory
compilation terminated.
-- CUT --
Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
The element skc_v6_daddr (in struct sock_common) is defined in
kernel source only when CONFIG_IPV6 is enabled. Hence, access
sk_v6_daddr element (i.e __sk_common.skc_v6_daddr) only when CONFIG_IPV6
is defined; to fix below error in world build:
-- snip --
/home/jenkins/oe/world/shr-core/tmp-glibc/work-shared/qemux86/kernel-source/include/net/sock.h:330:33: error: 'struct sock_common' has no member named 'skc_v6_daddr'
-- CUT --
Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
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.
Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>