sd_sync_cache() is called for purposes of power management. Under those circumstances a medium removal is no error. The data is lost under any circumstances, so the system may as well sleep. Signed-off-by: Oliver Neukum <oneukum@xxxxxxx> --- drivers/scsi/sd.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index a344220..c39a97e 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -1278,8 +1278,16 @@ static int sd_sync_cache(struct scsi_disk *sdkp) if (res) { sd_print_result(sdkp, res); + if (driver_byte(res) & DRIVER_SENSE) sd_print_sense_hdr(sdkp, &sshdr); + /* + * we need to evaluate the error return + * 0x3a is medium not present + * this is no error here + */ + if ((scsi_sense_valid(&sshdr) && sshdr.asc == 0x3a)) + return 0; } if (res) -- 1.7.7 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html