mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-21 20:51:27 +00:00
Diff minimizing.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@2144 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; -*- */
|
||||
/*
|
||||
* IBM eServer i/pSeries Virtual SCSI Target Driver
|
||||
* Copyright (C) 2003-2005 Dave Boutcher (boutcher@us.ibm.com) IBM Corp.
|
||||
@@ -169,7 +168,7 @@ static int send_rsp(struct iu_entry *iue, struct scst_cmd *sc,
|
||||
|
||||
memset(iu, 0, sizeof(struct srp_rsp));
|
||||
iu->srp.rsp.opcode = SRP_RSP;
|
||||
iu->srp.rsp.req_lim_delta = __constant_cpu_to_be32(1);
|
||||
iu->srp.rsp.req_lim_delta = 1;
|
||||
iu->srp.rsp.tag = tag;
|
||||
|
||||
if (test_bit(V_DIOVER, &iue->flags))
|
||||
@@ -193,14 +192,12 @@ static int send_rsp(struct iu_entry *iue, struct scst_cmd *sc,
|
||||
sense_data_len = min(scst_cmd_get_sense_buffer_len(sc),
|
||||
SRP_RSP_SENSE_DATA_LEN);
|
||||
iu->srp.rsp.flags |= SRP_RSP_FLAG_SNSVALID;
|
||||
iu->srp.rsp.sense_data_len
|
||||
= cpu_to_be32(sense_data_len);
|
||||
iu->srp.rsp.sense_data_len = sense_data_len;
|
||||
memcpy(sense, sc_sense, sense_data_len);
|
||||
} else {
|
||||
iu->srp.rsp.status = SAM_STAT_CHECK_CONDITION;
|
||||
iu->srp.rsp.flags |= SRP_RSP_FLAG_SNSVALID;
|
||||
iu->srp.rsp.sense_data_len
|
||||
= __constant_cpu_to_be32(SRP_RSP_SENSE_DATA_LEN);
|
||||
iu->srp.rsp.sense_data_len = SRP_RSP_SENSE_DATA_LEN;
|
||||
|
||||
/* Valid bit and 'current errors' */
|
||||
sense[0] = (0x1 << 7 | 0x70);
|
||||
@@ -266,7 +263,7 @@ static int ibmvstgt_rdma(struct scst_cmd *sc, struct scatterlist *sg, int nsg,
|
||||
for (i = 0; i < nmd && rest; i++) {
|
||||
unsigned int mdone, mlen;
|
||||
|
||||
mlen = min(rest, be32_to_cpu(md[i].len));
|
||||
mlen = min(rest, md[i].len);
|
||||
for (mdone = 0; mlen;) {
|
||||
int slen = min(sg_dma_len(sg + sidx) - soff, mlen);
|
||||
|
||||
@@ -542,8 +539,7 @@ static void process_login(struct iu_entry *iue)
|
||||
BUG_ON(!target);
|
||||
sess = scst_register_session(target->tgt, 0, name, target, NULL, NULL);
|
||||
if (!sess) {
|
||||
rej->reason
|
||||
= __constant_cpu_to_be32(SRP_LOGIN_REJ_INSUFFICIENT_RESOURCES);
|
||||
rej->reason = SRP_LOGIN_REJ_INSUFFICIENT_RESOURCES;
|
||||
TRACE_DBG("%s", "Failed to create SCST session");
|
||||
goto reject;
|
||||
}
|
||||
@@ -554,10 +550,10 @@ static void process_login(struct iu_entry *iue)
|
||||
* buffer format is wrong
|
||||
*/
|
||||
rsp->opcode = SRP_LOGIN_RSP;
|
||||
rsp->req_lim_delta = __constant_cpu_to_be32(INITIAL_SRP_LIMIT);
|
||||
rsp->req_lim_delta = INITIAL_SRP_LIMIT;
|
||||
rsp->tag = tag;
|
||||
rsp->max_it_iu_len = __constant_cpu_to_be32(sizeof(union srp_iu));
|
||||
rsp->max_ti_iu_len = __constant_cpu_to_be32(sizeof(union srp_iu));
|
||||
rsp->max_it_iu_len = sizeof(union srp_iu);
|
||||
rsp->max_ti_iu_len = sizeof(union srp_iu);
|
||||
/* direct and indirect */
|
||||
rsp->buf_fmt
|
||||
= cpu_to_be16(SRP_BUF_FORMAT_DIRECT | SRP_BUF_FORMAT_INDIRECT);
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; -*- */
|
||||
/*
|
||||
* SCSI RDMA Protocol lib functions
|
||||
*
|
||||
@@ -26,7 +25,11 @@
|
||||
#include <linux/scatterlist.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <scsi/srp.h>
|
||||
#ifdef INSIDE_KERNEL_TREE
|
||||
#include <scsi/libsrp.h>
|
||||
#else
|
||||
#include "libsrpnew.h"
|
||||
#endif
|
||||
|
||||
enum srp_task_attributes {
|
||||
SRP_SIMPLE_TASK = 0,
|
||||
@@ -206,9 +209,9 @@ static int srp_direct_data(struct scst_cmd *sc, struct srp_direct_buf *md,
|
||||
return 0;
|
||||
}
|
||||
len = min_t(unsigned, scst_cmd_get_expected_transfer_len(sc),
|
||||
be32_to_cpu(md->len));
|
||||
md->len);
|
||||
} else
|
||||
len = be32_to_cpu(md->len);
|
||||
len = md->len;
|
||||
|
||||
err = rdma_io(sc, sg, nsg, md, 1, dir, len);
|
||||
|
||||
@@ -239,7 +242,7 @@ static int srp_indirect_data(struct scst_cmd *sc, struct srp_cmd *cmd,
|
||||
cmd->data_in_desc_cnt, cmd->data_out_desc_cnt);
|
||||
}
|
||||
|
||||
nmd = be32_to_cpu(id->table_desc.len) / sizeof(struct srp_direct_buf);
|
||||
nmd = id->table_desc.len / sizeof(struct srp_direct_buf);
|
||||
|
||||
if ((dir == DMA_FROM_DEVICE && nmd == cmd->data_in_desc_cnt) ||
|
||||
(dir == DMA_TO_DEVICE && nmd == cmd->data_out_desc_cnt)) {
|
||||
@@ -249,18 +252,18 @@ static int srp_indirect_data(struct scst_cmd *sc, struct srp_cmd *cmd,
|
||||
|
||||
if (ext_desc && dma_map) {
|
||||
md = dma_alloc_coherent(iue->target->dev,
|
||||
be32_to_cpu(id->table_desc.len),
|
||||
id->table_desc.len,
|
||||
&token, GFP_KERNEL);
|
||||
if (!md) {
|
||||
eprintk("Can't get dma memory %u\n", id->table_desc.len);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
sg_init_one(&dummy, md, be32_to_cpu(id->table_desc.len));
|
||||
sg_init_one(&dummy, md, id->table_desc.len);
|
||||
sg_dma_address(&dummy) = token;
|
||||
sg_dma_len(&dummy) = be32_to_cpu(id->table_desc.len);
|
||||
sg_dma_len(&dummy) = id->table_desc.len;
|
||||
err = rdma_io(sc, &dummy, 1, &id->table_desc, 1, DMA_TO_DEVICE,
|
||||
be32_to_cpu(id->table_desc.len));
|
||||
id->table_desc.len);
|
||||
if (err) {
|
||||
eprintk("Error copying indirect table %d\n", err);
|
||||
goto free_mem;
|
||||
@@ -281,9 +284,9 @@ rdma:
|
||||
goto free_mem;
|
||||
}
|
||||
len = min_t(unsigned, scst_cmd_get_expected_transfer_len(sc),
|
||||
be32_to_cpu(id->len));
|
||||
id->len);
|
||||
} else
|
||||
len = be32_to_cpu(id->len);
|
||||
len = id->len;
|
||||
|
||||
err = rdma_io(sc, sg, nsg, md, nmd, dir, len);
|
||||
|
||||
@@ -293,7 +296,7 @@ rdma:
|
||||
free_mem:
|
||||
if (token && dma_map)
|
||||
dma_free_coherent(iue->target->dev,
|
||||
be32_to_cpu(id->table_desc.len), md, token);
|
||||
id->table_desc.len, md, token);
|
||||
|
||||
return err;
|
||||
}
|
||||
@@ -386,11 +389,11 @@ static int vscsis_data_length(struct srp_cmd *cmd, enum dma_data_direction dir)
|
||||
break;
|
||||
case SRP_DATA_DESC_DIRECT:
|
||||
md = (struct srp_direct_buf *) (cmd->add_data + offset);
|
||||
len = be32_to_cpu(md->len);
|
||||
len = md->len;
|
||||
break;
|
||||
case SRP_DATA_DESC_INDIRECT:
|
||||
id = (struct srp_indirect_buf *) (cmd->add_data + offset);
|
||||
len = be32_to_cpu(id->len);
|
||||
len = id->len;
|
||||
break;
|
||||
default:
|
||||
eprintk("invalid data format %x\n", fmt);
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; -*- */
|
||||
#ifndef __LIBSRP_H__
|
||||
#define __LIBSRP_H__
|
||||
|
||||
#include <linux/list.h>
|
||||
#include <linux/kfifo.h>
|
||||
#include <scsi/srp.h>
|
||||
#ifdef INSIDE_KERNEL_TREE
|
||||
#include <scst/scst.h>
|
||||
#else
|
||||
#include "scst.h"
|
||||
#endif
|
||||
#include <scsi/srp.h>
|
||||
|
||||
enum iue_flags {
|
||||
V_DIOVER,
|
||||
|
||||
Reference in New Issue
Block a user