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; }