linux/drivers/target
Nicholas Bellinger 087a03b3ea target: Fix compatible reservation handling (CRH=1) with legacy RESERVE/RELEASE
This patch addresses a bug with target_check_scsi2_reservation_conflict()
return checking in target_scsi2_reservation_[reserve,release]() that was
preventing CRH=1 operation from silently succeeding in the two special
cases defined by SPC-3, and not failing with reservation conflict status
when dealing with legacy RESERVE/RELEASE + active SPC-3 PR logic.

Also explictly set cmd->scsi_status = SAM_STAT_RESERVATION_CONFLICT during
the early non reservation holder failure from pr_ops->t10_seq_non_holder()
check in transport_generic_cmd_sequencer() for fabrics that already expect
it to be set.

This bug was originally introduced in mainline commit:

commit eacac00ce5
Author: Christoph Hellwig <hch@infradead.org>
Date:   Thu Nov 3 17:50:40 2011 -0400

    target: split core_scsi2_emulate_crh

Reported-by: Martin Svec <martin.svec@zoner.cz>
Cc: Martin Svec <martin.svec@zoner.cz>
Cc: Christoph Hellwig <hch@lst.de>
Cc: stable@vger.kernel.org
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
2012-03-13 21:43:43 -07:00
..
iscsi iscsi: use IP_FREEBIND socket option 2012-02-07 06:48:53 +00:00
loopback tcm_loop: bump max_sectors 2011-12-14 11:28:11 +00:00
tcm_fc target: Change target_submit_cmd() to return void 2012-02-07 06:41:04 +00:00
Kconfig iscsi-target: Add iSCSI fabric support for target v4.1 2011-07-26 09:16:43 +00:00
Makefile target: remove the ->transport_split_cdb callback in se_cmd 2011-10-24 03:21:15 +00:00
target_core_alua.c target: Allow control CDBs with data > 1 page 2012-01-18 08:35:58 +00:00
target_core_alua.h target: pass the se_task to the CDB emulation callback 2011-11-04 08:00:17 +00:00
target_core_cdb.c target: accept REQUEST_SENSE with 18bytes 2012-02-07 06:32:39 +00:00
target_core_configfs.c target: handle empty string writes in sysfs 2012-02-07 06:48:40 +00:00
target_core_device.c target: Allow control CDBs with data > 1 page 2012-01-18 08:35:58 +00:00
target_core_fabric_configfs.c target: fix return code of core_tpg_.*_lun 2012-01-18 08:33:44 +00:00
target_core_fabric_lib.c target: remove useless casts 2011-12-14 11:28:07 +00:00
target_core_file.c target: remove useless casts 2011-12-14 11:28:07 +00:00
target_core_file.h target: make the ->get_cdb method optional 2011-10-24 03:21:11 +00:00
target_core_hba.c target: header reshuffle, part2 2011-12-14 11:26:05 +00:00
target_core_iblock.c iblock: fix handling of large requests 2012-02-07 06:48:46 +00:00
target_core_iblock.h target: make the ->get_cdb method optional 2011-10-24 03:21:11 +00:00
target_core_internal.h target: fix return code of core_tpg_.*_lun 2012-01-18 08:33:44 +00:00
target_core_pr.c target: Fix compatible reservation handling (CRH=1) with legacy RESERVE/RELEASE 2012-03-13 21:43:43 -07:00
target_core_pr.h target: Move core_scsi3_check_cdb_abort_and_preempt 2011-12-14 11:27:34 +00:00
target_core_pscsi.c target: Allow control CDBs with data > 1 page 2012-01-18 08:35:58 +00:00
target_core_pscsi.h target: cleanup pscsi request submission 2011-10-24 03:20:44 +00:00
target_core_rd.c target: use \n as a separator for configuration 2011-12-14 11:27:23 +00:00
target_core_rd.h target: make the ->get_cdb method optional 2011-10-24 03:21:11 +00:00
target_core_stat.c target: remove useless casts 2011-12-14 11:28:07 +00:00
target_core_tmr.c target: simplify target_check_cdb_and_preempt 2011-12-14 11:27:55 +00:00
target_core_tpg.c target: fix return code of core_tpg_.*_lun 2012-01-18 08:33:44 +00:00
target_core_transport.c target: Fix compatible reservation handling (CRH=1) with legacy RESERVE/RELEASE 2012-03-13 21:43:43 -07:00
target_core_ua.c target: header reshuffle, part2 2011-12-14 11:26:05 +00:00
target_core_ua.h [SCSI] target: Add LIO target core v4.0.0-rc6 2011-01-14 10:12:29 -06:00