diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-03-27 07:46:36 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-03-27 07:46:36 -0400 |
commit | 03a2faaea8f44edfe583ddf1240948019becfbe4 (patch) | |
tree | 08cb1f71390aa1972ad4eb9eba7da48ac3a6d9ce /drivers/ide | |
parent | 3ee38302ffc63da93eb0313053a990bb3466e275 (diff) |
ide: return request status from ->pc_callback method
Make ->pc_callback method return request status and then move
the request completion from ->pc_callback to ide_pc_intr().
There should be no functional changes caused by this patch.
Acked-by: Borislav Petkov <petkovbb@gmail.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide')
-rw-r--r-- | drivers/ide/ide-atapi.c | 12 | ||||
-rw-r--r-- | drivers/ide/ide-floppy.c | 12 | ||||
-rw-r--r-- | drivers/ide/ide-tape.c | 10 |
3 files changed, 17 insertions, 17 deletions
diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c index f44474b0adae..f72b5a675435 100644 --- a/drivers/ide/ide-atapi.c +++ b/drivers/ide/ide-atapi.c | |||
@@ -357,6 +357,8 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive) | |||
357 | 357 | ||
358 | /* No more interrupts */ | 358 | /* No more interrupts */ |
359 | if ((stat & ATA_DRQ) == 0) { | 359 | if ((stat & ATA_DRQ) == 0) { |
360 | int uptodate; | ||
361 | |||
360 | debug_log("Packet command completed, %d bytes transferred\n", | 362 | debug_log("Packet command completed, %d bytes transferred\n", |
361 | pc->xferred); | 363 | pc->xferred); |
362 | 364 | ||
@@ -395,7 +397,15 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive) | |||
395 | dsc = 1; | 397 | dsc = 1; |
396 | 398 | ||
397 | /* Command finished - Call the callback function */ | 399 | /* Command finished - Call the callback function */ |
398 | drive->pc_callback(drive, dsc); | 400 | uptodate = drive->pc_callback(drive, dsc); |
401 | |||
402 | if (uptodate == 0) | ||
403 | drive->failed_pc = NULL; | ||
404 | |||
405 | if (blk_special_request(rq)) | ||
406 | ide_complete_rq(drive, 0); | ||
407 | else | ||
408 | ide_end_request(drive, uptodate, 0); | ||
399 | 409 | ||
400 | return ide_stopped; | 410 | return ide_stopped; |
401 | } | 411 | } |
diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c index ab870a08d62b..5625946739ad 100644 --- a/drivers/ide/ide-floppy.c +++ b/drivers/ide/ide-floppy.c | |||
@@ -71,7 +71,7 @@ static void idefloppy_update_buffers(ide_drive_t *drive, | |||
71 | ide_end_request(drive, 1, 0); | 71 | ide_end_request(drive, 1, 0); |
72 | } | 72 | } |
73 | 73 | ||
74 | static void ide_floppy_callback(ide_drive_t *drive, int dsc) | 74 | static int ide_floppy_callback(ide_drive_t *drive, int dsc) |
75 | { | 75 | { |
76 | struct ide_disk_obj *floppy = drive->driver_data; | 76 | struct ide_disk_obj *floppy = drive->driver_data; |
77 | struct ide_atapi_pc *pc = drive->pc; | 77 | struct ide_atapi_pc *pc = drive->pc; |
@@ -108,14 +108,10 @@ static void ide_floppy_callback(ide_drive_t *drive, int dsc) | |||
108 | "Aborting request!\n"); | 108 | "Aborting request!\n"); |
109 | } | 109 | } |
110 | 110 | ||
111 | if (uptodate == 0) | 111 | if (blk_special_request(rq)) |
112 | drive->failed_pc = NULL; | ||
113 | |||
114 | if (blk_special_request(rq)) { | ||
115 | rq->errors = uptodate ? 0 : IDE_DRV_ERROR_GENERAL; | 112 | rq->errors = uptodate ? 0 : IDE_DRV_ERROR_GENERAL; |
116 | ide_complete_rq(drive, 0); | 113 | |
117 | } else | 114 | return uptodate; |
118 | ide_end_request(drive, uptodate, 0); | ||
119 | } | 115 | } |
120 | 116 | ||
121 | static void ide_floppy_report_error(struct ide_disk_obj *floppy, | 117 | static void ide_floppy_report_error(struct ide_disk_obj *floppy, |
diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c index fc61bbef3bb9..a42e49c6cc3f 100644 --- a/drivers/ide/ide-tape.c +++ b/drivers/ide/ide-tape.c | |||
@@ -463,7 +463,7 @@ static void ide_tape_kfree_buffer(idetape_tape_t *tape) | |||
463 | 463 | ||
464 | static void ide_tape_handle_dsc(ide_drive_t *); | 464 | static void ide_tape_handle_dsc(ide_drive_t *); |
465 | 465 | ||
466 | static void ide_tape_callback(ide_drive_t *drive, int dsc) | 466 | static int ide_tape_callback(ide_drive_t *drive, int dsc) |
467 | { | 467 | { |
468 | idetape_tape_t *tape = drive->driver_data; | 468 | idetape_tape_t *tape = drive->driver_data; |
469 | struct ide_atapi_pc *pc = drive->pc; | 469 | struct ide_atapi_pc *pc = drive->pc; |
@@ -530,13 +530,7 @@ static void ide_tape_callback(ide_drive_t *drive, int dsc) | |||
530 | 530 | ||
531 | rq->errors = err; | 531 | rq->errors = err; |
532 | 532 | ||
533 | if (uptodate == 0) | 533 | return uptodate; |
534 | drive->failed_pc = NULL; | ||
535 | |||
536 | if (blk_special_request(rq)) | ||
537 | ide_complete_rq(drive, 0); | ||
538 | else | ||
539 | ide_end_request(drive, uptodate, 0); | ||
540 | } | 534 | } |
541 | 535 | ||
542 | /* | 536 | /* |