Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:block\blk-merge.c Create Date:2022-07-28 17:05:46
Last Modify:2020-03-12 14:18:49 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:__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

Proto:void __blk_queue_split(struct request_queue *q, struct bio **bio, unsigned int *nr_segs)

Type:void

Parameter:

TypeParameterName
struct request_queue *q
struct bio **bio
unsigned int *nr_segs
300  struct bio * split = NULL
303  Case bio_op( * bio) == REQ_OP_DISCARD
304  Case bio_op( * bio) == REQ_OP_SECURE_ERASE
305  split = blk_bio_discard_split(q, * bio, & bio_split, nr_segs)
306  Break
307  Case bio_op( * bio) == REQ_OP_WRITE_ZEROES
308  split = blk_bio_write_zeroes_split(q, * bio, & bio_split, nr_segs)
310  Break
311  Case bio_op( * bio) == REQ_OP_WRITE_SAME
312  split = blk_bio_write_same_split(q, * bio, & bio_split, nr_segs)
314  Break
315  Default
324  If Not chunk_sectors && how many bio_vec's == 1 && bv_len + bv_offset <= PAGE_SIZE Then
328  nr_segs = 1
329  Break
331  split = lk_bio_segment_split - split a bio in two bios*@q: [in] request queue pointer*@bio: [in] bio to be split*@bs: [in] bio set to allocate the clone from*@segs: [out] number of segments in the bio with the first half of the sectors* Clone @bio, update the
332  Break
335  If split Then
337  bottom bits req flags, * top bits REQ_OP. Use * accessors. |= REQ_NOMERGE
347  bio_set_flag( * bio, BIO_QUEUE_ENTERED)
349  _chain - chain bio completions*@bio: the target bio*@parent: the @bio's parent bio* The caller won't have a bi_end_io called when @bio completes - instead,*@parent's bi_end_io won't be called until both @parent and @bio have
350  lock_split - split a single bio struct into two bio structs*@q: queue containing the bio*@bio: block operation being split*@new_sector: The starting sector for the new bio* The bio request @bio in request queue @q needs to be split into two* bio requests
351  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
352  bio = split
Caller
NameDescribe
blk_queue_splitlk_queue_split - split a bio and submit the second half*@q: [in] request queue pointer*@bio: [in, out] bio to be split* Split a bio into two bios, chains the two bios, submit the second half and* store a pointer to the first half in *@bio
blk_mq_make_request