Rewrite the driver to handle 64kb transfers
authormikeb <mikeb@openbsd.org>
Tue, 6 Jun 2017 21:12:01 +0000 (21:12 +0000)
committermikeb <mikeb@openbsd.org>
Tue, 6 Jun 2017 21:12:01 +0000 (21:12 +0000)
commit705639a460c6096ee2abbda9b81bdd82e2e8aad8
tree7dc1cdbaf9881f3176f0df48eeb5046766ed4d1b
parenteb56a81a26003446ec2344fb504abfea42d0562e
Rewrite the driver to handle 64kb transfers

Although several codepaths in the kernel such as coredump
and buffercache read-ahead feature assume that underlying
hardware is capable of handling 64kb transfers without any
issues, xbf was setup to rely on a single descriptor per
transfer which limited the maximum size of an individual
transfer to 11 4k segments amounting to 44k bytes.

To avoid overbooking, a metadata object is allocated for
each transfer to keep track of associated descriptors
limiting the maximum amount of outstanding transfers to
half the ring size.

The issue was reported by Dan Cross <crossd at gmail.com>,
thanks!
sys/dev/pv/xbf.c