linux-stable/drivers/target/iscsi
Nicholas Bellinger 00fdc6bbef iscsi-target: Fix reservation conflict -EBUSY response handling bug
This patch addresses a iscsi-target specific bug related to reservation conflict
handling in iscsit_handle_scsi_cmd() that has been causing reservation conflicts
to complete and not fail as expected due to incorrect errno checking.  The problem
occured with the change to return -EBUSY from transport_generic_cmd_sequencer() ->
transport_generic_allocate_tasks() failures, that broke iscsit_handle_scsi_cmd()
checking for -EINVAL in order to invoke a non GOOD status response.

This was manifesting itself as data corruption with legacy SPC-2 reservations,
but also effects iscsi-target LUNs with SPC-3 persistent reservations.

This bug was originally introduced in lio-core commit:

commit 03e98c9eb9
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Fri Nov 4 02:36:16 2011 -0700

    target: Address legacy PYX_TRANSPORT_* return code breakage

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:58 -07:00
..
iscsi_target.c iscsi-target: Fix reservation conflict -EBUSY response handling bug 2012-03-13 21:43:58 -07:00
iscsi_target.h
iscsi_target_auth.c iscsi-target: fix chap identifier simple_strtoul usage 2011-12-14 11:28:09 +00:00
iscsi_target_auth.h
iscsi_target_configfs.c iscsi_target: in_aton needs linux/inet.h 2012-02-07 06:48:30 +00:00
iscsi_target_configfs.h
iscsi_target_core.h iscsi-target: Fix discovery with INADDR_ANY and IN6ADDR_ANY_INIT 2012-01-18 08:35:58 +00:00
iscsi_target_datain_values.c
iscsi_target_datain_values.h
iscsi_target_device.c target: header reshuffle, part2 2011-12-14 11:26:05 +00:00
iscsi_target_device.h
iscsi_target_erl0.c target: header reshuffle, part2 2011-12-14 11:26:05 +00:00
iscsi_target_erl0.h
iscsi_target_erl1.c iscsi-target: Fix up a few assignments 2012-01-18 08:35:57 +00:00
iscsi_target_erl1.h
iscsi_target_erl2.c target: header reshuffle, part2 2011-12-14 11:26:05 +00:00
iscsi_target_erl2.h
iscsi_target_login.c iscsi: use IP_FREEBIND socket option 2012-02-07 06:48:53 +00:00
iscsi_target_login.h
iscsi_target_nego.c target: remove useless casts 2011-12-14 11:28:07 +00:00
iscsi_target_nego.h
iscsi_target_nodeattrib.c target: remove useless casts 2011-12-14 11:28:07 +00:00
iscsi_target_nodeattrib.h
iscsi_target_parameters.c iscsi-target: Disable markers + remove dangerous local scope array usage 2011-09-16 19:37:18 +00:00
iscsi_target_parameters.h
iscsi_target_seq_pdu_list.c
iscsi_target_seq_pdu_list.h
iscsi_target_stat.c target: remove useless casts 2011-12-14 11:28:07 +00:00
iscsi_target_stat.h
iscsi_target_tmr.c target: header reshuffle, part2 2011-12-14 11:26:05 +00:00
iscsi_target_tmr.h
iscsi_target_tpg.c target: remove useless casts 2011-12-14 11:28:07 +00:00
iscsi_target_tpg.h
iscsi_target_tq.c
iscsi_target_tq.h
iscsi_target_util.c iscsi-target: Fix reject release handling in iscsit_free_cmd() 2012-01-18 08:35:56 +00:00
iscsi_target_util.h iscsi-target: Remove SCF_SE_LUN_CMD flag abuses 2011-10-24 03:20:56 +00:00
Kconfig target: iscsi_target depends on NET 2011-07-28 20:16:18 +00:00
Makefile