[Drbd-dev] Re: bio_split()...
Jens Axboe
axboe at suse.de
Tue Mar 15 21:24:39 CET 2005
On Tue, Mar 15 2005, Philipp Reisner wrote:
> Hi Jens,
>
> bio_split only works for bios with a single page...
>
> [ from bio.c: ]
> /*
> * split a bio - only worry about a bio with a single page
> * in it's iovec
> */
> struct bio_pair *bio_split(struct bio *bi, mempool_t *pool, int first_sectors)
> {
> struct bio_pair *bp = mempool_alloc(pool, GFP_NOIO);
>
> if (!bp)
> return bp;
>
> BUG_ON(bi->bi_vcnt != 1);
> [...]
>
> In DRBD-0.8 I want to split BIO's that cross a 16 MB boundary.
> In DRBD-0.8 I accept BIOs with more than one page (currently up to
> 32 kB in a single BIO), I thought that bio_split is here
> to handle such situations....
>
> Is there an other way to go ?
> Would you accept a patch that would make bio_split to work with bigger
> BIOs ?
The trick is usually to avoid such build-up in the first place - does
the merge_bvec_fn() not work for you there? bio_split() is just there to
cater to cases of a single page nature, because you cannot refuse to add
a single page.
--
Jens Axboe
More information about the drbd-dev
mailing list