From 491ca9cd95442aed60db2ca79b25527d48c82763 Mon Sep 17 00:00:00 2001 From: Vladislav Bolkhovitin Date: Tue, 10 Oct 2017 02:18:39 +0000 Subject: [PATCH] Merged revisions 7247-7251 via svnmerge from svn+ssh://svn.code.sf.net/p/scst/svn/trunk ........ r7247 | bvassche | 2017-10-06 08:08:00 -0700 (Fri, 06 Oct 2017) | 4 lines fcst: Fix in-tree build See also r7243. ........ r7248 | bvassche | 2017-10-09 11:10:48 -0700 (Mon, 09 Oct 2017) | 4 lines scst_vdisk: Fix a bug in the Linux kernel v4.13 port See also trunk r7240. ........ r7249 | bvassche | 2017-10-09 11:15:00 -0700 (Mon, 09 Oct 2017) | 4 lines scst: Fix SCSI pass-through for kernel version v4.11 and later See also trunk r7153. ........ r7250 | bvassche | 2017-10-09 12:58:15 -0700 (Mon, 09 Oct 2017) | 1 line scst/include/backport.h: Follow-up for r7248 ........ r7251 | vlnb | 2017-10-09 19:06:13 -0700 (Mon, 09 Oct 2017) | 5 lines qla2x00t: update FW version information as suggested by Jens-U. Mozdzen See https://sourceforge.net/p/scst/mailman/message/36068827/ ........ git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/3.3.x@7252 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- fcst/fcst.h | 4 ++-- qla2x00t/qla2x00-target/README | 8 +++++--- scst/include/backport.h | 1 + scst/src/dev_handlers/scst_vdisk.c | 2 +- scst/src/scst_lib.c | 12 +++++++++++- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/fcst/fcst.h b/fcst/fcst.h index 60c508656..bc4e3a838 100644 --- a/fcst/fcst.h +++ b/fcst/fcst.h @@ -19,16 +19,16 @@ #ifdef INSIDE_KERNEL_TREE #include -#define NEW_LIBFC_API #else #include #include "scst.h" +#endif + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) || \ defined(CONFIG_SUSE_KERNEL) && \ LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) #define NEW_LIBFC_API #endif -#endif #define FT_VERSION "3.3.0-rc" #define FT_MODULE "fcst" diff --git a/qla2x00t/qla2x00-target/README b/qla2x00t/qla2x00-target/README index bdeab9b6a..454e5dcc4 100644 --- a/qla2x00t/qla2x00-target/README +++ b/qla2x00t/qla2x00-target/README @@ -110,10 +110,12 @@ https://forums.openfiler.com/viewtopic.php?id=3422. IMPORTANT USAGE NOTES --------------------- -1. It is strongly recommended to use firmware version 5.x or higher -for 24xx/25xx adapters. See +1. It is strongly recommended to use firmware version 5.x or higher for +24xx/25xx adapters. See http://sourceforge.net/mailarchive/forum.php?thread_name=4B4CD39F.6020401%40vlnb.net&forum_name=scst-devel -for more details why. +for more details why. Recent report also suggest that openSUSE ships FW +8.6.0 that leads to severe "scst: TM fn ABORT_TASK/0" errors on the +target side, but using the latest 8.7.0 firmware from QLogic works well. 2. If you reload qla2x00tgt module, you should also reload qla2xxx module, otherwise your initiators could not see the target, when it is diff --git a/scst/include/backport.h b/scst/include/backport.h index 3aeb67771..ee3f172c6 100644 --- a/scst/include/backport.h +++ b/scst/include/backport.h @@ -57,6 +57,7 @@ static inline struct bio_set *bioset_create_backport(unsigned int pool_size, return bioset_create(pool_size, front_pad); } #define bioset_create bioset_create_backport +#define BIOSET_NEED_BVECS 0 #endif /* */ diff --git a/scst/src/dev_handlers/scst_vdisk.c b/scst/src/dev_handlers/scst_vdisk.c index c239ebe41..17a4e7e41 100644 --- a/scst/src/dev_handlers/scst_vdisk.c +++ b/scst/src/dev_handlers/scst_vdisk.c @@ -7818,7 +7818,7 @@ static int vdisk_create_bioset(struct scst_vdisk_dev *virt_dev) EXTRACHECKS_BUG_ON(virt_dev->vdisk_bioset || !virt_dev->blockio); /* Pool size doesn't really matter */ - virt_dev->vdisk_bioset = bioset_create(2, 0, 0); + virt_dev->vdisk_bioset = bioset_create(2, 0, BIOSET_NEED_BVECS); if (virt_dev->vdisk_bioset == NULL) { PRINT_ERROR("Failed to create bioset (dev %s)", virt_dev->name); res = -ENOMEM; diff --git a/scst/src/scst_lib.c b/scst/src/scst_lib.c index 8bf237ef1..04e39b4a7 100644 --- a/scst/src/scst_lib.c +++ b/scst/src/scst_lib.c @@ -7866,6 +7866,10 @@ static struct request *blk_make_request(struct request_queue *q, scsi_req_init(scsi_req(rq)); #elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) scsi_req_init(rq); +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) + rq->cmd_flags = bio_data_dir(bio) == READ ? REQ_OP_SCSI_IN : + REQ_OP_SCSI_OUT; #else blk_rq_set_block_pc(rq); #endif @@ -8042,6 +8046,9 @@ static struct request *__blk_map_kern_sg(struct request_queue *q, */ rq->cmd_type = REQ_TYPE_BLOCK_PC; #endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) + rq->cmd_flags = reading ? REQ_OP_SCSI_IN : REQ_OP_SCSI_OUT; +#endif if (bw != NULL) { atomic_set(&bw->bios_inflight, bios); @@ -8095,8 +8102,11 @@ static struct request *blk_map_kern_sg(struct request_queue *q, scsi_req_init(scsi_req(rq)); #elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) scsi_req_init(rq); +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) + rq->cmd_flags = reading ? REQ_OP_SCSI_IN : REQ_OP_SCSI_OUT; #else - rq->cmd_type = REQ_TYPE_BLOCK_PC; + blk_rq_set_block_pc(rq); #endif goto out; }