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:
Bart Van Assche
2010-09-18 12:58:45 +00:00
parent c55e7712ef
commit a43faee6a0
3 changed files with 25 additions and 27 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -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,