lkml.org 
[lkml]   [2012]   [Apr]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[ 32/59] target: Fix unsupported WRITE_SAME sense payload
    3.2-stable review patch.  If anyone has any objections, please let me know.

    ------------------
    From: Martin Svec <martin.svec@zoner.cz>

    commit 67236c44741e250199ccd77f1115568e68cf8848 upstream.

    This patch fixes a bug in target-core where unsupported WRITE_SAME ops
    from a target_check_write_same_discard() failure was incorrectly
    returning CHECK_CONDITION w/ TCM_INVALID_CDB_FIELD sense data.
    This was causing some clients to not properly fall back, so go ahead
    and use the correct TCM_UNSUPPORTED_SCSI_OPCODE sense for this case.

    Reported-by: Martin Svec <martin.svec@zoner.cz>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/target/target_core_transport.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)
    --- a/drivers/target/target_core_transport.c
    +++ b/drivers/target/target_core_transport.c
    @@ -2666,7 +2666,7 @@ static int transport_generic_cmd_sequenc
    cmd->se_cmd_flags |= SCF_SCSI_CONTROL_SG_IO_CDB;

    if (target_check_write_same_discard(&cdb[10], dev) < 0)
    - goto out_invalid_cdb_field;
    + goto out_unsupported_cdb;
    if (!passthrough)
    cmd->execute_task = target_emulate_write_same;
    break;
    @@ -2949,7 +2949,7 @@ static int transport_generic_cmd_sequenc
    cmd->se_cmd_flags |= SCF_SCSI_CONTROL_SG_IO_CDB;

    if (target_check_write_same_discard(&cdb[1], dev) < 0)
    - goto out_invalid_cdb_field;
    + goto out_unsupported_cdb;
    if (!passthrough)
    cmd->execute_task = target_emulate_write_same;
    break;
    @@ -2972,7 +2972,7 @@ static int transport_generic_cmd_sequenc
    * of byte 1 bit 3 UNMAP instead of original reserved field
    */
    if (target_check_write_same_discard(&cdb[1], dev) < 0)
    - goto out_invalid_cdb_field;
    + goto out_unsupported_cdb;
    if (!passthrough)
    cmd->execute_task = target_emulate_write_same;
    break;



    \
     
     \ /
      Last update: 2012-04-12 01:45    [W:0.155 / U:0.696 seconds]
    ©2003-2014 Jasper Spaans. Advertise on this site