]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
target: Avoid DataIN transfers for non-GOOD SAM status
authorNicholas Bellinger <nab@linux-iscsi.org>
Sat, 5 Mar 2016 06:30:52 +0000 (22:30 -0800)
committerNicholas Bellinger <nab@linux-iscsi.org>
Fri, 11 Mar 2016 06:36:12 +0000 (22:36 -0800)
commit4347ab5a086efcba449e7a6f0a14d1474060006b
tree431fe7029258a79e4f3c73df8ecf0ece784770a6
parent32c76de3466ed2a875e36c140ac4e3800fdfab6e
target: Avoid DataIN transfers for non-GOOD SAM status

This patch modifies existing transport_complete_*() code
to avoid invoking target_core_fabric_ops->queue_data_in()
driver callbacks for I/O READs with non-GOOD SAM status.

Some initiators expect GOOD status when a DATA-IN payload
transfer is involved, so to be safe go ahead and always
invoke target_core_fabric_ops->queue_status() to generate
fabric responses instead.

Note this is a prerequisite for IBLOCK supporting retriable
status, so SAM_STAT_BUSY + SAM_STAT_TASK_SET_FULL always
generates fabric driver responses instead of initiating
DataIN payload transfer when non-GOOD status is present

Reviewed-by: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Sagi Grimberg <sagig@mellanox.com>
Cc: Andy Grover <agrover@redhat.com>
Cc: Mike Christie <mchristi@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_transport.c