Passing "1" as the bytes argument instead of "0" means that
get_memory_map would never return an error in the case that
one physical_entry was not enough for the vaddr's map.
This reveals the true cause of the disk corruptions:
libnvme is assuming some of the passed buffers are
physically contiguous, and they are not.