Make it possible to specify which zone to allocate a bio from, as well
as strongly suggesting this down the stack. Combine common code and
expose a general routine to allocate and copy bios.
Use our own zone for the swap_pager. We should always have room
here. Tell the system to always use this for BIOs that are created
down the stack for this I/O.
Just use g_duplicate_bio() instead of a lame version.
It's simpler, and will unblock faster than the sleeping
version.
When updated for direct dispatch, the sleep in the path for
g_io_transient_map_bio wasn't updated to reflect the fact that we
can't sleep in the direct dispatch case. When we're direct
dispatching, and we can't map the I/O, return with ENOMEM so we queue
the I/O instead of sleeping.
Implement maximum batch size for the disksort algorithm (also called
max car size in the literature). This limits the number of requests
that are batched together before starting a new batch. It has little
effect on the average service time, but can have a large effect on the
worst service time.
Submitted by: emax@