diff options
author | Christoph Hellwig <hch@lst.de> | 2017-01-31 10:57:30 -0500 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-01-31 16:00:39 -0500 |
commit | 2f5a8e80f79dc82e00f4cca557dc9ceaf064b450 (patch) | |
tree | bc64c6e6f7e24d792742a3547018066568948fba /drivers/ide/ide-pm.c | |
parent | 57292b58ddb58689e8c3b4c6eadbef10d9ca44dd (diff) |
ide: don't abuse cmd_type
Currently the legacy ide driver defines several request types of it's own,
which is in the way of removing that field entirely.
Instead add a type field to struct ide_request and use that to distinguish
the different types of IDE-internal requests.
It's a bit of a mess, but so is the surrounding code..
Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'drivers/ide/ide-pm.c')
-rw-r--r-- | drivers/ide/ide-pm.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/ide/ide-pm.c b/drivers/ide/ide-pm.c index f6767aba7cfb..0c1296815dfa 100644 --- a/drivers/ide/ide-pm.c +++ b/drivers/ide/ide-pm.c | |||
@@ -20,7 +20,8 @@ int generic_ide_suspend(struct device *dev, pm_message_t mesg) | |||
20 | memset(&rqpm, 0, sizeof(rqpm)); | 20 | memset(&rqpm, 0, sizeof(rqpm)); |
21 | rq = blk_get_request(drive->queue, READ, __GFP_RECLAIM); | 21 | rq = blk_get_request(drive->queue, READ, __GFP_RECLAIM); |
22 | scsi_req_init(rq); | 22 | scsi_req_init(rq); |
23 | rq->cmd_type = REQ_TYPE_ATA_PM_SUSPEND; | 23 | rq->cmd_type = REQ_TYPE_DRV_PRIV; |
24 | ide_req(rq)->type = ATA_PRIV_PM_SUSPEND; | ||
24 | rq->special = &rqpm; | 25 | rq->special = &rqpm; |
25 | rqpm.pm_step = IDE_PM_START_SUSPEND; | 26 | rqpm.pm_step = IDE_PM_START_SUSPEND; |
26 | if (mesg.event == PM_EVENT_PRETHAW) | 27 | if (mesg.event == PM_EVENT_PRETHAW) |
@@ -91,7 +92,8 @@ int generic_ide_resume(struct device *dev) | |||
91 | memset(&rqpm, 0, sizeof(rqpm)); | 92 | memset(&rqpm, 0, sizeof(rqpm)); |
92 | rq = blk_get_request(drive->queue, READ, __GFP_RECLAIM); | 93 | rq = blk_get_request(drive->queue, READ, __GFP_RECLAIM); |
93 | scsi_req_init(rq); | 94 | scsi_req_init(rq); |
94 | rq->cmd_type = REQ_TYPE_ATA_PM_RESUME; | 95 | rq->cmd_type = REQ_TYPE_DRV_PRIV; |
96 | ide_req(rq)->type = ATA_PRIV_PM_RESUME; | ||
95 | rq->rq_flags |= RQF_PREEMPT; | 97 | rq->rq_flags |= RQF_PREEMPT; |
96 | rq->special = &rqpm; | 98 | rq->special = &rqpm; |
97 | rqpm.pm_step = IDE_PM_START_RESUME; | 99 | rqpm.pm_step = IDE_PM_START_RESUME; |
@@ -223,10 +225,10 @@ void ide_complete_pm_rq(ide_drive_t *drive, struct request *rq) | |||
223 | 225 | ||
224 | #ifdef DEBUG_PM | 226 | #ifdef DEBUG_PM |
225 | printk("%s: completing PM request, %s\n", drive->name, | 227 | printk("%s: completing PM request, %s\n", drive->name, |
226 | (rq->cmd_type == REQ_TYPE_ATA_PM_SUSPEND) ? "suspend" : "resume"); | 228 | (ide_req(rq)->type == ATA_PRIV_PM_SUSPEND) ? "suspend" : "resume"); |
227 | #endif | 229 | #endif |
228 | spin_lock_irqsave(q->queue_lock, flags); | 230 | spin_lock_irqsave(q->queue_lock, flags); |
229 | if (rq->cmd_type == REQ_TYPE_ATA_PM_SUSPEND) | 231 | if (ide_req(rq)->type == ATA_PRIV_PM_SUSPEND) |
230 | blk_stop_queue(q); | 232 | blk_stop_queue(q); |
231 | else | 233 | else |
232 | drive->dev_flags &= ~IDE_DFLAG_BLOCKED; | 234 | drive->dev_flags &= ~IDE_DFLAG_BLOCKED; |
@@ -242,11 +244,13 @@ void ide_check_pm_state(ide_drive_t *drive, struct request *rq) | |||
242 | { | 244 | { |
243 | struct ide_pm_state *pm = rq->special; | 245 | struct ide_pm_state *pm = rq->special; |
244 | 246 | ||
245 | if (rq->cmd_type == REQ_TYPE_ATA_PM_SUSPEND && | 247 | if (rq->cmd_type == REQ_TYPE_DRV_PRIV && |
248 | ide_req(rq)->type == ATA_PRIV_PM_SUSPEND && | ||
246 | pm->pm_step == IDE_PM_START_SUSPEND) | 249 | pm->pm_step == IDE_PM_START_SUSPEND) |
247 | /* Mark drive blocked when starting the suspend sequence. */ | 250 | /* Mark drive blocked when starting the suspend sequence. */ |
248 | drive->dev_flags |= IDE_DFLAG_BLOCKED; | 251 | drive->dev_flags |= IDE_DFLAG_BLOCKED; |
249 | else if (rq->cmd_type == REQ_TYPE_ATA_PM_RESUME && | 252 | else if (rq->cmd_type == REQ_TYPE_DRV_PRIV && |
253 | ide_req(rq)->type == ATA_PRIV_PM_RESUME && | ||
250 | pm->pm_step == IDE_PM_START_RESUME) { | 254 | pm->pm_step == IDE_PM_START_RESUME) { |
251 | /* | 255 | /* |
252 | * The first thing we do on wakeup is to wait for BSY bit to | 256 | * The first thing we do on wakeup is to wait for BSY bit to |