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:
parent
b930f964cf
commit
96c1674397
|
@ -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;
|
||||||
|
|
|
@ -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)))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue