qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] sda abort with virtio-scsi


From: Paolo Bonzini
Subject: Re: [Qemu-devel] sda abort with virtio-scsi
Date: Thu, 4 Feb 2016 16:03:46 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0

> diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c
> index 595af1a..f712db5 100644
> --- a/drivers/scsi/virtio_scsi.c
> +++ b/drivers/scsi/virtio_scsi.c
> @@ -543,6 +543,33 @@ static int virtscsi_abort(struct scsi_cmnd *sc)
>       return virtscsi_tmf(vscsi, cmd);
>  }
>  
> +static enum blk_eh_timer_return virtscsi_timed_out(struct scsi_cmnd *sc)
> +{
> +     struct virtio_scsi *vscsi = shost_priv(sc->device->host);
> +     struct virtio_scsi_cmd *cmd;
> +
> +     scmd_printk(KERN_INFO, sc, "timeout\n");
> +     cmd = mempool_alloc(virtscsi_cmd_pool, GFP_NOIO);
> +     if (!cmd)
> +             return FAILED;

Should this be BLK_EH_NOT_HANDLED?  Apart from this, the patch looks
good.  And of course this doesn't affect Jim, who can test this patch
anyway.

Thanks!

Paolo

> +
> +     memset(cmd, 0, sizeof(*cmd));
> +     cmd->sc = sc;
> +     cmd->req.tmf = (struct virtio_scsi_ctrl_tmf_req){
> +             .type = VIRTIO_SCSI_T_TMF,
> +             .subtype = VIRTIO_SCSI_T_TMF_QUERY_TASK,
> +             .lun[0] = 1,
> +             .lun[1] = sc->device->id,
> +             .lun[2] = (sc->device->lun >> 8) | 0x40,
> +             .lun[3] = sc->device->lun & 0xff,
> +             .tag = (unsigned long)sc,
> +     };
> +     if (virtscsi_tmf(vscsi, cmd) == FAILED)
> +             return BLK_EH_NOT_HANDLED;
> +
> +     return BLK_EH_RESET_TIMER;
> +}
> +
>  static struct scsi_host_template virtscsi_host_template = {
>       .module = THIS_MODULE,
>       .name = "Virtio SCSI HBA",
> @@ -551,6 +578,7 @@ static struct scsi_host_template virtscsi_host_template = 
> {
>       .this_id = -1,
>       .eh_abort_handler = virtscsi_abort,
>       .eh_device_reset_handler = virtscsi_device_reset,
> +     .eh_timed_out = virtscsi_timed_out,
>  
>       .can_queue = 1024,
>       .dma_boundary = UINT_MAX,
> -- 1.8.5.6
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]