[PATCH] [Target_Core_Mod]: Convert to se_task_t->task_sg usage incore and subsystem plugins

From: Nicholas A. Bellinger
Date: Tue Dec 02 2008 - 21:14:29 EST


>From 41e98940da5ffaf7e31fce8d1f706e3e0a679654 Mon Sep 17 00:00:00 2001
From: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx>
Date: Tue, 2 Dec 2008 18:06:54 -0800
Subject: [PATCH] [Target_Core_Mod]: Convert to se_task_t->task_sg usage in core and subsystem plugins

This patch adds makes the existing se_task_t->task_buf become se_task_t->task_sg of
type struct scatterlist. Changes to target_core_transport.c in transport_calc_sg_num()
and transport_free_dev_tasks() are simple, along with a one-liner change in
target_core_seobj.c:dev_obj_do_se_mem_map().

Signed-off-by: Nicholas A. Bellinger <nab@xxxxxxxxxxxxxxx>
---
drivers/lio-core/target_core_base.h | 2 +-
drivers/lio-core/target_core_seobj.c | 11 ++++++-----
drivers/lio-core/target_core_transport.c | 9 ++++-----
3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/lio-core/target_core_base.h b/drivers/lio-core/target_core_base.h
index 5ee04d3..b866613 100644
--- a/drivers/lio-core/target_core_base.h
+++ b/drivers/lio-core/target_core_base.h
@@ -249,7 +249,7 @@ typedef struct se_transport_task_s {

typedef struct se_task_s {
unsigned char task_sense;
- unsigned char *task_buf;
+ struct scatterlist *task_sg;
void *transport_req;
u8 task_scsi_status;
u8 task_flags;
diff --git a/drivers/lio-core/target_core_seobj.c b/drivers/lio-core/target_core_seobj.c
index 8e8c951..d013f2c 100644
--- a/drivers/lio-core/target_core_seobj.c
+++ b/drivers/lio-core/target_core_seobj.c
@@ -348,8 +348,9 @@ extern int dev_obj_do_se_mem_map (
* been done by the transport plugin.
*/
if (TRANSPORT(dev)->do_se_mem_map) {
- if ((ret = TRANSPORT(dev)->do_se_mem_map(task, se_mem_list, in_mem, in_se_mem,
- out_se_mem, se_mem_cnt, task_offset)) == 0)
+ if ((ret = TRANSPORT(dev)->do_se_mem_map(task, se_mem_list,
+ in_mem, in_se_mem, out_se_mem, se_mem_cnt,
+ task_offset)) == 0)
T_TASK(task->iscsi_cmd)->t_task_se_num += *se_mem_cnt;

return(ret);
@@ -362,10 +363,10 @@ extern int dev_obj_do_se_mem_map (
return(-1);

/*
- * se_task_t->task_buf now contains the struct scatterlist array.
+ * se_task_t->task_sg now contains the struct scatterlist array.
*/
- return(transport_map_mem_to_sg(task, se_mem_list, task->task_buf, in_se_mem, out_se_mem,
- se_mem_cnt, task_offset));
+ return(transport_map_mem_to_sg(task, se_mem_list, task->task_sg,
+ in_se_mem, out_se_mem, se_mem_cnt, task_offset));
}

extern int dev_obj_get_mem_buf (void *p, iscsi_cmd_t *cmd)
diff --git a/drivers/lio-core/target_core_transport.c b/drivers/lio-core/target_core_transport.c
index d92814c..b8e8294 100644
--- a/drivers/lio-core/target_core_transport.c
+++ b/drivers/lio-core/target_core_transport.c
@@ -4643,7 +4643,7 @@ extern void transport_free_dev_tasks (iscsi_cmd_t *cmd)
if (!task->transport_req)
continue;

- kfree(task->task_buf);
+ kfree(task->task_sg);

spin_unlock_irqrestore(&T_TASK(cmd)->t_state_lock, flags);
if (task->iscsi_dev)
@@ -5097,13 +5097,12 @@ extern u32 transport_calc_sg_num (
break;
}

- if (!(task->task_buf = kmalloc(task->task_sg_num * sizeof(struct scatterlist), GFP_KERNEL))) {
- TRACE_ERROR("Unable to allocate memory for task->task_buf\n");
+ if (!(task->task_sg = kzalloc(task->task_sg_num * sizeof(struct scatterlist), GFP_KERNEL))) {
+ TRACE_ERROR("Unable to allocate memory for task->task_sg\n");
return(0);
}
- memset(task->task_buf, 0, task->task_sg_num * sizeof(struct scatterlist));

- sg_init_table((struct scatterlist *)&task->task_buf[0], task->task_sg_num);
+ sg_init_table(&task->task_sg[0], task->task_sg_num);

DEBUG_SC("Successfully allocated task->task_sg_num: %u\n", task->task_sg_num);

--
1.5.4.1



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/