diff options
author | Jens Axboe <jaxboe@fusionio.com> | 2011-03-01 15:04:39 -0500 |
---|---|---|
committer | Jens Axboe <jaxboe@fusionio.com> | 2011-03-01 15:04:39 -0500 |
commit | 6fae9c25134baffbeeb20031479e7ff6f6d8eec0 (patch) | |
tree | c9ab89992ce5293a43cd455a81dc8a5926a28a5e /drivers/scsi/scsi_lib.c | |
parent | c186794dbb466b45cf40f942f2d09d6d5b4b0e42 (diff) | |
parent | f5412be599602124d2bdd49947b231dd77c0bf99 (diff) |
Merge commit 'v2.6.38-rc6' into for-2.6.39/core
Conflicts:
block/cfq-iosched.c
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
Diffstat (limited to 'drivers/scsi/scsi_lib.c')
-rw-r--r-- | drivers/scsi/scsi_lib.c | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 4a3842212c50..9045c52abd25 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -1278,11 +1278,10 @@ static inline int scsi_target_queue_ready(struct Scsi_Host *shost, | |||
1278 | } | 1278 | } |
1279 | 1279 | ||
1280 | if (scsi_target_is_busy(starget)) { | 1280 | if (scsi_target_is_busy(starget)) { |
1281 | if (list_empty(&sdev->starved_entry)) { | 1281 | if (list_empty(&sdev->starved_entry)) |
1282 | list_add_tail(&sdev->starved_entry, | 1282 | list_add_tail(&sdev->starved_entry, |
1283 | &shost->starved_list); | 1283 | &shost->starved_list); |
1284 | return 0; | 1284 | return 0; |
1285 | } | ||
1286 | } | 1285 | } |
1287 | 1286 | ||
1288 | /* We're OK to process the command, so we can't be starved */ | 1287 | /* We're OK to process the command, so we can't be starved */ |
@@ -1978,8 +1977,7 @@ EXPORT_SYMBOL(scsi_mode_sense); | |||
1978 | * in. | 1977 | * in. |
1979 | * | 1978 | * |
1980 | * Returns zero if unsuccessful or an error if TUR failed. For | 1979 | * Returns zero if unsuccessful or an error if TUR failed. For |
1981 | * removable media, a return of NOT_READY or UNIT_ATTENTION is | 1980 | * removable media, UNIT_ATTENTION sets ->changed flag. |
1982 | * translated to success, with the ->changed flag updated. | ||
1983 | **/ | 1981 | **/ |
1984 | int | 1982 | int |
1985 | scsi_test_unit_ready(struct scsi_device *sdev, int timeout, int retries, | 1983 | scsi_test_unit_ready(struct scsi_device *sdev, int timeout, int retries, |
@@ -2006,16 +2004,6 @@ scsi_test_unit_ready(struct scsi_device *sdev, int timeout, int retries, | |||
2006 | } while (scsi_sense_valid(sshdr) && | 2004 | } while (scsi_sense_valid(sshdr) && |
2007 | sshdr->sense_key == UNIT_ATTENTION && --retries); | 2005 | sshdr->sense_key == UNIT_ATTENTION && --retries); |
2008 | 2006 | ||
2009 | if (!sshdr) | ||
2010 | /* could not allocate sense buffer, so can't process it */ | ||
2011 | return result; | ||
2012 | |||
2013 | if (sdev->removable && scsi_sense_valid(sshdr) && | ||
2014 | (sshdr->sense_key == UNIT_ATTENTION || | ||
2015 | sshdr->sense_key == NOT_READY)) { | ||
2016 | sdev->changed = 1; | ||
2017 | result = 0; | ||
2018 | } | ||
2019 | if (!sshdr_external) | 2007 | if (!sshdr_external) |
2020 | kfree(sshdr); | 2008 | kfree(sshdr); |
2021 | return result; | 2009 | return result; |