函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:flush_end_io

函数原型:static void flush_end_io(struct request *flush_rq, blk_status_t error)

返回类型:void

参数:

类型参数名称
struct request *flush_rq
blk_status_terror
220  q等于q
223  flags等于0
224  fq等于blk_get_flush_queue(q, mq_ctx)
227  blk_account_io_flush(flush_rq)
230  spin_lock_irqsave( & mq_flush_lock, flags)
232  如果非_dec_and_test - decrement a refcount and test if it is 0*@r: the refcount* Similar to atomic_dec_and_test(), it will WARN on underflow and fail to* decrement when saturated at REFCOUNT_SATURATED
233  rq_status等于error
234  spin_unlock_irqrestore( & mq_flush_lock, flags)
235  返回
238  如果rq_status不等于BLK_STS_OKerror等于rq_status
241  hctx等于mq_hctx
242  如果非elevator
243  This helper should only be used for flush request to share tag* with the request cloned from, and both the two requests can't be* in flight at the same time. The caller has to make sure the tag* can't be freed.
244  tag等于负1
245  否则
246  blk_mq_put_driver_tag(flush_rq)
247  internal_tag等于负1
250  running等于flush_queue[flush_running_idx]
251  BUG_ON(flush_pending_idx == flush_running_idx)
254  flush_running_idx异或等于1
258  seq等于blk_flush_cur_seq(rq)
260  BUG_ON(seq != REQ_FSEQ_PREFLUSH && seq != REQ_FSEQ_POSTFLUSH)
261  lk_flush_complete_seq - complete flush sequence*@rq: PREFLUSH/FUA request being sequenced*@fq: flush queue*@seq: sequences to complete (mask of %REQ_FSEQ_*, can be zero)*@error: whether an error occurred*@rq just completed @seq part of its flush sequence,
264  flush_queue_delayed等于0
265  spin_unlock_irqrestore( & mq_flush_lock, flags)