|
@@ -194,6 +194,14 @@ static void cdrom_analyze_sense_data(ide_drive_t *drive,
|
|
bio_sectors = max(bio_sectors(failed_command->bio), 4U);
|
|
bio_sectors = max(bio_sectors(failed_command->bio), 4U);
|
|
sector &= ~(bio_sectors - 1);
|
|
sector &= ~(bio_sectors - 1);
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * The SCSI specification allows for the value
|
|
|
|
+ * returned by READ CAPACITY to be up to 75 2K
|
|
|
|
+ * sectors past the last readable block.
|
|
|
|
+ * Therefore, if we hit a medium error within the
|
|
|
|
+ * last 75 2K sectors, we decrease the saved size
|
|
|
|
+ * value.
|
|
|
|
+ */
|
|
if (sector < get_capacity(info->disk) &&
|
|
if (sector < get_capacity(info->disk) &&
|
|
drive->probed_capacity - sector < 4 * 75)
|
|
drive->probed_capacity - sector < 4 * 75)
|
|
set_capacity(info->disk, sector);
|
|
set_capacity(info->disk, sector);
|