James Bottomley wrote:
On Thu, 2007-02-01 at 15:02 -0500, Mark Lord wrote:
..
One thing that could be even better than the patch below,
would be to have it perhaps skip the entire bio that includes
the failed sector, rather than only the bad sector itself.
Er ... define "skip over the bio". A bio is simply a block
representation for a bunch of sg elements coming in to the elevator.
Exactly. Or rather, a block of sg_elements from a single point
of request, is it not?
Mostly what we see in SCSI is a single bio per request, so skipping the
bio is really the current behaviour (to fail the rest of the request).
Very good. That's what it's supposed to do.
But if each request contained only a single bio, then all of Jens'
work on IO scheduling would be for nothing, n'est-ce pas?
In the case where a request consists of multiple bio's
which have been merged under a single request struct,
we really should give at least one attempt to each bio.
This way, in most cases, only the process that requested the
failed sector(s) will see an error, not the innocent victims
that happened to get merged onto the end. Which could be very
critical stuff (or not -- it could be quite random).
So the time factor works out to one disk I/O timeout per failed bio.
That's what would have happened with the NOP scheduler anyway.
On the sytems I'm working with, I don't see huge numbers of bad sectors.
What they tend to show is just one or two bad sectors, widely scattered.
So:
I think doing that might address most concerns expressed here.
Have you got an alternate suggestion, James?
Cheers
-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html