|
@@ -737,18 +737,20 @@ static ide_startstop_t idefloppy_transfer_pc1 (ide_drive_t *drive)
|
|
|
return ide_started;
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * idefloppy_should_report_error()
|
|
|
- *
|
|
|
- * Supresses error messages resulting from Medium not present
|
|
|
- */
|
|
|
-static inline int idefloppy_should_report_error(idefloppy_floppy_t *floppy)
|
|
|
+static void ide_floppy_report_error(idefloppy_floppy_t *floppy,
|
|
|
+ idefloppy_pc_t *pc)
|
|
|
{
|
|
|
+ /* supress error messages resulting from Medium not present */
|
|
|
if (floppy->sense_key == 0x02 &&
|
|
|
floppy->asc == 0x3a &&
|
|
|
floppy->ascq == 0x00)
|
|
|
- return 0;
|
|
|
- return 1;
|
|
|
+ return;
|
|
|
+
|
|
|
+ printk(KERN_ERR "ide-floppy: %s: I/O error, pc = %2x, key = %2x, "
|
|
|
+ "asc = %2x, ascq = %2x\n",
|
|
|
+ floppy->drive->name, pc->c[0], floppy->sense_key,
|
|
|
+ floppy->asc, floppy->ascq);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -775,15 +777,8 @@ static ide_startstop_t idefloppy_issue_pc (ide_drive_t *drive, idefloppy_pc_t *p
|
|
|
* a legitimate error code was received.
|
|
|
*/
|
|
|
if (!test_bit(PC_ABORT, &pc->flags)) {
|
|
|
- if (!test_bit(PC_SUPPRESS_ERROR, &pc->flags)) {
|
|
|
- if (idefloppy_should_report_error(floppy))
|
|
|
- printk(KERN_ERR "ide-floppy: %s: I/O error, "
|
|
|
- "pc = %2x, key = %2x, "
|
|
|
- "asc = %2x, ascq = %2x\n",
|
|
|
- drive->name, pc->c[0],
|
|
|
- floppy->sense_key,
|
|
|
- floppy->asc, floppy->ascq);
|
|
|
- }
|
|
|
+ if (!test_bit(PC_SUPPRESS_ERROR, &pc->flags))
|
|
|
+ ide_floppy_report_error(floppy, pc);
|
|
|
/* Giving up */
|
|
|
pc->error = IDEFLOPPY_ERROR_GENERAL;
|
|
|
}
|
|
@@ -993,13 +988,8 @@ static ide_startstop_t idefloppy_do_request (ide_drive_t *drive, struct request
|
|
|
rq->nr_sectors, rq->current_nr_sectors);
|
|
|
|
|
|
if (rq->errors >= ERROR_MAX) {
|
|
|
- if (floppy->failed_pc != NULL) {
|
|
|
- if (idefloppy_should_report_error(floppy))
|
|
|
- printk(KERN_ERR "ide-floppy: %s: I/O error, pc = %2x,"
|
|
|
- " key = %2x, asc = %2x, ascq = %2x\n",
|
|
|
- drive->name, floppy->failed_pc->c[0],
|
|
|
- floppy->sense_key, floppy->asc, floppy->ascq);
|
|
|
- }
|
|
|
+ if (floppy->failed_pc)
|
|
|
+ ide_floppy_report_error(floppy, floppy->failed_pc);
|
|
|
else
|
|
|
printk(KERN_ERR "ide-floppy: %s: I/O error\n",
|
|
|
drive->name);
|