| Function report | 
| Source Code: block\blk-mq-tag.c | Create Date:2022-07-28 17:12:45 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:blk_mq_get_tag
Proto:unsigned int blk_mq_get_tag(struct blk_mq_alloc_data *data)
Type:unsigned int
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| struct blk_mq_alloc_data * | data | 
| 104 | tags = blk_mq_tags_from_data(data) | 
| 111 | If flags & BLK_MQ_REQ_RESERVED Then | 
| 118 | Else | 
| 119 | bt = bitmap_tags | 
| 120 | tag_offset = nr_reserved_tags | 
| 123 | tag = __blk_mq_get_tag(data, bt) | 
| 127 | If flags & BLK_MQ_REQ_NOWAIT Then Return BLK_MQ_TAG_FAIL | 
| 130 | ws = bt_wait_ptr(bt, hctx) | 
| 131 | Do | 
| 139 | blk_mq_run_hw_queue(hctx, false) | 
| 145 | tag = __blk_mq_get_tag(data, bt) | 
| 146 | If tag != -1 Then Break | 
| 149 | sbitmap_prepare_to_wait(bt, ws, & wait, TASK_UNINTERRUPTIBLE) | 
| 151 | tag = __blk_mq_get_tag(data, bt) | 
| 152 | If tag != -1 Then Break | 
| 156 | io_schedule() | 
| 158 | sbitmap_finish_wait(bt, ws, & wait) | 
| 161 | hctx = lk_mq_map_queue() - map (cmd_flags,type) to hardware queue*@q: request queue*@flags: request command flags*@cpu: cpu ctx | 
| 163 | tags = blk_mq_tags_from_data(data) | 
| 164 | If flags & BLK_MQ_REQ_RESERVED Then bt = breserved_tags | 
| 166 | Else bt = bitmap_tags | 
| 174 | If bt != bt_prev Then sbitmap_queue_wake_up(bt_prev) | 
| 177 | ws = bt_wait_ptr(bt, hctx) | 
| 178 | When 1 cycle | 
| 180 | sbitmap_finish_wait(bt, ws, & wait) | 
| 182 | found_tag : | 
| 183 | Return tag + tag_offset | 
| Name | Describe | 
|---|---|
| blk_mq_get_driver_tag | 
| Source code conversion tool public plug-in interface | X | 
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |