Hello,
Kai Makisara wrote:
I don't think there is anything in the midlevel or low-level code to set the
timeout based on the device characteristics. This is left to the ULD.
Low level driver should configure timeout or retries to a known value iff it
knows what it's doing, when it knows both transport and device-type specific
characteristic.
I am not so optimistic ;-)
AFAICS, the only driver which modifies sdev->timeout is ipr
and it does so only when it knows the device is of certain type. So, I don't
think it will cause any trouble, and using different initialization in
different ULDs is too subtle.
It does not cause trouble now but I think it is an accident waiting to
happen. The ULD probably knows more about the device characteristics than
the low-level driver. (I admit that there are other than device specific
aspects in setting timeouts and these should not be in ULD.)
Yeah, in general, ULD should be in charge for determining default values
but, then again, SCSI ULDs are driving extremely wide variety of devices
hanging off all sorts of transports these days.
What about this variant:
if (SDp->timeout < ST_TIMEOUT)
SDp->timeout = ST_TIMEOUT;
It does guarantee that the timeout is long enough for tape drives. It also
lets the low-level driver set a longer timeout if it has some reason to
make it longer than the ULD does.
I don't know enough about tape devices to determine what's right here.
I think it's better for me to leave st and osst to people who know
better. I'll re-submit without os and osst changes.
Thanks.
--
tejun
-
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