A single "page" in an ABD does not necessarily correspond to one segment in a bio, because of how ZFS does ABD allocations and how it breaks them up with adding them to a bio. Because of this, simply dividing the ABD size by the page size can only ever give a minimum number of segments required, rather than the correct number. Until we can fix that, we'll just make each bio as large as they can be for as many segments as the device queue will permit without needing to split the the bio. This is a little wasteful if we don't intend to put that many segments in the bio, but its not a lot of memory and its only lost until the bio is completed. This also adds a tuneable, vdev_disk_max_segs, to allow setting this value to be set by the operator. This is very useful for debugging. Signed-off-by: Rob Norris <rob.norris@klarasystems.com> (cherry picked from commit a3a438d1bedb0626417cd73ba10b1479a06bef7f) |
||
---|---|---|
.. | ||
freebsd | ||
linux | ||
Makefile.am |