Re: 2.6.1: media change check fails for busy unplugged device

From: Mike Anderson
Date: Mon Jan 19 2004 - 18:34:29 EST


Andrey Borzenkov [arvidjaar@xxxxxxx] wrote:
> If we unplug busy device (consider mounted USB stick) media change check
> always returns true (no media change happened). It happens because
>
> - device state is set to SDEV_DEL and scsi_prep_fn silently kills any request
> including TEST_UNIT_READY sent by sd_media_changed without propagating any
> information back to caller
>

The silently kill would appear to be the issue. The addition of any
number of additional checks prior to calling scsi_ioctl would not ensure
that as soon as the last check is done the device state has not changed.

We need a change in scsi_wait_req to differentiate that we where not woken
up from scsi_wait_done, but from end_that_request_last.

One way would be to check if rq_status == RQ_SCSI_DONE. I did not see
anything on the request to indicate it was BLKPREP_KILL'd.

James has worked more on the scsi_prep_fn so maybe he has another
suggestion.

-andmike
--
Michael Anderson
andmike@xxxxxxxxxx

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/