Remove the requirement that calls to vn_strategy() be limited to the
DMA capabilities of the underlying device. In particular this fixes issues
with NATA which does not break up large requests when operating on hardware
with limited DMA capabilities. The old ATA driver did break up requests.
vn_strategy() -> spec_strategy(). spec_strategy(), which converts vnode
strategy calls to device strategy calls, now checks the maximum DMA
capability of the device and breaks up large requests to fit.
Old IDE hardware often can't even transfer a whole 64KB of data and there
are many subsystems in the kernel which assume that >= 64KB can be transfered
in a single I/O. Subsystems include: The pageout code, the buffer clustering
code, AIO, and the swapin/swapout code.
Reported-by: YONETANI Tomokazu <qhwt+dfly@les.ath.cx>