On Tue, Jan 06, 2015 at 08:18:05PM +0000, Nicholas A. Bellinger wrote:
> From: Nicholas Bellinger <[email protected]>
> 
> 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 <[email protected]>
> Cc: Michael S. Tsirkin <[email protected]>
> Cc: Paolo Bonzini <[email protected]>
> Signed-off-by: Nicholas Bellinger <[email protected]>

Cc stable as well?

> ---
>  drivers/vhost/scsi.c | 24 +++++++++++++++++++++---
>  1 file changed, 21 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c
> index 01c01cb..d695b16 100644
> --- a/drivers/vhost/scsi.c
> +++ b/drivers/vhost/scsi.c
> @@ -911,6 +911,23 @@ vhost_scsi_map_iov_to_prot(struct tcm_vhost_cmd *cmd,
>       return 0;
>  }
>  
> +static int vhost_scsi_to_tcm_attr(int attr)
> +{
> +     switch (attr) {
> +     case VIRTIO_SCSI_S_SIMPLE:
> +             return TCM_SIMPLE_TAG;
> +     case VIRTIO_SCSI_S_ORDERED:
> +             return TCM_ORDERED_TAG;
> +     case VIRTIO_SCSI_S_HEAD:
> +             return TCM_HEAD_TAG;
> +     case VIRTIO_SCSI_S_ACA:
> +             return TCM_ACA_TAG;
> +     default:
> +             break;
> +     }
> +     return TCM_SIMPLE_TAG;
> +}
> +
>  static void tcm_vhost_submission_work(struct work_struct *work)
>  {
>       struct tcm_vhost_cmd *cmd =
> @@ -936,9 +953,10 @@ 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,
> -                     NULL, 0, sg_prot_ptr, cmd->tvc_prot_sgl_count);
> +                     vhost_scsi_to_tcm_attr(cmd->tvc_task_attr),
> +                     cmd->tvc_data_direction, TARGET_SCF_ACK_KREF,
> +                     sg_ptr, cmd->tvc_sgl_count, NULL, 0, sg_prot_ptr,
> +                     cmd->tvc_prot_sgl_count);
>       if (rc < 0) {
>               transport_send_check_condition_and_sense(se_cmd,
>                               TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE, 0);
> -- 
> 1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to