Some commands require exceptionally large data transfers, and the
kernel driver supports only a limited number of phyiscal segments per
command. To help support this, try to allocate physically contiguous
space via hugetlbfs and fallback to a normal malloc if that fails.
Rather than deal with the nuances of allocating huge pages, use
libhugetlbfs as a dependency.