From 2ddf89d4671ba5f8e24e1e7665afce6271f63fb2 Mon Sep 17 00:00:00 2001 From: Takahiro Yasui Date: Wed, 29 Apr 2009 12:13:02 -0400 Subject: [PATCH] --- yaml --- r: 148039 b: refs/heads/master c: 5c10e63c943b4c67561ddc6bf61e01d4141f881f h: refs/heads/master i: 148037: c6eabf7651d3c06530febf2afa4c58f6c5849b81 148035: 13d6042da8d87b4c81ccb5011e1d79ca4ef626c2 148031: fb6db9fcbe2c6d43fbc9d556d22c7fe1d2456f71 v: v3 --- [refs] | 2 +- trunk/drivers/scsi/scsi_lib.c | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index c32bba46c509..2900ab21fb4d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b0d428adebe9f1232c72bf4c686a6f0eed047cc2 +refs/heads/master: 5c10e63c943b4c67561ddc6bf61e01d4141f881f diff --git a/trunk/drivers/scsi/scsi_lib.c b/trunk/drivers/scsi/scsi_lib.c index bb218c8b6e98..27dbf2e8e34a 100644 --- a/trunk/drivers/scsi/scsi_lib.c +++ b/trunk/drivers/scsi/scsi_lib.c @@ -2441,20 +2441,18 @@ int scsi_internal_device_unblock(struct scsi_device *sdev) { struct request_queue *q = sdev->request_queue; - int err; unsigned long flags; /* * Try to transition the scsi device to SDEV_RUNNING * and goose the device queue if successful. */ - err = scsi_device_set_state(sdev, SDEV_RUNNING); - if (err) { - err = scsi_device_set_state(sdev, SDEV_CREATED); - - if (err) - return err; - } + if (sdev->sdev_state == SDEV_BLOCK) + sdev->sdev_state = SDEV_RUNNING; + else if (sdev->sdev_state == SDEV_CREATED_BLOCK) + sdev->sdev_state = SDEV_CREATED; + else + return -EINVAL; spin_lock_irqsave(q->queue_lock, flags); blk_start_queue(q);