Browse Source

ide: complete power step in ide_complete_pm_request()

* Complete power step in ide_complete_pm_request().

* Rename ide_complete_pm_request() to ide_complete_pm_rq().

There should be no functional changes caused by this patch.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Bartlomiej Zolnierkiewicz 16 years ago
parent
commit
3616b6536a
3 changed files with 10 additions and 9 deletions
  1. 2 6
      drivers/ide/ide-io.c
  2. 7 2
      drivers/ide/ide-pm.c
  3. 1 1
      include/linux/ide.h

+ 2 - 6
drivers/ide/ide-io.c

@@ -178,11 +178,7 @@ void ide_end_drive_cmd (ide_drive_t *drive, u8 stat, u8 err)
 				kfree(task);
 				kfree(task);
 		}
 		}
 	} else if (blk_pm_request(rq)) {
 	} else if (blk_pm_request(rq)) {
-		struct request_pm_state *pm = rq->data;
-
-		ide_complete_power_step(drive, rq);
-		if (pm->pm_step == IDE_PM_COMPLETED)
-			ide_complete_pm_request(drive, rq);
+		ide_complete_pm_rq(drive, rq);
 		return;
 		return;
 	}
 	}
 
 
@@ -438,7 +434,7 @@ static ide_startstop_t start_request (ide_drive_t *drive, struct request *rq)
 			startstop = ide_start_power_step(drive, rq);
 			startstop = ide_start_power_step(drive, rq);
 			if (startstop == ide_stopped &&
 			if (startstop == ide_stopped &&
 			    pm->pm_step == IDE_PM_COMPLETED)
 			    pm->pm_step == IDE_PM_COMPLETED)
-				ide_complete_pm_request(drive, rq);
+				ide_complete_pm_rq(drive, rq);
 			return startstop;
 			return startstop;
 		} else if (!rq->rq_disk && blk_special_request(rq))
 		} else if (!rq->rq_disk && blk_special_request(rq))
 			/*
 			/*

+ 7 - 2
drivers/ide/ide-pm.c

@@ -169,18 +169,23 @@ out_do_tf:
 }
 }
 
 
 /**
 /**
- *	ide_complete_pm_request - end the current Power Management request
+ *	ide_complete_pm_rq - end the current Power Management request
  *	@drive: target drive
  *	@drive: target drive
  *	@rq: request
  *	@rq: request
  *
  *
  *	This function cleans up the current PM request and stops the queue
  *	This function cleans up the current PM request and stops the queue
  *	if necessary.
  *	if necessary.
  */
  */
-void ide_complete_pm_request(ide_drive_t *drive, struct request *rq)
+void ide_complete_pm_rq(ide_drive_t *drive, struct request *rq)
 {
 {
 	struct request_queue *q = drive->queue;
 	struct request_queue *q = drive->queue;
+	struct request_pm_state *pm = rq->data;
 	unsigned long flags;
 	unsigned long flags;
 
 
+	ide_complete_power_step(drive, rq);
+	if (pm->pm_step != IDE_PM_COMPLETED)
+		return;
+
 #ifdef DEBUG_PM
 #ifdef DEBUG_PM
 	printk("%s: completing PM request, %s\n", drive->name,
 	printk("%s: completing PM request, %s\n", drive->name,
 	       blk_pm_suspend_request(rq) ? "suspend" : "resume");
 	       blk_pm_suspend_request(rq) ? "suspend" : "resume");

+ 1 - 1
include/linux/ide.h

@@ -1081,7 +1081,7 @@ int generic_ide_resume(struct device *);
 
 
 void ide_complete_power_step(ide_drive_t *, struct request *);
 void ide_complete_power_step(ide_drive_t *, struct request *);
 ide_startstop_t ide_start_power_step(ide_drive_t *, struct request *);
 ide_startstop_t ide_start_power_step(ide_drive_t *, struct request *);
-void ide_complete_pm_request(ide_drive_t *, struct request *);
+void ide_complete_pm_rq(ide_drive_t *, struct request *);
 void ide_check_pm_state(ide_drive_t *, struct request *);
 void ide_check_pm_state(ide_drive_t *, struct request *);
 
 
 /*
 /*