On 11/06/2014 08:40 AM, Christoph Hellwig wrote:
> scsi_reset_provider already manually runs all queues for the given host,
> so it doesn't need the scsi_run_queues call from it, and it doesn't need
> a reference on the device because it's synchronous.
> 
> So let's just call scsi_put_command directly and avoid the device reference
> dance to simplify the code.
> 
> Signed-off-by: Christoph Hellwig <[email protected]>
> Reviewed-by: Bart Van Assche <[email protected]>
> ---
>  drivers/scsi/scsi_error.c | 11 +++--------
>  1 file changed, 3 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
> index ba19687..a1ffdb0 100644
> --- a/drivers/scsi/scsi_error.c
> +++ b/drivers/scsi/scsi_error.c
> @@ -2335,14 +2335,9 @@ scsi_ioctl_reset(struct scsi_device *dev, int __user 
> *arg)
>               return -EIO;
>  
>       error = -EIO;
> -     if (!get_device(&dev->sdev_gendev))
> -             goto out_put_autopm_host;
> -
>       scmd = scsi_get_command(dev, GFP_KERNEL);
> -     if (!scmd) {
> -             put_device(&dev->sdev_gendev);
> +     if (!scmd)
>               goto out_put_autopm_host;
> -     }
>  
>       blk_rq_init(NULL, &req);
>       scmd->request = &req;
> @@ -2404,10 +2399,10 @@ scsi_ioctl_reset(struct scsi_device *dev, int __user 
> *arg)
>                            "waking up host to restart after TMF\n"));
>  
>       wake_up(&shost->host_wait);
> -
>       scsi_run_host_queues(shost);
>  
> -     scsi_next_command(scmd);
> +     scsi_put_command(scmd);
> +
>  out_put_autopm_host:
>       scsi_autopm_put_host(shost);
>       return error;
> 
Reviewed-by: Hannes Reinecke <[email protected]>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke                   zSeries & Storage
[email protected]                          +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 21284 (AG Nürnberg)
--
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