On a related hardware note:
FWIW, most ATA controllers have scatter/gather tables that terminate
themselves by a bit in the final s/g entry. The 90% case needs to know
the last scatterlist entry, at the end of the s/g walk.
So however this all gets worked out, please make sure not to unduly
punish libata controllers with an expensive sg_last() inside a loop, or
something like that. :)
Jeff
-