@@ -139,9 +139,16 @@ static int submit_rtpg(struct scsi_device *sdev, unsigned char *buff,
cdb[1] = MI_REPORT_TARGET_PGS;
put_unaligned_be32(bufflen, &cdb[6]);
- return scsi_execute(sdev, cdb, DMA_FROM_DEVICE, buff, bufflen, NULL,
- sshdr, ALUA_FAILOVER_TIMEOUT * HZ,
- ALUA_FAILOVER_RETRIES, req_flags, 0, NULL);
+ return scsi_exec_req(((struct scsi_exec_args) {
+ .sdev = sdev,
+ .cmd = cdb,
+ .data_dir = DMA_FROM_DEVICE,
+ .buf = buff,
+ .buf_len = bufflen,
+ .sshdr = sshdr,
+ .timeout = ALUA_FAILOVER_TIMEOUT * HZ,
+ .retries = ALUA_FAILOVER_RETRIES,
+ .op_flags = req_flags }));
}
/*
@@ -171,9 +178,16 @@ static int submit_stpg(struct scsi_device *sdev, int group_id,
cdb[1] = MO_SET_TARGET_PGS;
put_unaligned_be32(stpg_len, &cdb[6]);
- return scsi_execute(sdev, cdb, DMA_TO_DEVICE, stpg_data, stpg_len, NULL,
- sshdr, ALUA_FAILOVER_TIMEOUT * HZ,
- ALUA_FAILOVER_RETRIES, req_flags, 0, NULL);
+ return scsi_exec_req(((struct scsi_exec_args) {
+ .sdev = sdev,
+ .cmd = cdb,
+ .data_dir = DMA_TO_DEVICE,
+ .buf = stpg_data,
+ .buf_len = stpg_len,
+ .sshdr = sshdr,
+ .timeout = ALUA_FAILOVER_TIMEOUT * HZ,
+ .retries = ALUA_FAILOVER_RETRIES,
+ .op_flags = req_flags }));
}
static struct alua_port_group *alua_find_get_pg(char *id_str, size_t id_size,
@@ -263,9 +263,16 @@ static int send_trespass_cmd(struct scsi_device *sdev,
BUG_ON((len > CLARIION_BUFFER_SIZE));
memcpy(csdev->buffer, page22, len);
- err = scsi_execute(sdev, cdb, DMA_TO_DEVICE, csdev->buffer, len, NULL,
- &sshdr, CLARIION_TIMEOUT * HZ, CLARIION_RETRIES,
- req_flags, 0, NULL);
+ err = scsi_exec_req(((struct scsi_exec_args) {
+ .sdev = sdev,
+ .cmd = cdb,
+ .data_dir = DMA_TO_DEVICE,
+ .buf = csdev->buffer,
+ .buf_len = len,
+ .sshdr = &sshdr,
+ .timeout = CLARIION_TIMEOUT * HZ,
+ .retries = CLARIION_RETRIES,
+ .op_flags = req_flags }));
if (err) {
if (scsi_sense_valid(&sshdr))
res = trespass_endio(sdev, &sshdr);
@@ -87,8 +87,14 @@ static int hp_sw_tur(struct scsi_device *sdev, struct hp_sw_dh_data *h)
REQ_FAILFAST_DRIVER;
retry:
- res = scsi_execute(sdev, cmd, DMA_NONE, NULL, 0, NULL, &sshdr,
- HP_SW_TIMEOUT, HP_SW_RETRIES, req_flags, 0, NULL);
+ res = scsi_exec_req(((struct scsi_exec_args) {
+ .sdev = sdev,
+ .cmd = cmd,
+ .data_dir = DMA_NONE,
+ .sshdr = &sshdr,
+ .timeout = HP_SW_TIMEOUT,
+ .retries = HP_SW_RETRIES,
+ .op_flags = req_flags }));
if (res) {
if (scsi_sense_valid(&sshdr))
ret = tur_done(sdev, h, &sshdr);
@@ -125,8 +131,14 @@ static int hp_sw_start_stop(struct hp_sw_dh_data *h)
REQ_FAILFAST_DRIVER;
retry:
- res = scsi_execute(sdev, cmd, DMA_NONE, NULL, 0, NULL, &sshdr,
- HP_SW_TIMEOUT, HP_SW_RETRIES, req_flags, 0, NULL);
+ res = scsi_exec_req(((struct scsi_exec_args) {
+ .sdev = sdev,
+ .cmd = cmd,
+ .data_dir = DMA_NONE,
+ .sshdr = &sshdr,
+ .timeout = HP_SW_TIMEOUT,
+ .retries = HP_SW_RETRIES,
+ .op_flags = req_flags }));
if (res) {
if (!scsi_sense_valid(&sshdr)) {
sdev_printk(KERN_WARNING, sdev,
@@ -538,6 +538,7 @@ static void send_mode_select(struct work_struct *work)
unsigned int data_size;
blk_opf_t req_flags = REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT |
REQ_FAILFAST_DRIVER;
+ int result;
spin_lock(&ctlr->ms_lock);
list_splice_init(&ctlr->ms_head, &list);
@@ -555,9 +556,17 @@ static void send_mode_select(struct work_struct *work)
(char *) h->ctlr->array_name, h->ctlr->index,
(retry_cnt == RDAC_RETRY_COUNT) ? "queueing" : "retrying");
- if (scsi_execute(sdev, cdb, DMA_TO_DEVICE, &h->ctlr->mode_select,
- data_size, NULL, &sshdr, RDAC_TIMEOUT * HZ,
- RDAC_RETRIES, req_flags, 0, NULL)) {
+ result = scsi_exec_req(((struct scsi_exec_args) {
+ .sdev = sdev,
+ .cmd = cdb,
+ .data_dir = DMA_TO_DEVICE,
+ .buf = &h->ctlr->mode_select,
+ .buf_len = data_size,
+ .sshdr = &sshdr,
+ .timeout = RDAC_TIMEOUT * HZ,
+ .retries = RDAC_RETRIES,
+ .op_flags = req_flags }));
+ if (result) {
err = mode_select_handle_sense(sdev, &sshdr);
if (err == SCSI_DH_RETRY && retry_cnt--)
goto retry;
scsi_execute* is going to be removed. Convert to scsi_exec_req so we pass all args in a scsi_exec_args struct. Signed-off-by: Mike Christie <michael.christie@oracle.com> --- drivers/scsi/device_handler/scsi_dh_alua.c | 26 ++++++++++++++++----- drivers/scsi/device_handler/scsi_dh_emc.c | 13 ++++++++--- drivers/scsi/device_handler/scsi_dh_hp_sw.c | 20 ++++++++++++---- drivers/scsi/device_handler/scsi_dh_rdac.c | 15 +++++++++--- 4 files changed, 58 insertions(+), 16 deletions(-)