summaryrefslogtreecommitdiffstats
path: root/drivers/target/target_core_transport.c
diff options
context:
space:
mode:
authorChristoph Hellwig2011-11-03 22:50:41 +0100
committerNicholas Bellinger2011-11-04 09:00:17 +0100
commit617c0e06c1b30b799d8b25f92eefdc1b098cb9f8 (patch)
treec256c38e2bbf9fb1a17cd5d821efca0839060821 /drivers/target/target_core_transport.c
parenttarget: split core_scsi2_emulate_crh (diff)
downloadkernel-qcow2-linux-617c0e06c1b30b799d8b25f92eefdc1b098cb9f8.tar.gz
kernel-qcow2-linux-617c0e06c1b30b799d8b25f92eefdc1b098cb9f8.tar.xz
kernel-qcow2-linux-617c0e06c1b30b799d8b25f92eefdc1b098cb9f8.zip
target: split core_scsi3_emulate_pr
Split core_scsi2_emulate_crh into one routine each for the PERSISTENT_RESERVE_IN and PERSISTENT_RESERVE_OUT side. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target/target_core_transport.c')
-rw-r--r--drivers/target/target_core_transport.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
index f4232934bac5..717f84a9b42b 100644
--- a/drivers/target/target_core_transport.c
+++ b/drivers/target/target_core_transport.c
@@ -2842,11 +2842,14 @@ static int transport_generic_cmd_sequencer(
cmd->se_cmd_flags |= SCF_SCSI_CONTROL_SG_IO_CDB;
break;
case PERSISTENT_RESERVE_IN:
+ if (su_dev->t10_pr.res_type == SPC3_PERSISTENT_RESERVATIONS)
+ cmd->transport_emulate_cdb = target_scsi3_emulate_pr_in;
+ size = (cdb[7] << 8) + cdb[8];
+ cmd->se_cmd_flags |= SCF_SCSI_CONTROL_SG_IO_CDB;
+ break;
case PERSISTENT_RESERVE_OUT:
- cmd->transport_emulate_cdb =
- (su_dev->t10_pr.res_type ==
- SPC3_PERSISTENT_RESERVATIONS) ?
- core_scsi3_emulate_pr : NULL;
+ if (su_dev->t10_pr.res_type == SPC3_PERSISTENT_RESERVATIONS)
+ cmd->transport_emulate_cdb = target_scsi3_emulate_pr_out;
size = (cdb[7] << 8) + cdb[8];
cmd->se_cmd_flags |= SCF_SCSI_CONTROL_SG_IO_CDB;
break;