This document summarizes and compares the function call flow of the Linux NVMe driver on legacy versions and newer versions that use blk-mq.
In legacy versions before 3.19, bios bypass the block layer and are directly submitted to the NVMe driver. In versions 3.19 and later, bios go through blk-mq and are converted to requests that are queued to the NVMe driver.
The document outlines the key steps in the function call flow for legacy versions, which include converting bios to iods and submitting them, as well as setting up callback information. It then describes the similar but modified process for blk-mq versions, which includes building requests from bios, flushing requests between software queues, and