- indicate support for indirect descriptors
- simplify iov functions and let them work in-place, preventing
unnecessary allocations and memcpy() calls in hot code paths
- preallocate all I/O requests on all queues, taking most
allocations out of hot code paths
- check for I/O request validity as early as possible, and return
illegal requests immediately
- check lun format
- check all allocations for success and handle failures gracefully
- add a few more DPRINTFs
- style cleanups