summary refs log tree commit diff
path: root/include/target
diff options
context:
space:
mode:
authorNicholas Bellinger <nab@daterainc.com>2013-08-20 10:45:16 -0700
committerNicholas Bellinger <nab@linux-iscsi.org>2013-09-09 14:29:33 -0700
commit47e459e622f07c2564e6be8412d75389d2a807b8 (patch)
tree685709343f949e5cc858e8657dba5d2bd79d91ca /include/target
parent8cefe07b5e9c2b0212ad6809a219e4489807a746 (diff)
downloadlinux-47e459e622f07c2564e6be8412d75389d2a807b8.tar.gz
target: Add transport_reset_sgl_orig() for COMPARE_AND_WRITE
After COMPARE_AND_WRITE completes it's comparision, the WRITE
payload SGLs head expect to be updated to point from the verify
instance of user data, to the write instance of user data.

So for this special case, add transport_reset_sgl_orig() usage
within transport_free_pages() and add se_cmd->t_data_[sg,nents]_orig
members to save the original assignments.

Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Martin Petersen <martin.petersen@oracle.com>
Cc: Chris Mason <chris.mason@fusionio.com>
Cc: James Bottomley <JBottomley@Parallels.com>
Cc: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Nicholas Bellinger <nab@daterainc.com>
Diffstat (limited to 'include/target')
-rw-r--r--include/target/target_core_base.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
index 4a26a18a24d6..7fdb3fae2961 100644
--- a/include/target/target_core_base.h
+++ b/include/target/target_core_base.h
@@ -478,7 +478,9 @@ struct se_cmd {
 	struct work_struct	work;
 
 	struct scatterlist	*t_data_sg;
+	struct scatterlist	*t_data_sg_orig;
 	unsigned int		t_data_nents;
+	unsigned int		t_data_nents_orig;
 	void			*t_data_vmap;
 	struct scatterlist	*t_bidi_data_sg;
 	unsigned int		t_bidi_data_nents;