|
static uint16_t | nvme_io_cmd (FemuCtrl *n, NvmeCmd *cmd, NvmeRequest *req) |
| nvme处理io类型的commad,识别cmd类型并调用相关函数 更多...
|
|
static void | nvme_update_sq_eventidx (const NvmeSQueue *sq) |
|
static void | nvme_copy_cmd (NvmeCmd *dst, NvmeCmd *src) |
| 从dram中取cmd 更多...
|
|
static void | nvme_process_sq_io (void *opaque, int index_poller) |
| 从sq中取出req,放入to_ftl队列中,交由ftl处理 更多...
|
|
static void | nvme_post_cqe (NvmeCQueue *cq, NvmeRequest *req) |
| 将req实际封装入cq 更多...
|
|
static void | nvme_process_cq_cpl (void *arg, int index_poller) |
| 从to_poller队列中取req,放入cq中,然后通知上层操作已完成 更多...
|
|
static void * | nvme_poller (void *arg) |
| nvme poller线程函数,不断处理sq和生成cq 更多...
|
|
static int | cmp_pri (pqueue_pri_t next, pqueue_pri_t curr) |
|
static pqueue_pri_t | get_pri (void *a) |
|
static void | set_pri (void *a, pqueue_pri_t pri) |
|
static size_t | get_pos (void *a) |
|
static void | set_pos (void *a, size_t pos) |
|
void | nvme_create_poller (FemuCtrl *n) |
| 创建poller线程,以及两个ring queue:to_ftl和to_poller 更多...
|
|
uint16_t | nvme_rw (FemuCtrl *n, NvmeNamespace *ns, NvmeCmd *cmd, NvmeRequest *req) |
| nvme读写命令 更多...
|
|
static uint16_t | nvme_dsm (FemuCtrl *n, NvmeNamespace *ns, NvmeCmd *cmd, NvmeRequest *req) |
| 处理io cmd:dataset management命令 更多...
|
|
static uint16_t | nvme_compare (FemuCtrl *n, NvmeNamespace *ns, NvmeCmd *cmd, NvmeRequest *req) |
| 处理io cmd:compare命令 更多...
|
|
static uint16_t | nvme_flush (FemuCtrl *n, NvmeNamespace *ns, NvmeCmd *cmd, NvmeRequest *req) |
| 处理io cmd:flush命令 更多...
|
|
static uint16_t | nvme_write_zeros (FemuCtrl *n, NvmeNamespace *ns, NvmeCmd *cmd, NvmeRequest *req) |
| 处理io cmd:write zeros命令 更多...
|
|
static uint16_t | nvme_write_uncor (FemuCtrl *n, NvmeNamespace *ns, NvmeCmd *cmd, NvmeRequest *req) |
| 处理io cmd:write uncorrectable命令 更多...
|
|
void | nvme_post_cqes_io (void *opaque) |
| 将剩余的req都填入cq 更多...
|
|