diff options
author | Rafael J. Wysocki <rjw@sisk.pl> | 2011-07-01 16:29:15 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rjw@sisk.pl> | 2011-07-02 08:30:10 -0400 |
commit | 632e270e01d8a1ee9e8ea56c83028727f17b1d17 (patch) | |
tree | 58cbc127f9f173409f40bbaf27f8ea85c185c52d /drivers/scsi/scsi_pm.c | |
parent | 455716e9b12ba93e93181ac88bef62e4eb5ac66c (diff) |
PM / Runtime: Return special error code if runtime PM is disabled
Some callers of pm_runtime_get_sync() and other runtime PM helper
functions, scsi_autopm_get_host() and scsi_autopm_get_device() in
particular, need to distinguish error codes returned when runtime PM
is disabled (i.e. power.disable_depth is nonzero for the given
device) from error codes returned in other situations. For this
reason, make the runtime PM helper functions return -EACCES when
power.disable_depth is nonzero and ensure that this error code
won't be returned by them in any other circumstances. Modify
scsi_autopm_get_host() and scsi_autopm_get_device() to check the
error code returned by pm_runtime_get_sync() and ignore -EACCES.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Diffstat (limited to 'drivers/scsi/scsi_pm.c')
-rw-r--r-- | drivers/scsi/scsi_pm.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/scsi/scsi_pm.c b/drivers/scsi/scsi_pm.c index d70e91ae60af..d82a023a9015 100644 --- a/drivers/scsi/scsi_pm.c +++ b/drivers/scsi/scsi_pm.c | |||
@@ -144,9 +144,9 @@ int scsi_autopm_get_device(struct scsi_device *sdev) | |||
144 | int err; | 144 | int err; |
145 | 145 | ||
146 | err = pm_runtime_get_sync(&sdev->sdev_gendev); | 146 | err = pm_runtime_get_sync(&sdev->sdev_gendev); |
147 | if (err < 0) | 147 | if (err < 0 && err !=-EACCES) |
148 | pm_runtime_put_sync(&sdev->sdev_gendev); | 148 | pm_runtime_put_sync(&sdev->sdev_gendev); |
149 | else if (err > 0) | 149 | else |
150 | err = 0; | 150 | err = 0; |
151 | return err; | 151 | return err; |
152 | } | 152 | } |
@@ -173,9 +173,9 @@ int scsi_autopm_get_host(struct Scsi_Host *shost) | |||
173 | int err; | 173 | int err; |
174 | 174 | ||
175 | err = pm_runtime_get_sync(&shost->shost_gendev); | 175 | err = pm_runtime_get_sync(&shost->shost_gendev); |
176 | if (err < 0) | 176 | if (err < 0 && err !=-EACCES) |
177 | pm_runtime_put_sync(&shost->shost_gendev); | 177 | pm_runtime_put_sync(&shost->shost_gendev); |
178 | else if (err > 0) | 178 | else |
179 | err = 0; | 179 | err = 0; |
180 | return err; | 180 | return err; |
181 | } | 181 | } |