Merged revisions 7233-7244 via svnmerge from

svn+ssh://svn.code.sf.net/p/scst/svn/trunk

........
  r7233 | bvassche | 2017-09-20 08:09:38 -0700 (Wed, 20 Sep 2017) | 4 lines
  
  ib_srpt: Support systems with more than 255 CPU cores
  
  Signed-off-by: Kirill Malkin <kirillmalkin.km@gmail.com>
........
  r7234 | bvassche | 2017-09-24 18:52:53 -0700 (Sun, 24 Sep 2017) | 2 lines
  
  iscsi-scst/Makefile: Change MOFED path into /usr/src/ofa_kernel/default
........
  r7235 | bvassche | 2017-09-25 16:35:49 -0700 (Mon, 25 Sep 2017) | 1 line
  
  iscsi-scst/Makefile, Ubuntu: Simplify code for version querying
........
  r7236 | bvassche | 2017-10-02 16:56:47 -0700 (Mon, 02 Oct 2017) | 1 line
  
  scripts/specialize-patch: Process ENABLE_NPIV and FC_VPORT_CREATE_DEFINED correctly
........
  r7237 | bvassche | 2017-10-02 17:04:53 -0700 (Mon, 02 Oct 2017) | 2 lines
  
  scripts/generate-kernel-patch: Fix a regression introduced in r7164
........
  r7238 | bvassche | 2017-10-02 17:05:42 -0700 (Mon, 02 Oct 2017) | 1 line
  
  scripts/specialize-patch: Process CONFIG_SCST_STRICT_SERIALIZING correctly
........
  r7239 | bvassche | 2017-10-03 15:49:35 -0700 (Tue, 03 Oct 2017) | 1 line
  
  isert-scst: Make an error message more informative
........
  r7240 | bvassche | 2017-10-03 16:08:29 -0700 (Tue, 03 Oct 2017) | 1 line
  
  scst: Port to kernel v4.13
........
  r7241 | bvassche | 2017-10-03 16:10:03 -0700 (Tue, 03 Oct 2017) | 1 line
  
  nightly build: Update kernel versions
........
  r7242 | bvassche | 2017-10-05 09:57:27 -0700 (Thu, 05 Oct 2017) | 1 line
  
  scst: Port to openSUSE Leap 42.x
........
  r7243 | bvassche | 2017-10-05 16:48:25 -0700 (Thu, 05 Oct 2017) | 1 line
  
  fcst: Port to openSUSE Leap
........
  r7244 | bvassche | 2017-10-05 16:48:51 -0700 (Thu, 05 Oct 2017) | 1 line
  
  qla2x00t: Port to openSUSE Leap
........


