ide-cd: fix REQ_QUIET tests in cdrom_decode_status

Original patch (dfa4411cc3) was buggy.
This is a more proper fix which introduces blk_rq_quiet() macro
alleviating the need for dumb, too short caching variables.

Thanks to Helge Deller and Bart for debugging this.

Signed-off-by: Borislav Petkov <petkovbb@gmail.com>
Cc: Jens Axboe <jens.axboe@oracle.com>
Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Reported-and-tested-by: Helge Deller <deller@gmx.de>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
Borislav Petkov 2009-04-30 18:24:34 +02:00 committed by Bartlomiej Zolnierkiewicz
parent b930f964cf
commit 96c1674397
2 changed files with 5 additions and 5 deletions

View File

@ -312,7 +312,6 @@ static int cdrom_decode_status(ide_drive_t *drive, u8 stat)
ide_hwif_t *hwif = drive->hwif; ide_hwif_t *hwif = drive->hwif;
struct request *rq = hwif->rq; struct request *rq = hwif->rq;
int err, sense_key, do_end_request = 0; int err, sense_key, do_end_request = 0;
u8 quiet = rq->cmd_flags & REQ_QUIET;
/* get the IDE error register */ /* get the IDE error register */
err = ide_read_error(drive); err = ide_read_error(drive);
@ -347,7 +346,7 @@ static int cdrom_decode_status(ide_drive_t *drive, u8 stat)
} else { } else {
cdrom_saw_media_change(drive); cdrom_saw_media_change(drive);
if (blk_fs_request(rq) && !quiet) if (blk_fs_request(rq) && !blk_rq_quiet(rq))
printk(KERN_ERR PFX "%s: tray open\n", printk(KERN_ERR PFX "%s: tray open\n",
drive->name); drive->name);
} }
@ -382,7 +381,7 @@ static int cdrom_decode_status(ide_drive_t *drive, u8 stat)
* No point in retrying after an illegal request or data * No point in retrying after an illegal request or data
* protect error. * protect error.
*/ */
if (!quiet) if (!blk_rq_quiet(rq))
ide_dump_status(drive, "command error", stat); ide_dump_status(drive, "command error", stat);
do_end_request = 1; do_end_request = 1;
break; break;
@ -391,14 +390,14 @@ static int cdrom_decode_status(ide_drive_t *drive, u8 stat)
* No point in re-trying a zillion times on a bad sector. * No point in re-trying a zillion times on a bad sector.
* If we got here the error is not correctable. * If we got here the error is not correctable.
*/ */
if (!quiet) if (!blk_rq_quiet(rq))
ide_dump_status(drive, "media error " ide_dump_status(drive, "media error "
"(bad sector)", stat); "(bad sector)", stat);
do_end_request = 1; do_end_request = 1;
break; break;
case BLANK_CHECK: case BLANK_CHECK:
/* disk appears blank? */ /* disk appears blank? */
if (!quiet) if (!blk_rq_quiet(rq))
ide_dump_status(drive, "media error (blank)", ide_dump_status(drive, "media error (blank)",
stat); stat);
do_end_request = 1; do_end_request = 1;

View File

@ -598,6 +598,7 @@ enum {
blk_failfast_transport(rq) || \ blk_failfast_transport(rq) || \
blk_failfast_driver(rq)) blk_failfast_driver(rq))
#define blk_rq_started(rq) ((rq)->cmd_flags & REQ_STARTED) #define blk_rq_started(rq) ((rq)->cmd_flags & REQ_STARTED)
#define blk_rq_quiet(rq) ((rq)->cmd_flags & REQ_QUIET)
#define blk_account_rq(rq) (blk_rq_started(rq) && (blk_fs_request(rq) || blk_discard_rq(rq))) #define blk_account_rq(rq) (blk_rq_started(rq) && (blk_fs_request(rq) || blk_discard_rq(rq)))