summaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-pm.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2017-01-31 10:57:30 -0500
committerJens Axboe <axboe@fb.com>2017-01-31 16:00:39 -0500
commit2f5a8e80f79dc82e00f4cca557dc9ceaf064b450 (patch)
treebc64c6e6f7e24d792742a3547018066568948fba /drivers/ide/ide-pm.c
parent57292b58ddb58689e8c3b4c6eadbef10d9ca44dd (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.c16
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