diff options
| author | Joe Thornber <joe@fib011235813.fsnet.co.uk> | 2002-12-15 17:17:21 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-12-15 17:17:21 -0800 |
| commit | d68017fa937625abf9b4608dc9e619f485c34462 (patch) | |
| tree | ea1a64fe3e9d3dd7765c3c1075c284f8d1f03886 /include/linux/kernel.h | |
| parent | bef272c4608ecc5b6308a27304cebea9efaf58a6 (diff) | |
[PATCH] dm: bio split fix
The block layer does not honour bio->bi_size when issuing io, instead
it performs io to the complete bvecs. This means we have to change
the bio splitting code slightly.
Given a bio we repeatedly apply one of the following three operations
until there is no more io left in the bio:
1) The remaining io does not cross an io/target boundary, so just
create a clone and issue all of the io.
2) There are some bvecs at the start of the bio that are not split by
a target boundary. Create a clone for these bvecs only.
3) The first bvec needs splitting, use bio_alloc() to create *two*
bios, one for the first half of the bvec, the other for the second
half. A bvec can never contain more than one boundary.
Diffstat (limited to 'include/linux/kernel.h')
0 files changed, 0 insertions, 0 deletions
