函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:generic_make_request - hand a buffer to its device driver for I/O*@bio: The bio describing the location in memory and on the device.* generic_make_request() is used to make I/O requests of block* devices

函数原型:blk_qc_t generic_make_request(struct bio *bio)

返回类型:blk_qc_t

参数:

类型参数名称
struct bio *bio
1021  ret等于BLK_QC_T_NONE
1023  如果非generic_make_request_checks(bio)则转到:out
1036  如果bio_list
1037  bio_list_add( & bio_list[0], bio)
1038  转到:out
1055  BUG_ON( request queue link )
1056  bio_list_init( & bio_list_on_stack[0])
1057  bio_list等于bio_list_on_stack
1058  循环
1059  q等于queue
1060  flags等于如果 bottom bits req flags, * top bits REQ_OP. Use * accessors.按位与REQ_NOWAITBLK_MQ_REQ_NOWAIT否则0
1069  ret等于make_request_fn(q, bio)
1071  blk_queue_exit(q)
1076  bio_list_init( & lower)
1077  bio_list_init( & same)
1078  当((bio = bio_list_pop( & bio_list_on_stack[0])) != NULL)循环
1079  如果q恒等于queuebio_list_add( & same, bio)
1081  否则bio_list_add( & lower, bio)
1087  否则
1091  否则bio_io_error(bio)
1094  bio等于bio_list_pop( & bio_list_on_stack[0])
1095 bio循环
1096  bio_list = NULL
1098  out :
1099  返回:ret
调用者
名称描述
submit_biosubmit_bio - submit a bio to the block device layer for I/O*@bio: The &struct bio which describes the I/O* submit_bio() is very similar in purpose to generic_make_request(), and* uses that function to do most of the work. Both are fairly rough
__blk_queue_split__blk_queue_split - split a bio and submit the second half*@q: [in] request queue pointer*@bio: [in, out] bio to be split*@nr_segs: [out] number of segments in the first bio* Split a bio into two bios, chain the two bios, submit the second half and
__blk_queue_bounce
blk_throtl_dispatch_work_fnlk_throtl_dispatch_work_fn - work function for throtl_data->dispatch_work*@work: work item being executed* This function is queued for execution when bio's reach the bio_lists[]* of throtl_data->service_queue. Those bio's are ready and issued by this
blk_throtl_drainlk_throtl_drain - drain throttled bios*@q: request_queue to drain throttled bios for* Dispatch all currently throttled bios on @q through ->make_request_fn().