OK .. that fixed it. Turned out that I wasn't walking the request bh's
on read of clustered requests (but I was doing so on write).
Reads now work fine, but writes show signs of having some problem. I'll
beat on that later.
I'm particularly concerned about the error behaviour. How should I set
up the end_request code in the case when the request is to be errored?
Recall that my end_request code is presently like this:
io_spin_lock
while (end_that_request_first(req,!req->errors);
// one more time for luck
if (!end_that_request_first(req,!req->errors)
end_that_request_last(req);
io_spin_unlock
and I get the impression from other driver code snippets that a single
end_that_request_first is enough, but looking at the implementation it
can't be. It looks from ll_rw_blk that I should walk the bh chain just
the same in the case of error, no?
Peter
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/