lkml.org 
[lkml]   [2015]   [Jan]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.12 130/176] vhost-scsi: Add missing virtio-scsi -> TCM attribute conversion
    Date
    From: Nicholas Bellinger <nab@linux-iscsi.org>

    3.12-stable review patch. If anyone has any objections, please let me know.

    ===============

    commit 46243860806bdc2756f3ce8ac86b4d7c616bcd6c upstream.

    While looking at hch's recent conversion to drop the MSG_*_TAG
    definitions, I noticed a long standing bug in vhost-scsi where
    the VIRTIO_SCSI_S_* attribute definitions where incorrectly
    being passed directly into target_submit_cmd_map_sgls().

    This patch adds the missing virtio-scsi to TCM/SAM task attribute
    conversion.

    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    ---
    drivers/vhost/scsi.c | 23 ++++++++++++++++++++---
    1 file changed, 20 insertions(+), 3 deletions(-)

    diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c
    index c5b631cceb4c..d7fddc7d10d5 100644
    --- a/drivers/vhost/scsi.c
    +++ b/drivers/vhost/scsi.c
    @@ -861,6 +861,23 @@ vhost_scsi_map_iov_to_sgl(struct tcm_vhost_cmd *cmd,
    return 0;
    }

    +static int vhost_scsi_to_tcm_attr(int attr)
    +{
    + switch (attr) {
    + case VIRTIO_SCSI_S_SIMPLE:
    + return MSG_SIMPLE_TAG;
    + case VIRTIO_SCSI_S_ORDERED:
    + return MSG_ORDERED_TAG;
    + case VIRTIO_SCSI_S_HEAD:
    + return MSG_HEAD_TAG;
    + case VIRTIO_SCSI_S_ACA:
    + return MSG_ACA_TAG;
    + default:
    + break;
    + }
    + return MSG_SIMPLE_TAG;
    +}
    +
    static void tcm_vhost_submission_work(struct work_struct *work)
    {
    struct tcm_vhost_cmd *cmd =
    @@ -887,9 +904,9 @@ static void tcm_vhost_submission_work(struct work_struct *work)
    rc = target_submit_cmd_map_sgls(se_cmd, tv_nexus->tvn_se_sess,
    cmd->tvc_cdb, &cmd->tvc_sense_buf[0],
    cmd->tvc_lun, cmd->tvc_exp_data_len,
    - cmd->tvc_task_attr, cmd->tvc_data_direction,
    - TARGET_SCF_ACK_KREF, sg_ptr, cmd->tvc_sgl_count,
    - sg_bidi_ptr, sg_no_bidi);
    + vhost_scsi_to_tcm_attr(cmd->tvc_task_attr),
    + cmd->tvc_data_direction, TARGET_SCF_ACK_KREF,
    + sg_ptr, cmd->tvc_sgl_count, sg_bidi_ptr, sg_no_bidi);
    if (rc < 0) {
    transport_send_check_condition_and_sense(se_cmd,
    TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE, 0);
    --
    2.2.2


    \
     
     \ /
      Last update: 2015-01-29 11:41    [W:4.120 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site