On Sun, Nov 30 2003, Jeff Garzik wrote:[snip howto]fond of partial completions, as I feel they add complexity, particularly so in my case: I can simply use the same error paths for both the single-sector taskfile and the "everything else" taskfile, regardless of which taskfile throws the error.
It's just a questions of maintaining the proper request state so you
know how much and what part of a request is pending. Requests have been
handled this way ever since clustered requests, that is why
current_nr_sectors differs from nr_sectors. And with hard_* duplicates,
it's pretty easy to extend this a bit. I don't see this as something
complex, and if the alternative you are suggesting (your implementation
idea is not clear to me...) is to fork another request then I think it's
a lot better.
(thinking out loud) Though best for simplicity, I am curious if a succession of "tiny/huge" transaction pairs are efficient? I am hoping that the drive's cache, coupled with the fact that each pair of taskfiles is sequentially contiguous, will not hurt speed too much over a non-errata configuration...
My gut would say rather two 64kb than a 124 and 4kb. But you should do
the numbers, of course :). I'd be surprised if the former wouldn't be
more efficient.