函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:block\blk-core.c Create Date:2022-07-27 18:34:57
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:bio_attempt_discard_merge

函数原型:bool bio_attempt_discard_merge(struct request_queue *q, struct request *req, struct bio *bio)

返回类型:bool

参数:

类型参数名称
struct request_queue *q
struct request *req
struct bio *bio
651  segments等于Number of discard segments (or ranges) the driver needs to fill in.* Each discard bio merged into a request is counted as one segment.
653  如果segments大于等于queue_max_discard_segments(q)则转到:no_merge
655  如果blk_rq_sectors(req)加bio_sectors(bio)大于blk_rq_get_max_sectors(req, lk_rq_pos() : the current sector* blk_rq_bytes() : bytes left in the entire request* blk_rq_cur_bytes() : bytes left in the current segment* blk_rq_err_bytes() : bytes left till the next error boundary* blk_rq_sectors() : sectors left in the entire )则转到:no_merge
659  rq_qos_merge(q, req, bio)
661  request queue link 等于bio
662  biotail等于bio
663  total data len 加等于 residual I/O count
664  * Number of scatter-gather DMA addr+len pairs after * physical address coalescing is performed.等于segments加1
666  blk_account_io_start(req, false)
667  返回:true
668  no_merge :
669  req_set_nomerge(q, req)
670  返回:false
调用者
名称描述
blk_attempt_plug_mergelk_attempt_plug_merge - try to merge with %current's plugged list*@q: request_queue new bio is being queued at*@bio: new bio being queued*@nr_segs: number of segments in @bio*@same_queue_rq: pointer to &struct request that gets filled in when* another
blk_mq_sched_try_merge
blk_mq_bio_list_mergeIterate list of requests and see if we can merge this bio with any* of them.