[PATCH 4/6] target: remove the task_size field in struct se_task

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Now that we don't split commands the size field in the task is always
equivalent to the one in the CDB, even in cases where we have two tasks
due to a BIDI transfer.  Just refer the the size in the command instead
of duplicating it in the task.

Signed-off-by: Christoph Hellwig <hch@xxxxxx>

---
 drivers/target/target_core_file.c      |   11 ++++++-----
 drivers/target/target_core_iblock.c    |    3 ++-
 drivers/target/target_core_pscsi.c     |    6 +++---
 drivers/target/target_core_rd.c        |    2 +-
 drivers/target/target_core_stgt.c      |    2 +-
 drivers/target/target_core_transport.c |    2 --
 include/target/target_core_base.h      |    1 -
 7 files changed, 13 insertions(+), 14 deletions(-)

Index: lio-core/drivers/target/target_core_file.c
===================================================================
--- lio-core.orig/drivers/target/target_core_file.c	2012-04-21 14:05:26.639926872 +0200
+++ lio-core/drivers/target/target_core_file.c	2012-04-21 14:06:29.015924086 +0200
@@ -300,10 +300,10 @@ static int fd_do_readv(struct se_task *t
 	 * block_device.
 	 */
 	if (S_ISBLK(fd->f_dentry->d_inode->i_mode)) {
-		if (ret < 0 || ret != task->task_size) {
+		if (ret < 0 || ret != task->task_se_cmd->data_length) {
 			pr_err("vfs_readv() returned %d,"
 				" expecting %d for S_ISBLK\n", ret,
-				(int)task->task_size);
+				(int)task->task_se_cmd->data_length);
 			return (ret < 0 ? ret : -EINVAL);
 		}
 	} else {
@@ -348,7 +348,7 @@ static int fd_do_writev(struct se_task *
 
 	kfree(iov);
 
-	if (ret < 0 || ret != task->task_size) {
+	if (ret < 0 || ret != task->task_se_cmd->data_length) {
 		pr_err("vfs_writev() returned %d\n", ret);
 		return (ret < 0 ? ret : -EINVAL);
 	}
@@ -404,11 +404,12 @@ static void fd_emulate_write_fua(struct
 	struct fd_dev *fd_dev = dev->dev_ptr;
 	loff_t start = task->task_se_cmd->t_task_lba *
 		dev->se_sub_dev->se_dev_attrib.block_size;
-	loff_t end = start + task->task_size;
+	loff_t end = start + task->task_se_cmd->data_length;
 	int ret;
 
 	pr_debug("FILEIO: FUA WRITE LBA: %llu, bytes: %u\n",
-			task->task_se_cmd->t_task_lba, task->task_size);
+			task->task_se_cmd->t_task_lba,
+			task->task_se_cmd->data_length);
 
 	ret = vfs_fsync_range(fd_dev->fd_file, start, end, 1);
 	if (ret != 0)
Index: lio-core/drivers/target/target_core_iblock.c
===================================================================
--- lio-core.orig/drivers/target/target_core_iblock.c	2012-04-21 14:05:26.639926872 +0200
+++ lio-core/drivers/target/target_core_iblock.c	2012-04-21 15:09:16.215950884 +0200
@@ -478,7 +477,8 @@ iblock_get_bio(struct se_task *task, sec
 
 	pr_debug("Allocated bio: %p task_sg_nents: %u using ibd_bio_set:"
 		" %p\n", bio, task->task_sg_nents, ib_dev->ibd_bio_set);
-	pr_debug("Allocated bio: %p task_size: %u\n", bio, task->task_size);
+	pr_debug("Allocated bio: %p task_size: %u\n", bio,
+		task->task_se_cmd->data_length);
 
 	bio->bi_bdev = ib_dev->ibd_bd;
 	bio->bi_private = task;
Index: lio-core/drivers/target/target_core_pscsi.c
===================================================================
--- lio-core.orig/drivers/target/target_core_pscsi.c	2012-04-21 14:04:12.023930214 +0200
+++ lio-core/drivers/target/target_core_pscsi.c	2012-04-21 14:06:29.019924086 +0200
@@ -967,8 +967,8 @@ static int pscsi_map_sg(struct se_task *
 	struct bio *bio = NULL, *tbio = NULL;
 	struct page *page;
 	struct scatterlist *sg;
-	u32 data_len = task->task_size, i, len, bytes, off;
-	int nr_pages = (task->task_size + task_sg[0].offset +
+	u32 data_len = cmd->data_length, i, len, bytes, off;
+	int nr_pages = (cmd->data_length + task_sg[0].offset +
 			PAGE_SIZE - 1) >> PAGE_SHIFT;
 	int nr_vecs = 0, rc;
 	int rw = (task->task_data_direction == DMA_TO_DEVICE);
@@ -1085,7 +1085,7 @@ static int pscsi_do_task(struct se_task
 			return -ENODEV;
 		}
 	} else {
-		BUG_ON(!task->task_size);
+		BUG_ON(!cmd->data_length);
 
 		/*
 		 * Setup the main struct request for the task->task_sg[] payload
Index: lio-core/drivers/target/target_core_rd.c
===================================================================
--- lio-core.orig/drivers/target/target_core_rd.c	2012-04-21 14:05:26.639926872 +0200
+++ lio-core/drivers/target/target_core_rd.c	2012-04-21 14:06:29.000000000 +0200
@@ -307,7 +307,7 @@ static int rd_do_task(struct se_task *ta
 		se_dev->se_sub_dev->se_dev_attrib.block_size;
 	rd_offset = do_div(tmp, PAGE_SIZE);
 	rd_page = tmp;
-	rd_size = task->task_size;
+	rd_size = task->task_se_cmd->data_length;
 
 	table = rd_get_sg_table(dev, rd_page);
 	if (!table)
Index: lio-core/drivers/target/target_core_stgt.c
===================================================================
--- lio-core.orig/drivers/target/target_core_stgt.c	2012-04-21 14:04:29.987929238 +0200
+++ lio-core/drivers/target/target_core_stgt.c	2012-04-21 14:06:29.019924086 +0200
@@ -340,7 +340,7 @@ static int stgt_do_task(struct se_task *
 	memcpy(st->stgt_cdb, cmd->t_task_cdb,
 		scsi_command_size(cmd->t_task_cdb));
 	memcpy(sc->cmnd, st->stgt_cdb, MAX_COMMAND_SIZE);
-	sc->sdb.length = task->task_size;
+	sc->sdb.length = task->task_se_cmd->data_length;
 	sc->sdb.table.sgl = task->task_sg;
 	sc->tag = tag;
 
Index: lio-core/drivers/target/target_core_transport.c
===================================================================
--- lio-core.orig/drivers/target/target_core_transport.c	2012-04-21 14:05:26.643926870 +0200
+++ lio-core/drivers/target/target_core_transport.c	2012-04-21 15:09:25.927950445 +0200
@@ -3721,7 +3721,6 @@ transport_allocate_data_tasks(struct se_
 
 	task->task_sg = cmd_sg;
 	task->task_sg_nents = sgl_nents;
-	task->task_size = cmd->data_length;
 
 	task->task_sectors = sectors;
 
@@ -3748,7 +3747,6 @@ transport_allocate_control_task(struct s
 		return -ENOMEM;
 
 	task->task_sg = cmd->t_data_sg;
-	task->task_size = cmd->data_length;
 	task->task_sg_nents = cmd->t_data_nents;
 
 	spin_lock_irqsave(&cmd->t_state_lock, flags);
Index: lio-core/include/target/target_core_base.h
===================================================================
--- lio-core.orig/include/target/target_core_base.h	2012-04-21 14:05:26.647926869 +0200
+++ lio-core/include/target/target_core_base.h	2012-04-21 15:09:25.927950445 +0200
@@ -487,7 +487,6 @@ struct se_queue_obj {
 
 struct se_task {
 	u32			task_sectors;
-	u32			task_size;
 	struct se_cmd		*task_se_cmd;
 	struct scatterlist	*task_sg;
 	u32			task_sg_nents;

--
To unsubscribe from this list: send the line "unsubscribe target-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux SCSI]     [Kernel Newbies]     [Linux SCSI Target Infrastructure]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Device Mapper]

  Powered by Linux