On Monday 06 December 2004 8:42 am, Jens Axboe wrote: > On Mon, Dec 06 2004, Kevin Corry wrote: > > If I recall correctly (and it's been a while since I've looked at that > > code), the bio_set was added because a few DM modules like to initiate > > their own I/O requests (things like snapshots and DM's kcopyd daemon), > > and we felt it was better to allow these modules to each create their > > own mempools to allocate bios from, rather than allocate from the > > single kernel-wide bio pool used by the filesystem layer. > > That is fully correct and also something that eg the bouncing code needs > to be 100% deadlock free. > > > Strictly speaking (and as you mentioned), the slabs in the bio_set are > > unnecessary, and they could use the global bio_slab. But there's > > probably some argument to be made for having separate bio mempools for > > these modules. > > The mempools are needed, the duplicated slabs are not. But that's just a > small part of it, basically the whole allocation and index stuff is 100% > duplicated from bio.c. Even bio_init(). > > > Actually, I also seem to recall discussions with Joe Thornber from > > quite awhile ago about trying to move this bio_set functionality into > > fs/bio.c, to allow other device drivers to create their own private > > bio pools. If you think something like this would be desireable, I can > > try to look into the specifics again. If you think that having the > > single kernel-wide bio pool is sufficient for all filesystems and > > device-drivers (you certainly understand the trade-offs better than I > > do), then I can look into removing the necessary code from dm-io.c > > An abstraction for this would be nice, as there are two users of it then > (dm-io and highmem.c). So if your team would do that, I would sure help > you review and integrate it. > > That's not what I'm arguing against, it's the (almost) wholesale > duplication that's a bit silly. I'll be happy to look into whether this duplication can be removed, and also whether the bio_set stuff could be moved out to bio.c or somewhere else common to the other device-drivers and filesystems. However, I've got a lot of stuff going on right now, so I won't really have time to get to this until after the start of the year (might be able to start looking into it over the holidays if I get everything else done in the next couple weeks). If/When I come up with some patches, I'll let you know. -- Kevin Corry kevcorry@xxxxxxxxxx http://evms.sourceforge.net/