On Tue, Jan 06, 2015 at 08:18:05PM +0000, Nicholas A. Bellinger wrote: > From: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx> > > 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@xxxxxx> > Cc: Michael S. Tsirkin <mst@xxxxxxxxxx> > Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> > Signed-off-by: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx> 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html