diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-02-01 17:09:17 -0500 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-02-01 17:09:17 -0500 |
commit | f1071e628bc769174c3e2df7827a2a8ad05aea67 (patch) | |
tree | 537f3bd1368530deaeeaa908f91d544116dfb0fc | |
parent | 5a5222d9fa4aa7ae3b1d5c126cb9c83124d75af5 (diff) |
ide-cd: fix "missing data" handling in cdrom_pc_intr()
If drive still wants to transfer the data we need to pad the transfer
instead of just finishing the request.
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
-rw-r--r-- | drivers/ide/ide-cd.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c index 75539fd0829c..cbe4f1a04c14 100644 --- a/drivers/ide/ide-cd.c +++ b/drivers/ide/ide-cd.c | |||
@@ -1500,9 +1500,11 @@ static ide_startstop_t cdrom_pc_intr (ide_drive_t *drive) | |||
1500 | 1500 | ||
1501 | if (xferfunc) { | 1501 | if (xferfunc) { |
1502 | if (!rq->data) { | 1502 | if (!rq->data) { |
1503 | printk(KERN_ERR "%s: confused, missing data\n", | ||
1504 | drive->name); | ||
1503 | blk_dump_rq_flags(rq, write ? "cdrom_pc_intr, write" | 1505 | blk_dump_rq_flags(rq, write ? "cdrom_pc_intr, write" |
1504 | : "cdrom_pc_intr, read"); | 1506 | : "cdrom_pc_intr, read"); |
1505 | goto confused; | 1507 | goto pad; |
1506 | } | 1508 | } |
1507 | /* Transfer the data. */ | 1509 | /* Transfer the data. */ |
1508 | xferfunc(drive, rq->data, thislen); | 1510 | xferfunc(drive, rq->data, thislen); |
@@ -1515,7 +1517,6 @@ static ide_startstop_t cdrom_pc_intr (ide_drive_t *drive) | |||
1515 | if (write && blk_sense_request(rq)) | 1517 | if (write && blk_sense_request(rq)) |
1516 | rq->sense_len += thislen; | 1518 | rq->sense_len += thislen; |
1517 | } else { | 1519 | } else { |
1518 | confused: | ||
1519 | printk (KERN_ERR "%s: cdrom_pc_intr: The drive " | 1520 | printk (KERN_ERR "%s: cdrom_pc_intr: The drive " |
1520 | "appears confused (ireason = 0x%02x). " | 1521 | "appears confused (ireason = 0x%02x). " |
1521 | "Trying to recover by ending request.\n", | 1522 | "Trying to recover by ending request.\n", |
@@ -1524,7 +1525,7 @@ confused: | |||
1524 | cdrom_end_request(drive, 0); | 1525 | cdrom_end_request(drive, 0); |
1525 | return ide_stopped; | 1526 | return ide_stopped; |
1526 | } | 1527 | } |
1527 | 1528 | pad: | |
1528 | /* | 1529 | /* |
1529 | * If we haven't moved enough data to satisfy the drive, | 1530 | * If we haven't moved enough data to satisfy the drive, |
1530 | * add some padding. | 1531 | * add some padding. |