page flow in IO flow

发布时间 2023-06-03 12:13:08作者: aspirs

 

1. page add to bio

int f2fs_submit_page_bio(struct f2fs_io_info *fio)
    /* Allocate a new bio */
    bio = __bio_alloc(fio, 1);

    if (bio_add_page(bio, page, PAGE_SIZE, 0) < PAGE_SIZE) {
        bio_put(bio);
        return -EFAULT;
    }
    __submit_bio(fio->sbi, bio, fio->type);

 

2. blo map to scatterlist(sg)

blk_rq_map_sg

blk_rq_map_sg+0x0/0x544
mmc_blk_data_prep+0x220/0x2c8
mmc_blk_rw_rq_prep+0x50/0x16c
mmc_blk_mq_issue_rq+0x238/0xd88
mmc_mq_queue_rq+0x1fc/0x26c
blk_mq_dispatch_rq_list+0x154/0x4ec
blk_mq_do_dispatch_sched+0x64/0x1e8
blk_mq_sched_dispatch_requests+0x12c/0x1b0
__blk_mq_run_hw_queue+0xe4/0x11c
blk_mq_run_work_fn+0x18/0x20

 

3. dma_map_sg,get dma_address