git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/3.3.x@7246 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2017-10-06 04:51:04 +00:00
parent 122ee734ac
commit e5d322d4ab
20 changed files with 314 additions and 188 deletions
+6
View File
@@ -19,9 +19,15 @@
#ifdef INSIDE_KERNEL_TREE
#include <scst/scst.h>
#define NEW_LIBFC_API
#else
#include <linux/version.h>
#include "scst.h"
#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"
+12 -12
View File
@@ -256,12 +256,12 @@ static void ft_cmd_done(struct ft_cmd *fcmd)
{
struct fc_frame *fp = fcmd->req_frame;
struct fc_seq *sp = fcmd->seq;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct fc_lport *lport = fr_dev(fp);
#endif
if (sp)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
fc_exch_done(sp);
#else
lport->tt.exch_done(sp);
@@ -269,7 +269,7 @@ static void ft_cmd_done(struct ft_cmd *fcmd)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36)
if (fr_seq(fp))
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
fc_seq_release(fr_seq(fp));
#else
lport->tt.seq_release(fr_seq(fp));
@@ -395,7 +395,7 @@ int ft_send_response(struct scst_cmd *cmd)
/*
* Send response.
*/
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
fcmd->seq = fc_seq_start_next(fcmd->seq);
#else
fcmd->seq = lport->tt.seq_start_next(fcmd->seq);
@@ -403,7 +403,7 @@ int ft_send_response(struct scst_cmd *cmd)
fc_fill_fc_hdr(fp, FC_RCTL_DD_CMD_STATUS, ep->did, ep->sid, FC_TYPE_FCP,
FC_FC_EX_CTX | FC_FC_LAST_SEQ | FC_FC_END_SEQ, 0);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
error = FCST_INJ_SEND_ERR(fc_seq_send(lport, fcmd->seq, fp));
#else
error = FCST_INJ_SEND_ERR(lport->tt.seq_send(lport, fcmd->seq, fp));
@@ -505,14 +505,14 @@ int ft_send_xfer_rdy(struct scst_cmd *cmd)
txrdy->ft_data_ro = 0;
txrdy->ft_burst_len = htonl(scst_cmd_get_bufflen(cmd));
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
fcmd->seq = fc_seq_start_next(fcmd->seq);
#else
fcmd->seq = lport->tt.seq_start_next(fcmd->seq);
#endif
fc_fill_fc_hdr(fp, FC_RCTL_DD_DATA_DESC, ep->did, ep->sid, FC_TYPE_FCP,
FC_FC_EX_CTX | FC_FC_END_SEQ | FC_FC_SEQ_INIT, 0);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
error = FCST_INJ_SEND_ERR(fc_seq_send(lport, fcmd->seq, fp));
#else
error = FCST_INJ_SEND_ERR(lport->tt.seq_send(lport, fcmd->seq, fp));
@@ -586,7 +586,7 @@ out:
fc_fill_reply_hdr(fp, rx_fp, FC_RCTL_DD_CMD_STATUS, 0);
sp = fr_seq(fp);
if (sp)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
fc_seq_send(lport, sp, fp);
#else
lport->tt.seq_send(lport, sp, fp);
@@ -718,7 +718,7 @@ static void ft_recv_cmd(struct ft_sess *sess, struct fc_frame *fp)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 36)
sp = fr_seq(fp);
#else
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
sp = fc_seq_assign(lport, fp);
#else
sp = lport->tt.seq_assign(lport, fp);
@@ -771,7 +771,7 @@ static void ft_recv_cmd(struct ft_sess *sess, struct fc_frame *fp)
cmd->state = FT_STATE_NEW;
fcmd->seq = sp;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
fc_seq_set_resp(sp, ft_recv_seq, cmd);
#else
lport->tt.seq_set_resp(sp, ft_recv_seq, cmd);
@@ -824,7 +824,7 @@ busy:
if (fcmd)
ft_cmd_done(fcmd);
else if (sp)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
fc_exch_done(sp);
#else
lport->tt.exch_done(sp);
@@ -867,7 +867,7 @@ static void ft_cmd_ls_rjt(struct fc_frame *rx_fp, enum fc_els_rjt_reason reason,
lport = fr_dev(rx_fp);
rjt_data.reason = reason;
rjt_data.explan = explan;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
fc_seq_els_rsp_send(rx_fp, ELS_LS_RJT, &rjt_data);
#else
lport->tt.seq_els_rsp_send(rx_fp, ELS_LS_RJT, &rjt_data);
+2 -2
View File
@@ -89,7 +89,7 @@ int ft_send_read_data(struct scst_cmd *cmd)
mem_len -= tlen;
mem_off = tlen;
} else
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
fcmd->seq = fc_seq_start_next(fcmd->seq);
#else
fcmd->seq = lport->tt.seq_start_next(fcmd->seq);
@@ -179,7 +179,7 @@ int ft_send_read_data(struct scst_cmd *cmd)
remaining ? (FC_FC_EX_CTX | FC_FC_REL_OFF) :
(FC_FC_EX_CTX | FC_FC_REL_OFF | FC_FC_END_SEQ),
fh_off);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
error = FCST_INJ_SEND_ERR(fc_seq_send(lport, fcmd->seq, fp));
#else
error = FCST_INJ_SEND_ERR(lport->tt.seq_send(lport, fcmd->seq,
+18 -13
View File
@@ -65,23 +65,28 @@ OFED_CFLAGS:=
OFED_FLAVOR=$(shell if [ -e /usr/bin/ofed_info ]; then /usr/bin/ofed_info 2>/dev/null | head -n1 | sed -n 's/^\(MLNX_OFED\|OFED-internal\).*/MOFED/p;s/^OFED-.*/OFED/p'; else echo in-tree; fi)
ifeq ($(OFED_FLAVOR),MOFED)
# Whether MLNX_OFED for ubuntu has been installed
MLNX_OFED_IB_UBUNTU_INSTALLED:=$(shell if dpkg -s mlnx-ofed-kernel-dkms >/dev/null 2>/dev/null; then echo true; else echo false; fi)
# Whether MLNX_OFED for RedHat has been installed
MLNX_OFED_IB_RH_INSTALLED:=$(shell if { rpm -q mlnx-ofa_kernel-devel || rpm -q kernel-ib-devel; } >&/dev/null; then echo true; else echo false; fi)
ifeq ($(MLNX_OFED_IB_UBUNTU_INSTALLED),true)
OFED_VERS=$(shell dpkg -s mlnx-ofed-kernel-dkms | awk -F\- '/Version/ {print $$1}' | awk '{print $$2}')
OFED_DIR:=/var/lib/dkms/mlnx-ofed-kernel/$(OFED_VERS)/build
endif
ifeq ($(MLNX_OFED_IB_RH_INSTALLED),true)
ifeq ($(shell if dpkg -s mlnx-ofed-kernel-dkms >/dev/null 2>&1; then \
echo true; \
else \
echo false; \
fi),true)
OFED_VERS=$(shell dpkg-query -W --showformat='${Version}\n' mlnx-ofed-kernel-dkms)
else
ifeq ($(shell if { rpm -q mlnx-ofa_kernel-devel || \
rpm -q kernel-ib-devel; } >&/dev/null; then \
echo true; \
else \
echo false; \
fi),true)
OFED_VERS=$(shell rpm -q --qf '%{version}\n' mlnx-ofa_kernel-devel \
2>/dev/null)
OFED_DIR:=/usr/src/ofa_kernel/default
else
echo := $(shell echo "Error: MLNX OFED has not been installed" >&2)
endif
endif
echo := $(shell echo "OFED_VERS = $(OFED_VERS)" >&2)
OFED_DIR:=/usr/src/ofa_kernel/default
OFED_CFLAGS:= -I$(OFED_DIR)/include \
-I$(OFED_DIR)/include/uapi \
-include $(OFED_DIR)/include/linux/compat-2.6.h \
+2 -1
View File
@@ -989,7 +989,8 @@ static struct isert_device *isert_device_create(struct ib_device *ib_dev)
sizeof(*isert_dev->cq_qps),
GFP_KERNEL);
if (unlikely(isert_dev->cq_qps == NULL)) {
PRINT_ERROR("Failed to allocate iser cq_qps");
PRINT_ERROR("Failed to allocate %d iser cq_qps",
isert_dev->num_cqs);
err = -ENOMEM;
goto free_isert_dev;
}
+2 -1
View File
@@ -3,7 +3,8 @@
ABT_DETAILS="x86_64"
ABT_JOBS=5
ABT_KERNELS=" \
4.12.9 \
4.13.4 \
4.12.14-nc \
4.11.12-nc \
4.10.17-nc \
4.9.45-nc \
+115 -115
View File
@@ -16,14 +16,14 @@ qla2x00_bsg_job_done(void *data, void *ptr, int res)
{
srb_t *sp = (srb_t*)ptr;
struct scsi_qla_host *vha = (scsi_qla_host_t *)data;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct fc_bsg_job *bsg_job = sp->u.bsg_job;
#else
struct bsg_job *bsg_job = sp->u.bsg_job;
struct fc_bsg_reply *bsg_reply = bsg_job->reply;
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = res;
bsg_job->job_done(bsg_job);
#else
@@ -39,7 +39,7 @@ qla2x00_bsg_sp_free(void *data, void *ptr)
{
srb_t *sp = (srb_t*)ptr;
struct scsi_qla_host *vha = (scsi_qla_host_t *)data;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct fc_bsg_job *bsg_job = sp->u.bsg_job;
#else
struct bsg_job *bsg_job = sp->u.bsg_job;
@@ -114,13 +114,13 @@ qla24xx_fcp_prio_cfg_valid(scsi_qla_host_t *vha,
}
static int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla24xx_proc_fcp_prio_cfg_cmd(struct fc_bsg_job *bsg_job)
#else
qla24xx_proc_fcp_prio_cfg_cmd(struct bsg_job *bsg_job)
#endif
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct Scsi_Host *host = bsg_job->shost;
#else
struct Scsi_Host *host = fc_bsg_to_shost(bsg_job);
@@ -139,7 +139,7 @@ qla24xx_proc_fcp_prio_cfg_cmd(struct bsg_job *bsg_job)
}
/* Get the sub command */
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
oper = bsg_job->request->rqst_data.h_vendor.vendor_cmd[1];
#else
oper = bsg_request->rqst_data.h_vendor.vendor_cmd[1];
@@ -157,14 +157,14 @@ qla24xx_proc_fcp_prio_cfg_cmd(struct bsg_job *bsg_job)
ha->fcp_prio_cfg->attributes &=
~FCP_PRIO_ATTR_ENABLE;
qla24xx_update_all_fcp_prio(vha);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = DID_OK;
#else
bsg_reply->result = DID_OK;
#endif
} else {
ret = -EINVAL;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = (DID_ERROR << 16);
#else
bsg_reply->result = (DID_ERROR << 16);
@@ -180,14 +180,14 @@ qla24xx_proc_fcp_prio_cfg_cmd(struct bsg_job *bsg_job)
ha->fcp_prio_cfg->attributes |=
FCP_PRIO_ATTR_ENABLE;
qla24xx_update_all_fcp_prio(vha);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = DID_OK;
#else
bsg_reply->result = DID_OK;
#endif
} else {
ret = -EINVAL;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = (DID_ERROR << 16);
#else
bsg_reply->result = (DID_ERROR << 16);
@@ -201,7 +201,7 @@ qla24xx_proc_fcp_prio_cfg_cmd(struct bsg_job *bsg_job)
len = bsg_job->reply_payload.payload_len;
if (!len || len > FCP_PRIO_CFG_SIZE) {
ret = -EINVAL;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = (DID_ERROR << 16);
#else
bsg_reply->result = (DID_ERROR << 16);
@@ -209,7 +209,7 @@ qla24xx_proc_fcp_prio_cfg_cmd(struct bsg_job *bsg_job)
goto exit_fcp_prio_cfg;
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = DID_OK;
bsg_job->reply->reply_payload_rcv_len =
#else
@@ -226,7 +226,7 @@ qla24xx_proc_fcp_prio_cfg_cmd(struct bsg_job *bsg_job)
case QLFC_FCP_PRIO_SET_CONFIG:
len = bsg_job->request_payload.payload_len;
if (!len || len > FCP_PRIO_CFG_SIZE) {
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = (DID_ERROR << 16);
#else
bsg_reply->result = (DID_ERROR << 16);
@@ -241,7 +241,7 @@ qla24xx_proc_fcp_prio_cfg_cmd(struct bsg_job *bsg_job)
ql_log(ql_log_warn, vha, 0x7050,
"Unable to allocate memory for fcp prio "
"config data (%x).\n", FCP_PRIO_CFG_SIZE);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = (DID_ERROR << 16);
#else
bsg_reply->result = (DID_ERROR << 16);
@@ -260,7 +260,7 @@ qla24xx_proc_fcp_prio_cfg_cmd(struct bsg_job *bsg_job)
if (!qla24xx_fcp_prio_cfg_valid(vha,
(struct qla_fcp_prio_cfg *) ha->fcp_prio_cfg, 1)) {
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = (DID_ERROR << 16);
#else
bsg_reply->result = (DID_ERROR << 16);
@@ -278,7 +278,7 @@ qla24xx_proc_fcp_prio_cfg_cmd(struct bsg_job *bsg_job)
if (ha->fcp_prio_cfg->attributes & FCP_PRIO_ATTR_ENABLE)
ha->flags.fcp_prio_enabled = 1;
qla24xx_update_all_fcp_prio(vha);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = DID_OK;
#else
bsg_reply->result = DID_OK;
@@ -289,7 +289,7 @@ qla24xx_proc_fcp_prio_cfg_cmd(struct bsg_job *bsg_job)
break;
}
exit_fcp_prio_cfg:
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->job_done(bsg_job);
#else
if (!ret)
@@ -300,13 +300,13 @@ exit_fcp_prio_cfg:
}
static int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla2x00_process_els(struct fc_bsg_job *bsg_job)
#else
qla2x00_process_els(struct bsg_job *bsg_job)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
struct fc_bsg_request *bsg_request = bsg_job->request;
#endif
struct fc_rport *rport;
@@ -321,7 +321,7 @@ qla2x00_process_els(struct bsg_job *bsg_job)
uint16_t nextlid = 0;
#ifdef __COVERITY__
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
BUG_ON(bsg_job->request->msgcode != FC_BSG_RPT_ELS &&
bsg_job->request->msgcode != FC_BSG_HST_ELS_NOLOGIN);
#else
@@ -330,7 +330,7 @@ qla2x00_process_els(struct bsg_job *bsg_job)
#endif
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
if (bsg_job->request->msgcode == FC_BSG_RPT_ELS) {
rport = bsg_job->rport;
#else
@@ -343,7 +343,7 @@ qla2x00_process_els(struct bsg_job *bsg_job)
ha = vha->hw;
type = "FC_BSG_RPT_ELS";
} else {
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
host = bsg_job->shost;
#else
host = fc_bsg_to_shost(bsg_job);
@@ -374,7 +374,7 @@ qla2x00_process_els(struct bsg_job *bsg_job)
}
/* ELS request for rport */
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
if (bsg_job->request->msgcode == FC_BSG_RPT_ELS) {
#else
if (bsg_request->msgcode == FC_BSG_RPT_ELS) {
@@ -403,7 +403,7 @@ qla2x00_process_els(struct bsg_job *bsg_job)
/* Initialize all required fields of fcport */
fcport->vha = vha;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
fcport->d_id.b.al_pa =
bsg_job->request->rqst_data.h_els.port_id[0];
fcport->d_id.b.area =
@@ -462,7 +462,7 @@ qla2x00_process_els(struct bsg_job *bsg_job)
goto done_unmap_sg;
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
sp->type =
(bsg_job->request->msgcode == FC_BSG_RPT_ELS ?
SRB_ELS_CMD_RPT : SRB_ELS_CMD_HST);
@@ -484,7 +484,7 @@ qla2x00_process_els(struct bsg_job *bsg_job)
ql_dbg(ql_dbg_user, vha, 0x700a,
"bsg rqst type: %s els type: %x - loop-id=%x "
"portid=%-2x%02x%02x.\n", type,
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->request->rqst_data.h_els.command_code, fcport->loop_id,
#else
bsg_request->rqst_data.h_els.command_code, fcport->loop_id,
@@ -509,7 +509,7 @@ done_unmap_sg:
goto done_free_fcport;
done_free_fcport:
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
if (bsg_job->request->msgcode == FC_BSG_HST_ELS_NOLOGIN)
#else
if (bsg_request->msgcode == FC_BSG_HST_ELS_NOLOGIN)
@@ -534,14 +534,14 @@ qla24xx_calc_ct_iocbs(uint16_t dsds)
}
static int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla2x00_process_ct(struct fc_bsg_job *bsg_job)
#else
qla2x00_process_ct(struct bsg_job *bsg_job)
#endif
{
srb_t *sp;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct Scsi_Host *host = bsg_job->shost;
#else
struct fc_bsg_request *bsg_request = bsg_job->request;
@@ -592,7 +592,7 @@ qla2x00_process_ct(struct bsg_job *bsg_job)
}
loop_id =
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
(bsg_job->request->rqst_data.h_ct.preamble_word1 & 0xFF000000)
#else
(bsg_request->rqst_data.h_ct.preamble_word1 & 0xFF000000)
@@ -627,7 +627,7 @@ qla2x00_process_ct(struct bsg_job *bsg_job)
/* Initialize all required fields of fcport */
fcport->vha = vha;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
fcport->d_id.b.al_pa = bsg_job->request->rqst_data.h_ct.port_id[0];
fcport->d_id.b.area = bsg_job->request->rqst_data.h_ct.port_id[1];
fcport->d_id.b.domain = bsg_job->request->rqst_data.h_ct.port_id[2];
@@ -657,7 +657,7 @@ qla2x00_process_ct(struct bsg_job *bsg_job)
ql_dbg(ql_dbg_user, vha, 0x7016,
"bsg rqst type: %s else type: %x - "
"loop-id=%x portid=%02x%02x%02x.\n", type,
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
(bsg_job->request->rqst_data.h_ct.preamble_word2 >> 16),
#else
(bsg_request->rqst_data.h_ct.preamble_word2 >> 16),
@@ -777,13 +777,13 @@ done_reset_internal:
}
static int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla2x00_process_loopback(struct fc_bsg_job *bsg_job)
#else
qla2x00_process_loopback(struct bsg_job *bsg_job)
#endif
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct Scsi_Host *host = bsg_job->shost;
#else
struct fc_bsg_request *bsg_request = bsg_job->request;
@@ -871,7 +871,7 @@ qla2x00_process_loopback(struct bsg_job *bsg_job)
elreq.rcv_dma = rsp_data_dma;
elreq.transfer_size = req_data_len;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
elreq.options = bsg_job->request->rqst_data.h_vendor.vendor_cmd[1];
#else
elreq.options = bsg_request->rqst_data.h_vendor.vendor_cmd[1];
@@ -894,7 +894,7 @@ qla2x00_process_loopback(struct bsg_job *bsg_job)
if (qla81xx_get_port_config(vha, config)) {
ql_log(ql_log_warn, vha, 0x701f,
"Get port config failed.\n");
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = (DID_ERROR << 16);
#else
bsg_reply->result = (DID_ERROR << 16);
@@ -911,7 +911,7 @@ qla2x00_process_loopback(struct bsg_job *bsg_job)
new_config)) {
ql_log(ql_log_warn, vha, 0x7024,
"Internal loopback failed.\n");
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result =
#else
bsg_reply->result =
@@ -926,7 +926,7 @@ qla2x00_process_loopback(struct bsg_job *bsg_job)
*/
if (qla81xx_reset_internal_loopback(vha,
config, 1)) {
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result =
#else
bsg_reply->result =
@@ -966,7 +966,7 @@ qla2x00_process_loopback(struct bsg_job *bsg_job)
"MPI reset failed.\n");
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = (DID_ERROR << 16);
#else
bsg_reply->result = (DID_ERROR << 16);
@@ -999,7 +999,7 @@ qla2x00_process_loopback(struct bsg_job *bsg_job)
fw_sts_ptr += sizeof(response);
*fw_sts_ptr = command_sent;
rval = 0;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = (DID_ERROR << 16);
#else
bsg_reply->result = (DID_ERROR << 16);
@@ -1010,7 +1010,7 @@ qla2x00_process_loopback(struct bsg_job *bsg_job)
bsg_job->reply_len = sizeof(struct fc_bsg_reply) +
sizeof(response) + sizeof(uint8_t);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_payload_rcv_len =
#else
bsg_reply->reply_payload_rcv_len =
@@ -1026,7 +1026,7 @@ qla2x00_process_loopback(struct bsg_job *bsg_job)
memcpy(fw_sts_ptr, response, sizeof(response));
fw_sts_ptr += sizeof(response);
*fw_sts_ptr = command_sent;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = DID_OK;
#else
bsg_reply->result = DID_OK;
@@ -1035,7 +1035,7 @@ qla2x00_process_loopback(struct bsg_job *bsg_job)
bsg_job->reply_payload.sg_cnt, rsp_data,
rsp_data_len);
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->job_done(bsg_job);
#else
if (!rval)
@@ -1060,13 +1060,13 @@ done_unmap_req_sg:
}
static int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla84xx_reset(struct fc_bsg_job *bsg_job)
#else
qla84xx_reset(struct bsg_job *bsg_job)
#endif
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct Scsi_Host *host = bsg_job->shost;
#else
struct fc_bsg_request *bsg_request = bsg_job->request;
@@ -1083,7 +1083,7 @@ qla84xx_reset(struct bsg_job *bsg_job)
return -EINVAL;
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
flag = bsg_job->request->rqst_data.h_vendor.vendor_cmd[1];
#else
flag = bsg_request->rqst_data.h_vendor.vendor_cmd[1];
@@ -1095,7 +1095,7 @@ qla84xx_reset(struct bsg_job *bsg_job)
ql_log(ql_log_warn, vha, 0x7030,
"Vendor request 84xx reset failed.\n");
rval = 0;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = (DID_ERROR << 16);
#else
bsg_reply->result = (DID_ERROR << 16);
@@ -1103,14 +1103,14 @@ qla84xx_reset(struct bsg_job *bsg_job)
} else {
ql_dbg(ql_dbg_user, vha, 0x7031,
"Vendor request 84xx reset completed.\n");
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = DID_OK;
#else
bsg_reply->result = DID_OK;
#endif
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->job_done(bsg_job);
#else
if (!rval)
@@ -1121,13 +1121,13 @@ qla84xx_reset(struct bsg_job *bsg_job)
}
static int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla84xx_updatefw(struct fc_bsg_job *bsg_job)
#else
qla84xx_updatefw(struct bsg_job *bsg_job)
#endif
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct Scsi_Host *host = bsg_job->shost;
#else
struct fc_bsg_request *bsg_request = bsg_job->request;
@@ -1190,7 +1190,7 @@ qla84xx_updatefw(struct bsg_job *bsg_job)
goto done_free_fw_buf;
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
flag = bsg_job->request->rqst_data.h_vendor.vendor_cmd[1];
#else
flag = bsg_request->rqst_data.h_vendor.vendor_cmd[1];
@@ -1221,7 +1221,7 @@ qla84xx_updatefw(struct bsg_job *bsg_job)
"Vendor request 84xx updatefw failed.\n");
rval = 0;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = (DID_ERROR << 16);
#else
bsg_reply->result = (DID_ERROR << 16);
@@ -1231,14 +1231,14 @@ qla84xx_updatefw(struct bsg_job *bsg_job)
"Vendor request 84xx updatefw completed.\n");
bsg_job->reply_len = sizeof(struct fc_bsg_reply);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = DID_OK;
#else
bsg_reply->result = DID_OK;
#endif
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->job_done(bsg_job);
#else
if (!rval)
@@ -1258,13 +1258,13 @@ done_unmap_sg:
}
static int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla84xx_mgmt_cmd(struct fc_bsg_job *bsg_job)
#else
qla84xx_mgmt_cmd(struct bsg_job *bsg_job)
#endif
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct Scsi_Host *host = bsg_job->shost;
#else
struct fc_bsg_request *bsg_request = bsg_job->request;
@@ -1288,7 +1288,7 @@ qla84xx_mgmt_cmd(struct bsg_job *bsg_job)
return -EINVAL;
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
ql84_mgmt = (struct qla_bsg_a84_mgmt *)((char *)bsg_job->request +
sizeof(struct fc_bsg_request));
#else
@@ -1431,7 +1431,7 @@ qla84xx_mgmt_cmd(struct bsg_job *bsg_job)
"Vendor request 84xx mgmt failed.\n");
rval = 0;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = (DID_ERROR << 16);
#else
bsg_reply->result = (DID_ERROR << 16);
@@ -1441,7 +1441,7 @@ qla84xx_mgmt_cmd(struct bsg_job *bsg_job)
"Vendor request 84xx mgmt completed.\n");
bsg_job->reply_len = sizeof(struct fc_bsg_reply);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = DID_OK;
#else
bsg_reply->result = DID_OK;
@@ -1449,7 +1449,7 @@ qla84xx_mgmt_cmd(struct bsg_job *bsg_job)
if ((ql84_mgmt->mgmt.cmd == QLA84_MGMT_READ_MEM) ||
(ql84_mgmt->mgmt.cmd == QLA84_MGMT_GET_INFO)) {
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_payload_rcv_len =
#else
bsg_reply->reply_payload_rcv_len =
@@ -1462,7 +1462,7 @@ qla84xx_mgmt_cmd(struct bsg_job *bsg_job)
}
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->job_done(bsg_job);
#else
if (!rval)
@@ -1488,13 +1488,13 @@ exit_mgmt:
}
static int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla24xx_iidma(struct fc_bsg_job *bsg_job)
#else
qla24xx_iidma(struct bsg_job *bsg_job)
#endif
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct Scsi_Host *host = bsg_job->shost;
#else
struct fc_bsg_request *bsg_request = bsg_job->request;
@@ -1513,7 +1513,7 @@ qla24xx_iidma(struct bsg_job *bsg_job)
return -EINVAL;
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
port_param = (struct qla_port_param *)((char *)bsg_job->request +
sizeof(struct fc_bsg_request));
#else
@@ -1569,7 +1569,7 @@ qla24xx_iidma(struct bsg_job *bsg_job)
fcport->port_name[5], fcport->port_name[6],
fcport->port_name[7], rval, fcport->fp_speed, mb[0], mb[1]);
rval = 0;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = (DID_ERROR << 16);
#else
bsg_reply->result = (DID_ERROR << 16);
@@ -1586,14 +1586,14 @@ qla24xx_iidma(struct bsg_job *bsg_job)
sizeof(struct qla_port_param));
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = DID_OK;
#else
bsg_reply->result = DID_OK;
#endif
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->job_done(bsg_job);
#else
if (!rval)
@@ -1604,14 +1604,14 @@ qla24xx_iidma(struct bsg_job *bsg_job)
}
static int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla2x00_optrom_setup(struct fc_bsg_job *bsg_job, scsi_qla_host_t *vha,
#else
qla2x00_optrom_setup(struct bsg_job *bsg_job, scsi_qla_host_t *vha,
#endif
uint8_t is_update)
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
struct fc_bsg_request *bsg_request = bsg_job->request;
#endif
uint32_t start = 0;
@@ -1621,7 +1621,7 @@ qla2x00_optrom_setup(struct bsg_job *bsg_job, scsi_qla_host_t *vha,
if (unlikely(pci_channel_offline(ha->pdev)))
return -EINVAL;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
start = bsg_job->request->rqst_data.h_vendor.vendor_cmd[1];
#else
start = bsg_request->rqst_data.h_vendor.vendor_cmd[1];
@@ -1684,13 +1684,13 @@ qla2x00_optrom_setup(struct bsg_job *bsg_job, scsi_qla_host_t *vha,
}
static int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla2x00_read_optrom(struct fc_bsg_job *bsg_job)
#else
qla2x00_read_optrom(struct bsg_job *bsg_job)
#endif
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct Scsi_Host *host = bsg_job->shost;
#else
struct fc_bsg_reply *bsg_reply = bsg_job->reply;
@@ -1714,7 +1714,7 @@ qla2x00_read_optrom(struct bsg_job *bsg_job)
bsg_job->reply_payload.sg_cnt, ha->optrom_buffer,
ha->optrom_region_size);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_payload_rcv_len = ha->optrom_region_size;
bsg_job->reply->result = DID_OK;
#else
@@ -1724,7 +1724,7 @@ qla2x00_read_optrom(struct bsg_job *bsg_job)
vfree(ha->optrom_buffer);
ha->optrom_buffer = NULL;
ha->optrom_state = QLA_SWAITING;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->job_done(bsg_job);
#else
bsg_job_done(bsg_job, bsg_reply->result,
@@ -1734,13 +1734,13 @@ qla2x00_read_optrom(struct bsg_job *bsg_job)
}
static int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla2x00_update_optrom(struct fc_bsg_job *bsg_job)
#else
qla2x00_update_optrom(struct bsg_job *bsg_job)
#endif
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct Scsi_Host *host = bsg_job->shost;
#else
struct fc_bsg_reply *bsg_reply = bsg_job->reply;
@@ -1764,7 +1764,7 @@ qla2x00_update_optrom(struct bsg_job *bsg_job)
ha->isp_ops->write_optrom(vha, ha->optrom_buffer,
ha->optrom_region_start, ha->optrom_region_size);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = DID_OK;
#else
bsg_reply->result = DID_OK;
@@ -1772,7 +1772,7 @@ qla2x00_update_optrom(struct bsg_job *bsg_job)
vfree(ha->optrom_buffer);
ha->optrom_buffer = NULL;
ha->optrom_state = QLA_SWAITING;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->job_done(bsg_job);
#else
bsg_job_done(bsg_job, bsg_reply->result,
@@ -1782,13 +1782,13 @@ qla2x00_update_optrom(struct bsg_job *bsg_job)
}
static int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla2x00_update_fru_versions(struct fc_bsg_job *bsg_job)
#else
qla2x00_update_fru_versions(struct bsg_job *bsg_job)
#endif
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct Scsi_Host *host = bsg_job->shost;
#else
struct fc_bsg_reply *bsg_reply = bsg_job->reply;
@@ -1804,7 +1804,7 @@ qla2x00_update_fru_versions(struct bsg_job *bsg_job)
dma_addr_t sfp_dma;
void *sfp = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &sfp_dma);
if (!sfp) {
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_data.vendor_reply.vendor_rsp[0] =
#else
bsg_reply->reply_data.vendor_reply.vendor_rsp[0] =
@@ -1824,7 +1824,7 @@ qla2x00_update_fru_versions(struct bsg_job *bsg_job)
image->field_address.device, image->field_address.offset,
sizeof(image->field_info), image->field_address.option);
if (rval) {
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_data.vendor_reply.vendor_rsp[0] =
#else
bsg_reply->reply_data.vendor_reply.vendor_rsp[0] =
@@ -1835,7 +1835,7 @@ qla2x00_update_fru_versions(struct bsg_job *bsg_job)
image++;
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_data.vendor_reply.vendor_rsp[0] = 0;
#else
bsg_reply->reply_data.vendor_reply.vendor_rsp[0] = 0;
@@ -1846,7 +1846,7 @@ dealloc:
done:
bsg_job->reply_len = sizeof(struct fc_bsg_reply);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = DID_OK << 16;
bsg_job->job_done(bsg_job);
#else
@@ -1859,13 +1859,13 @@ done:
}
static int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla2x00_read_fru_status(struct fc_bsg_job *bsg_job)
#else
qla2x00_read_fru_status(struct bsg_job *bsg_job)
#endif
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct Scsi_Host *host = bsg_job->shost;
#else
struct fc_bsg_reply *bsg_reply = bsg_job->reply;
@@ -1879,7 +1879,7 @@ qla2x00_read_fru_status(struct bsg_job *bsg_job)
dma_addr_t sfp_dma;
uint8_t *sfp = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &sfp_dma);
if (!sfp) {
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_data.vendor_reply.vendor_rsp[0] =
#else
bsg_reply->reply_data.vendor_reply.vendor_rsp[0] =
@@ -1897,7 +1897,7 @@ qla2x00_read_fru_status(struct bsg_job *bsg_job)
sr->status_reg = *sfp;
if (rval) {
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_data.vendor_reply.vendor_rsp[0] =
#else
bsg_reply->reply_data.vendor_reply.vendor_rsp[0] =
@@ -1909,7 +1909,7 @@ qla2x00_read_fru_status(struct bsg_job *bsg_job)
sg_copy_from_buffer(bsg_job->reply_payload.sg_list,
bsg_job->reply_payload.sg_cnt, sr, sizeof(*sr));
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_data.vendor_reply.vendor_rsp[0] = 0;
#else
bsg_reply->reply_data.vendor_reply.vendor_rsp[0] = 0;
@@ -1920,7 +1920,7 @@ dealloc:
done:
bsg_job->reply_len = sizeof(struct fc_bsg_reply);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_payload_rcv_len = sizeof(*sr);
bsg_job->reply->result = DID_OK << 16;
bsg_job->job_done(bsg_job);
@@ -1935,13 +1935,13 @@ done:
}
static int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla2x00_write_fru_status(struct fc_bsg_job *bsg_job)
#else
qla2x00_write_fru_status(struct bsg_job *bsg_job)
#endif
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct Scsi_Host *host = bsg_job->shost;
#else
struct fc_bsg_reply *bsg_reply = bsg_job->reply;
@@ -1955,7 +1955,7 @@ qla2x00_write_fru_status(struct bsg_job *bsg_job)
dma_addr_t sfp_dma;
uint8_t *sfp = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &sfp_dma);
if (!sfp) {
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_data.vendor_reply.vendor_rsp[0] =
#else
bsg_reply->reply_data.vendor_reply.vendor_rsp[0] =
@@ -1973,7 +1973,7 @@ qla2x00_write_fru_status(struct bsg_job *bsg_job)
sizeof(sr->status_reg), sr->field_address.option);
if (rval) {
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_data.vendor_reply.vendor_rsp[0] =
#else
bsg_reply->reply_data.vendor_reply.vendor_rsp[0] =
@@ -1982,7 +1982,7 @@ qla2x00_write_fru_status(struct bsg_job *bsg_job)
goto dealloc;
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_data.vendor_reply.vendor_rsp[0] = 0;
#else
bsg_reply->reply_data.vendor_reply.vendor_rsp[0] = 0;
@@ -1993,7 +1993,7 @@ dealloc:
done:
bsg_job->reply_len = sizeof(struct fc_bsg_reply);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = DID_OK << 16;
bsg_job->job_done(bsg_job);
#else
@@ -2006,18 +2006,18 @@ done:
}
static int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla2x00_process_vendor_specific(struct fc_bsg_job *bsg_job)
#else
qla2x00_process_vendor_specific(struct bsg_job *bsg_job)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
struct fc_bsg_request *bsg_request = bsg_job->request;
struct fc_bsg_reply *bsg_reply = bsg_job->reply;
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
switch (bsg_job->request->rqst_data.h_vendor.vendor_cmd[0]) {
#else
switch (bsg_request->rqst_data.h_vendor.vendor_cmd[0]) {
@@ -2056,7 +2056,7 @@ qla2x00_process_vendor_specific(struct bsg_job *bsg_job)
return qla2x00_write_fru_status(bsg_job);
default:
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = (DID_ERROR << 16);
bsg_job->job_done(bsg_job);
#else
@@ -2067,13 +2067,13 @@ qla2x00_process_vendor_specific(struct bsg_job *bsg_job)
}
int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla24xx_bsg_request(struct fc_bsg_job *bsg_job)
#else
qla24xx_bsg_request(struct bsg_job *bsg_job)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
struct fc_bsg_request *bsg_request = bsg_job->request;
struct fc_bsg_reply *bsg_reply = bsg_job->reply;
#endif
@@ -2084,7 +2084,7 @@ qla24xx_bsg_request(struct bsg_job *bsg_job)
scsi_qla_host_t *vha;
/* In case no data transferred. */
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_payload_rcv_len = 0;
if (bsg_job->request->msgcode == FC_BSG_RPT_ELS) {
@@ -2099,7 +2099,7 @@ qla24xx_bsg_request(struct bsg_job *bsg_job)
host = rport_to_shost(rport);
vha = shost_priv(host);
} else {
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
host = bsg_job->shost;
#else
host = fc_bsg_to_shost(bsg_job);
@@ -2110,7 +2110,7 @@ qla24xx_bsg_request(struct bsg_job *bsg_job)
if (qla2x00_reset_active(vha)) {
ql_dbg(ql_dbg_user, vha, 0x709f,
"BSG: ISP abort active/needed -- cmd=%d.\n",
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->request->msgcode);
bsg_job->reply->result = (DID_ERROR << 16);
bsg_job->job_done(bsg_job);
@@ -2122,13 +2122,13 @@ qla24xx_bsg_request(struct bsg_job *bsg_job)
}
ql_dbg(ql_dbg_user, vha, 0x7000,
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
"Entered %s msgcode=0x%x.\n", __func__, bsg_job->request->msgcode);
#else
"Entered %s msgcode=0x%x.\n", __func__, bsg_request->msgcode);
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
switch (bsg_job->request->msgcode) {
#else
switch (bsg_request->msgcode) {
@@ -2148,7 +2148,7 @@ qla24xx_bsg_request(struct bsg_job *bsg_job)
case FC_BSG_RPT_CT:
default:
ql_log(ql_log_warn, vha, 0x705a, "Unsupported BSG request.\n");
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = ret;
#else
bsg_reply->result = ret;
@@ -2159,13 +2159,13 @@ qla24xx_bsg_request(struct bsg_job *bsg_job)
}
int
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
qla24xx_bsg_timeout(struct fc_bsg_job *bsg_job)
#else
qla24xx_bsg_timeout(struct bsg_job *bsg_job)
#endif
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
scsi_qla_host_t *vha = shost_priv(bsg_job->shost);
#else
struct fc_bsg_request *bsg_request = bsg_job->request;
@@ -2197,7 +2197,7 @@ qla24xx_bsg_timeout(struct bsg_job *bsg_job)
"mbx abort_command "
"failed.\n");
bsg_job->req->errors =
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = -EIO;
#else
bsg_reply->result = -EIO;
@@ -2207,7 +2207,7 @@ qla24xx_bsg_timeout(struct bsg_job *bsg_job)
"mbx abort_command "
"success.\n");
bsg_job->req->errors =
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->result = 0;
#else
bsg_reply->result = 0;
@@ -2221,7 +2221,7 @@ qla24xx_bsg_timeout(struct bsg_job *bsg_job)
}
spin_unlock_irqrestore(&ha->hardware_lock, flags);
ql_log(ql_log_info, vha, 0x708b, "SRB not found to abort.\n");
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->req->errors = bsg_job->reply->result = -ENXIO;
#else
bsg_job->req->errors = bsg_reply->result = -ENXIO;
@@ -2230,7 +2230,7 @@ qla24xx_bsg_timeout(struct bsg_job *bsg_job)
done:
spin_unlock_irqrestore(&ha->hardware_lock, flags);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
if (bsg_job->request->msgcode == FC_BSG_HST_CT)
#else
if (bsg_request->msgcode == FC_BSG_HST_CT)
+8 -2
View File
@@ -27,7 +27,13 @@
#include <linux/aer.h>
#include <linux/mutex.h>
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#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
#ifdef NEW_LIBFC_API
#include <linux/bsg-lib.h>
#endif
@@ -293,7 +299,7 @@ typedef struct srb {
int iocbs;
union {
struct srb_iocb iocb_cmd;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct fc_bsg_job *bsg_job;
#else
struct bsg_job *bsg_job;
+1 -1
View File
@@ -604,7 +604,7 @@ extern int qla82xx_mbx_beacon_ctl(scsi_qla_host_t *, int);
extern void qla82xx_clear_pending_mbx(scsi_qla_host_t *);
/* BSG related functions */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
extern int qla24xx_bsg_request(struct bsg_job *);
extern int qla24xx_bsg_timeout(struct bsg_job *);
#else
+4 -4
View File
@@ -2105,7 +2105,7 @@ qla24xx_tm_iocb(srb_t *sp, struct tsk_mgmt_entry *tsk)
static void
qla24xx_els_iocb(srb_t *sp, struct els_entry_24xx *els_iocb)
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct fc_bsg_job *bsg_job = sp->u.bsg_job;
#else
struct bsg_job *bsg_job = sp->u.bsg_job;
@@ -2125,7 +2125,7 @@ qla24xx_els_iocb(srb_t *sp, struct els_entry_24xx *els_iocb)
els_iocb->opcode =
sp->type == SRB_ELS_CMD_RPT ?
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->request->rqst_data.r_els.els_code :
bsg_job->request->rqst_data.h_els.command_code;
#else
@@ -2166,7 +2166,7 @@ qla2x00_ct_iocb(srb_t *sp, ms_iocb_entry_t *ct_iocb)
uint16_t tot_dsds;
scsi_qla_host_t *vha = sp->fcport->vha;
struct qla_hw_data *ha = vha->hw;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct fc_bsg_job *bsg_job = sp->u.bsg_job;
#else
struct bsg_job *bsg_job = sp->u.bsg_job;
@@ -2247,7 +2247,7 @@ qla24xx_ct_iocb(srb_t *sp, struct ct_entry_24xx *ct_iocb)
uint16_t tot_dsds;
scsi_qla_host_t *vha = sp->fcport->vha;
struct qla_hw_data *ha = vha->hw;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct fc_bsg_job *bsg_job = sp->u.bsg_job;
#else
struct bsg_job *bsg_job = sp->u.bsg_job;
+13 -13
View File
@@ -1080,7 +1080,7 @@ qla2x00_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
const char func[] = "CT_IOCB";
const char *type;
srb_t *sp;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct fc_bsg_job *bsg_job;
#else
struct bsg_job *bsg_job;
@@ -1094,7 +1094,7 @@ qla2x00_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
return;
bsg_job = sp->u.bsg_job;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
bsg_reply = bsg_job->reply;
#endif
@@ -1105,7 +1105,7 @@ qla2x00_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
/* return FC_CTELS_STATUS_OK and leave the decoding of the ELS/CT
* fc payload to the caller
*/
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_data.ctels_reply.status = FC_CTELS_STATUS_OK;
#else
bsg_reply->reply_data.ctels_reply.status = FC_CTELS_STATUS_OK;
@@ -1115,7 +1115,7 @@ qla2x00_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
if (comp_status != CS_COMPLETE) {
if (comp_status == CS_DATA_UNDERRUN) {
res = DID_OK << 16;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_payload_rcv_len =
#else
bsg_reply->reply_payload_rcv_len =
@@ -1126,7 +1126,7 @@ qla2x00_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
"CT pass-through-%s error "
"comp_status-status=0x%x total_byte = 0x%x.\n",
type, comp_status,
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_payload_rcv_len);
#else
bsg_reply->reply_payload_rcv_len);
@@ -1136,7 +1136,7 @@ qla2x00_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
"CT pass-through-%s error "
"comp_status-status=0x%x.\n", type, comp_status);
res = DID_ERROR << 16;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_payload_rcv_len = 0;
#else
bsg_reply->reply_payload_rcv_len = 0;
@@ -1146,7 +1146,7 @@ qla2x00_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
(uint8_t *)pkt, sizeof(*pkt));
} else {
res = DID_OK << 16;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_payload_rcv_len =
#else
bsg_reply->reply_payload_rcv_len =
@@ -1164,7 +1164,7 @@ qla24xx_els_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
const char func[] = "ELS_CT_IOCB";
const char *type;
srb_t *sp;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
struct fc_bsg_job *bsg_job;
#else
struct bsg_job *bsg_job;
@@ -1179,7 +1179,7 @@ qla24xx_els_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
if (!sp)
return;
bsg_job = sp->u.bsg_job;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
#ifdef NEW_LIBFC_API
bsg_reply = bsg_job->reply;
#endif
@@ -1205,7 +1205,7 @@ qla24xx_els_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
/* return FC_CTELS_STATUS_OK and leave the decoding of the ELS/CT
* fc payload to the caller
*/
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_data.ctels_reply.status = FC_CTELS_STATUS_OK;
#else
bsg_reply->reply_data.ctels_reply.status = FC_CTELS_STATUS_OK;
@@ -1215,7 +1215,7 @@ qla24xx_els_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
if (comp_status != CS_COMPLETE) {
if (comp_status == CS_DATA_UNDERRUN) {
res = DID_OK << 16;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_payload_rcv_len =
#else
bsg_reply->reply_payload_rcv_len =
@@ -1246,7 +1246,7 @@ qla24xx_els_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
le16_to_cpu(((struct els_sts_entry_24xx *)
pkt)->error_subcode_2));
res = DID_ERROR << 16;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_payload_rcv_len = 0;
#else
bsg_reply->reply_payload_rcv_len = 0;
@@ -1264,7 +1264,7 @@ qla24xx_els_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
}
else {
res = DID_OK << 16;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#ifndef NEW_LIBFC_API
bsg_job->reply->reply_payload_rcv_len = bsg_job->reply_payload.payload_len;
#else
bsg_reply->reply_payload_rcv_len = bsg_job->reply_payload.payload_len;
+3
View File
@@ -272,6 +272,9 @@ done
# General kernel patches.
scsi_exec_req_fifo_defined=0
scst_io_context=0
scst_03_public_headers="scst/include/scst.h scst/include/scst_const.h \
scst/include/scst_event.h scst/include/backport.h"
scst_04_main="scst/src/scst_main.c scst/src/scst_module.c scst/src/scst_priv.h \
+9
View File
@@ -108,6 +108,10 @@ function evaluate(stmnt, pattern, arg, op, result) {
gsub("defined\\(HAVE_IB_DMA_MAP_OPS\\)",
"(LINUX_VERSION_CODE >= KERNEL_VERSION(0, 0, 0))", stmnt)
gsub("defined(ENABLE_NPIV)", 0, stmnt)
gsub("defined(FC_VPORT_CREATE_DEFINED)", 0, stmnt)
gsub("LINUX_VERSION_CODE", LINUX_VERSION_CODE, stmnt)
pattern="KERNEL_VERSION\\([[:blank:]]*([0-9]+)[[:blank:]]*,[[:blank:]]*([0-9]+)[[:blank:]]*,[[:blank:]]*([0-9]+)[[:blank:]]*\\)"
@@ -122,6 +126,8 @@ function evaluate(stmnt, pattern, arg, op, result) {
gsub("defined\\(CONFIG_SUSE_KERNEL\\)", "0", stmnt)
gsub("defined\\(CONFIG_SCST_STRICT_SERIALIZING\\)", "0", stmnt)
if (RHEL_MAJOR == "")
{
gsub("defined\\(RHEL_MAJOR\\)", "0", stmnt)
@@ -337,6 +343,8 @@ function handle_if(evaluated)
if ($0 ~ "LINUX_VERSION_CODE" \
|| $0 ~ "CONFIG_SCST_PROC" \
|| $0 ~ "CREATE_SEND_MAD_HAS_BASE_ARG" \
|| $0 ~ "ENABLE_NPIV" \
|| $0 ~ "FC_VPORT_CREATE_DEFINED" \
|| $0 ~ "HAVE_IB_DMA_MAP_OPS" \
|| $0 ~ "HAVE_IB_QUERY_DEVICE" \
|| $0 ~ "HAVE_IB_SET_CPI_RESP_TIME" \
@@ -349,6 +357,7 @@ function handle_if(evaluated)
|| $0 ~ "IB_QUERY_GID_HAS_ATTR_ARG" \
|| $0 ~ "INSIDE_KERNEL_TREE" \
|| $0 ~ "MAD_HANDLER_TAKES_SEND_BUF" \
|| $0 ~ "CONFIG_SCST_STRICT_SERIALIZING" \
|| $0 ~ "MOFED_MAJOR" \
|| $0 ~ "RDMA_CREATE_ID_TAKES_NET_ARG" \
|| $0 ~ "REGISTER_MAD_AGENT_HAS_FLAGS_ARG" \
+20 -2
View File
@@ -20,6 +20,7 @@
* GNU General Public License for more details.
*/
#include <linux/bio.h>
#include <linux/blkdev.h> /* struct request_queue */
#include <linux/scatterlist.h> /* struct scatterlist */
#include <linux/slab.h> /* kmalloc() */
@@ -45,6 +46,19 @@
#endif
#endif
/* <linux/bio.h> */
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0)
static inline struct bio_set *bioset_create_backport(unsigned int pool_size,
unsigned int front_pad,
int flags)
{
WARN_ON_ONCE(flags != 0);
return bioset_create(pool_size, front_pad);
}
#define bioset_create bioset_create_backport
#endif
/* <linux/blkdev.h> */
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31)
@@ -224,7 +238,9 @@ static inline struct inode *file_inode(const struct file *f)
}
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
#if (!defined(CONFIG_SUSE_KERNEL) && \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)) || \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
static inline ssize_t vfs_readv_backport(struct file *file,
const struct iovec __user *vec,
unsigned long vlen, loff_t *pos,
@@ -416,7 +432,9 @@ static inline bool list_entry_in_list(const struct list_head *entry)
/* <linux/kernel.h> */
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
#if (!defined(CONFIG_SUSE_KERNEL) && \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)) || \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
static inline long get_user_pages_backport(unsigned long start,
unsigned long nr_pages,
int write, int force,
+15
View File
@@ -5499,6 +5499,7 @@ void scst_dev_inquiry_data_changed(struct scst_device *dev);
* allows exclusive wake ups of threads in LIFO order. We need it to let (yet)
* unneeded threads sleep and not pollute CPU cache by their stacks.
*/
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0)
static inline void prepare_to_wait_exclusive_head(wait_queue_head_t *q,
wait_queue_t *wait, int state)
{
@@ -5511,6 +5512,20 @@ static inline void prepare_to_wait_exclusive_head(wait_queue_head_t *q,
set_current_state(state);
spin_unlock_irqrestore(&q->lock, flags);
}
#else
static inline void prepare_to_wait_exclusive_head(struct wait_queue_head *wq_head,
struct wait_queue_entry *wq_entry, int state)
{
unsigned long flags;
wq_entry->flags |= WQ_FLAG_EXCLUSIVE;
spin_lock_irqsave(&wq_head->lock, flags);
if (list_empty(&wq_entry->entry))
__add_wait_queue(wq_head, wq_entry);
set_current_state(state);
spin_unlock_irqrestore(&wq_head->lock, flags);
}
#endif
/**
* wait_event_locked() - Wait until a condition becomes true.
+3 -1
View File
@@ -1272,7 +1272,9 @@ static int dev_user_map_buf(struct scst_user_cmd *ucmd, unsigned long ubuff,
(ucmd->cmd != NULL) ? ucmd->cmd->bufflen : -1);
down_read(&tsk->mm->mmap_sem);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0)
#if (!defined(CONFIG_SUSE_KERNEL) && \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0)) || \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
rc = get_user_pages(ubuff, ucmd->num_data_pages, 1/*writable*/,
0/*don't force*/, ucmd->data_pages, NULL);
#else
+41 -11
View File
@@ -6563,7 +6563,11 @@ static void blockio_endio(struct bio *bio, int error)
#else
static void blockio_endio(struct bio *bio)
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0)
int error = bio->bi_error;
#else
int error = blk_status_to_errno(bio->bi_status);
#endif
#endif
struct scst_blockio_work *blockio_work = bio->bi_private;
@@ -6597,7 +6601,9 @@ static void blockio_endio(struct bio *bio)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 36)
if (bio->bi_rw & (1 << BIO_RW)) {
#elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)
#elif (!defined(CONFIG_SUSE_KERNEL) && \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)) || \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
if (bio->bi_rw & REQ_WRITE) {
#else
if (op_is_write(bio_op(bio))) {
@@ -6637,7 +6643,9 @@ static void vdisk_bio_set_failfast(struct bio *bio)
bio->bi_rw |= (1 << BIO_RW_FAILFAST_DEV) |
(1 << BIO_RW_FAILFAST_TRANSPORT) |
(1 << BIO_RW_FAILFAST_DRIVER);
#elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)
#elif (!defined(CONFIG_SUSE_KERNEL) && \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)) || \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
bio->bi_rw |= REQ_FAILFAST_DEV |
REQ_FAILFAST_TRANSPORT |
REQ_FAILFAST_DRIVER;
@@ -6650,7 +6658,8 @@ static void vdisk_bio_set_failfast(struct bio *bio)
static void vdisk_bio_set_hoq(struct bio *bio)
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) || \
defined(CONFIG_SUSE_KERNEL) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0)
bio->bi_opf |= REQ_SYNC;
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36) || \
(defined(RHEL_MAJOR) && \
@@ -6661,7 +6670,8 @@ static void vdisk_bio_set_hoq(struct bio *bio)
#else
bio->bi_rw |= 1 << BIO_RW_SYNC;
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) || \
defined(CONFIG_SUSE_KERNEL) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0)
bio->bi_opf |= REQ_META;
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36) || \
(defined(RHEL_MAJOR) && \
@@ -6917,7 +6927,9 @@ static void blockio_exec_rw(struct vdisk_cmd_params *p, bool write, bool fua)
if (write)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 36)
bio->bi_rw |= (1 << BIO_RW);
#elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)
#elif (!defined(CONFIG_SUSE_KERNEL) && \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)) || \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
bio->bi_rw |= REQ_WRITE;
#else
bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
@@ -6932,7 +6944,9 @@ static void blockio_exec_rw(struct vdisk_cmd_params *p, bool write, bool fua)
bio->bi_rw |= REQ_SYNC;
#endif
if (fua)
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)
#if (!defined(CONFIG_SUSE_KERNEL) && \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)) || \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
bio->bi_rw |= REQ_FUA;
#else
bio->bi_opf |= REQ_FUA;
@@ -6989,7 +7003,9 @@ static void blockio_exec_rw(struct vdisk_cmd_params *p, bool write, bool fua)
hbio = hbio->bi_next;
bio->bi_next = NULL;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)
#if (!defined(CONFIG_SUSE_KERNEL) && \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)) || \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
submit_bio(bio->bi_rw, bio);
#else
submit_bio(bio);
@@ -7039,7 +7055,11 @@ static void vdev_flush_end_io(struct bio *bio, int error)
#else
static void vdev_flush_end_io(struct bio *bio)
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0)
int error = bio->bi_error;
#else
int error = blk_status_to_errno(bio->bi_status);
#endif
#endif
struct scst_cmd *cmd = bio->bi_private;
@@ -7084,7 +7104,9 @@ static int vdisk_blockio_flush(struct block_device *bdev, gfp_t gfp_mask,
bio->bi_end_io = vdev_flush_end_io;
bio->bi_private = cmd;
bio->bi_bdev = bdev;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)
#if (!defined(CONFIG_SUSE_KERNEL) && \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)) || \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
submit_bio(WRITE_FLUSH, bio);
#else
bio_set_op_attrs(bio, REQ_OP_FLUSH, 0);
@@ -7155,7 +7177,11 @@ static void blockio_end_sync_io(struct bio *bio, int error)
#else
static void blockio_end_sync_io(struct bio *bio)
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0)
int error = bio->bi_error;
#else
int error = blk_status_to_errno(bio->bi_status);
#endif
#endif
struct bio_priv_sync *s = bio->bi_private;
@@ -7229,7 +7255,9 @@ static ssize_t blockio_read_sync(struct scst_vdisk_dev *virt_dev, void *buf,
if (!bio)
goto out;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)
#if (!defined(CONFIG_SUSE_KERNEL) && \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)) || \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
bio->bi_rw = READ_SYNC;
#else
bio_set_op_attrs(bio, REQ_OP_READ, REQ_SYNC);
@@ -7260,7 +7288,9 @@ static ssize_t blockio_read_sync(struct scst_vdisk_dev *virt_dev, void *buf,
}
}
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)
#if (!defined(CONFIG_SUSE_KERNEL) && \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)) || \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
submit_bio(bio->bi_rw, bio);
#else
submit_bio(bio);
@@ -7788,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);
virt_dev->vdisk_bioset = bioset_create(2, 0, 0);
if (virt_dev->vdisk_bioset == NULL) {
PRINT_ERROR("Failed to create bioset (dev %s)", virt_dev->name);
res = -ENOMEM;
+36 -6
View File
@@ -7705,7 +7705,11 @@ static void blk_bio_map_kern_endio(struct bio *bio, int err)
#else
static void blk_bio_map_kern_endio(struct bio *bio)
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0)
int err = bio->bi_error;
#else
int err = blk_status_to_errno(bio->bi_status);
#endif
#endif
struct blk_kern_sg_work *bw = bio->bi_private;
@@ -7847,7 +7851,8 @@ static void bio_kmalloc_destructor(struct bio *bio)
}
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) || \
(defined(CONFIG_SUSE_KERNEL) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0))
static struct request *blk_make_request(struct request_queue *q,
struct bio *bio,
gfp_t gfp_mask)
@@ -7857,22 +7862,33 @@ static struct request *blk_make_request(struct request_queue *q,
if (IS_ERR(rq))
return rq;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
scsi_req_init(scsi_req(rq));
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
scsi_req_init(rq);
#else
blk_rq_set_block_pc(rq);
#endif
for_each_bio(bio) {
struct bio *bounce_bio = bio;
int ret;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0)
struct bio *bounce_bio = bio;
blk_queue_bounce(q, &bounce_bio);
ret = blk_rq_append_bio(rq, bounce_bio);
if (unlikely(ret)) {
blk_put_request(rq);
return ERR_PTR(ret);
}
#else
ret = blk_rq_append_bio(rq, bio);
if (unlikely(ret)) {
blk_put_request(rq);
return ERR_PTR(ret);
}
#endif
}
return rq;
@@ -7961,7 +7977,9 @@ static struct request *__blk_map_kern_sg(struct request_queue *q,
if (!reading)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 36)
bio->bi_rw |= 1 << BIO_RW;
#elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)
#elif (!defined(CONFIG_SUSE_KERNEL) && \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)) || \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
bio->bi_rw |= REQ_WRITE;
#else
bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
@@ -8027,7 +8045,9 @@ static struct request *__blk_map_kern_sg(struct request_queue *q,
if (bw != NULL) {
atomic_set(&bw->bios_inflight, bios);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
#if (!defined(CONFIG_SUSE_KERNEL) && \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)) || \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)
/*
* See also patch "block: split out request-only flags into a
* new namespace" (commit e806402130c9).
@@ -8071,7 +8091,9 @@ static struct request *blk_map_kern_sg(struct request_queue *q,
if (unlikely(!rq))
return ERR_PTR(-ENOMEM);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
scsi_req_init(scsi_req(rq));
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
scsi_req_init(rq);
#else
rq->cmd_type = REQ_TYPE_BLOCK_PC;
@@ -8257,7 +8279,11 @@ out:
#endif /* !defined(SCSI_EXEC_REQ_FIFO_DEFINED) */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0)
static void scsi_end_async(struct request *req, int error)
#else
static void scsi_end_async(struct request *req, blk_status_t error)
#endif
{
struct scsi_io_context *sioc = req->end_io_data;
@@ -8406,7 +8432,11 @@ out_free_unmap:
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 3, 0)
b->bi_end_io(b, res);
#else
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0)
b->bi_error = res;
#else
b->bi_status = errno_to_blk_status(res);
#endif
b->bi_end_io(b);
#endif
}
+2 -2
View File
@@ -2498,9 +2498,9 @@ static bool srpt_is_target_enabled(struct scst_tgt *scst_tgt)
/*
* srpt_next_comp_vector() - Next completion vector >= sport->comp_vector
*/
static u8 srpt_next_comp_vector(struct srpt_port *sport)
static u16 srpt_next_comp_vector(struct srpt_port *sport)
{
u8 comp_vector;
u16 comp_vector;
mutex_lock(&sport->mutex);
comp_vector = cpumask_next(sport->comp_vector, &sport->comp_v_mask);
+2 -2
View File
@@ -379,7 +379,7 @@ struct srpt_rdma_ch {
struct list_head cmd_wait_list;
uint16_t pkey;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20) || defined(RHEL_RELEASE_CODE)
u8 comp_vector;
u16 comp_vector;
#endif
bool using_rdma_cm;
bool processing_wait_list;
@@ -433,7 +433,7 @@ struct srpt_port {
struct list_head nexus_list;
struct scst_tgt *scst_tgt;
cpumask_t comp_v_mask;
u8 comp_vector;
u16 comp_vector;
bool enabled;
u8 port_id[64];
};