|
|
3번째 줄: |
3번째 줄: |
| bi_next : struct bio * | | bi_next : struct bio * |
| bi_bdev : struct block_device * | | bi_bdev : struct block_device * |
− | bi_flags : unsigned long
| |
| bi_rw : unsigned long | | bi_rw : unsigned long |
− | bi_iter : struct bvec_iter | + | bi_iter : struct bvec_iter |
− | bi_phys_segments : unsigned int
| + | |
− | bi_seg_front_size : unsigned int
| + | |
− | bi_seg_back_size : unsigned int
| + | |
− | bi_remaining : atomic_t
| + | |
− | *bi_end_io : bio_end_io_t
| + | |
− | *bi_private : void
| + | |
− | bi_vcnt : unsigned short
| + | |
− | bi_max_vecs : unsigned short
| + | |
− | bi_cnt : atomic_t
| + | |
− | *bi_io_vec : struct bio_vec
| + | |
− | *bi_pool : struct bio_set
| + | |
| bi_inline_vecs[0] : struct bio_vec | | bi_inline_vecs[0] : struct bio_vec |
| + | ... |
| } | | } |
| bio1 -right-> bio2 : bi_next | | bio1 -right-> bio2 : bi_next |
| + | bio1 --> bio_vec1 : bi_inline_vecs[0] (Index : bi_iter->bi_idx) |
| + | bio1 --> bio_vec2 : bi_inline_vecs[1] (Index : bi_iter->bi_idx) |
| | | |
| class bio2 << (S,#FF7700) >> { | | class bio2 << (S,#FF7700) >> { |
− | *bi_next : struct bio
| + | bi_next : struct bio * |
− | *bi_bdev : struct block_device
| + | bi_bdev : struct block_device * |
− | bi_flags : unsigned long
| + | |
| bi_rw : unsigned long | | bi_rw : unsigned long |
− | bi_iter : struct bvec_iter | + | bi_iter : struct bvec_iter |
− | bi_phys_segments : unsigned int
| + | |
− | bi_seg_front_size : unsigned int
| + | |
− | bi_seg_back_size : unsigned int
| + | |
− | bi_remaining : atomic_t
| + | |
− | *bi_end_io : bio_end_io_t
| + | |
− | *bi_private : void
| + | |
− | bi_vcnt : unsigned short
| + | |
− | bi_max_vecs : unsigned short
| + | |
− | bi_cnt : atomic_t
| + | |
− | *bi_io_vec : struct bio_vec
| + | |
− | *bi_pool : struct bio_set
| + | |
| bi_inline_vecs[0] : struct bio_vec | | bi_inline_vecs[0] : struct bio_vec |
| + | ... |
| } | | } |
| bio2 --> bio2 : bi_next | | bio2 --> bio2 : bi_next |
| + | bio2 --> bio_vec3 : bi_inline_vecs[0] (Index : bi_iter->bi_idx) |
| | | |
| | | |
| class bio_vec1 << (S,#FF7700) >> { | | class bio_vec1 << (S,#FF7700) >> { |
− | *bv_page : struct page
| + | bv_page : struct page * |
− | bv_len : unsigned int | + | bv_len : unsigned int |
− | bv_offset : unsigned int | + | bv_offset : unsigned int |
| } | | } |
− | bio1 --> bio_vec1 : bi_inline_vecs[0]
| |
− | bio1 --> bio_vec2 : bi_inline_vecs[1]
| |
| | | |
| | | |
| class bio_vec2 << (S,#FF7700) >> { | | class bio_vec2 << (S,#FF7700) >> { |
− | *bv_page : struct page
| + | bv_page : struct page * |
| bv_len : unsigned int | | bv_len : unsigned int |
| bv_offset : unsigned int | | bv_offset : unsigned int |
60번째 줄: |
39번째 줄: |
| | | |
| class bio_vec3 << (S,#FF7700) >> { | | class bio_vec3 << (S,#FF7700) >> { |
− | *bv_page : struct page
| + | bv_page : struct page * |
| bv_len : unsigned int | | bv_len : unsigned int |
| bv_offset : unsigned int | | bv_offset : unsigned int |
| } | | } |
− | bio2 --> bio_vec3 : bi_inline_vecs[0]
| + | |
| | | |
| | | |
| class request_queue << (S,#FF7700) >> { | | class request_queue << (S,#FF7700) >> { |
− | queue_head : struct list_head
| + | elevator : struct elevator_queue * |
− | *last_merge : struct request
| + | |
− | *elevator : struct elevator_queue
| + | |
− | nr_rqs[2] : int
| + | |
− | nr_rqs_elvpriv : int
| + | |
− | | + | |
| root_rl : struct request_list | | root_rl : struct request_list |
− | *request_fn : request_fn_proc
| + | request_fn : request_fn_proc * |
− | *prep_rq_fn : prep_rq_fn
| + | prep_rq_fn : prep_rq_fn * |
− | *unprep_rq_fn : unprep_rq_fn | + | |
− | *merge_bvec_fn : merge_bvec_fn
| + | |
− | *softirq_done_fn : softirq_done_fn
| + | |
− | *rq_timed_out_fn : rq_timed_out_fn
| + | |
− | *dma_drain_needed : dma_drain_needed_fn
| + | |
− | *lld_busy_fn : lld_busy_fn
| + | |
− | | + | |
− | *mq_ops : struct blk_mq_ops
| + | |
− | *mq_map : unsigned int
| + | |
− | *queue_ctx : struct blk_mq_ctx
| + | |
− | nr_hw_queues : unsigned int
| + | |
− | end_sector : sector_t
| + | |
− | *boundary_rq : struct request
| + | |
| delay_work : struct delayed_work | | delay_work : struct delayed_work |
− | backing_dev_info : struct backing_dev_info
| + | ... |
− | queuedata : void
| + | |
− | queue_flags : unsigned long
| + | |
− | id : int
| + | |
− | bounce_gfp : gfp_t
| + | |
− | __queue_lock : spinlock_t
| + | |
− | *queue_lock : spinlock_t
| + | |
− | kobj : struct kobject
| + | |
− | mq_kobj : struct kobject
| + | |
− | | + | |
− | nr_requests : unsigned long
| + | |
− | nr_congestion_on : unsigned int
| + | |
− | nr_congestion_off : unsigned int
| + | |
− | nr_batching : unsigned int
| + | |
− | dma_drain_size : unsigned int
| + | |
− | *dma_drain_buffer : void
| + | |
− | dma_pad_mask : unsigned int
| + | |
− | dma_alignment : unsigned int
| + | |
− | *queue_tags : struct blk_queue_tag
| + | |
− | tag_busy_list : struct list_head
| + | |
− | nr_sorted : unsigned int
| + | |
− | in_flight[2] : unsigned int
| + | |
− | request_fn_active : unsigned int
| + | |
− | rq_timeout : unsigned int
| + | |
− | timeout : struct timer_list
| + | |
− | timeout_list : struct list_head
| + | |
− | icq_list : struct list_head
| + | |
− | | + | |
− | limits : struct queue_limits
| + | |
− | sg_timeout : unsigned int
| + | |
− | sg_reserved_size : unsigned int
| + | |
− | node : int
| + | |
− | | + | |
− | flush_flags : unsigned int
| + | |
− | flush_not_queueable:1 : unsigned int
| + | |
− | flush_queue_delayed:1 : unsigned int
| + | |
− | flush_pending_idx:1 : unsigned int
| + | |
− | flush_running_idx:1 : unsigned int
| + | |
− | flush_pending_since : unsigned long
| + | |
− | flush_queue[2] : struct list_head
| + | |
− | flush_data_in_flight : struct list_head
| + | |
− | *flush_rq : struct request
| + | |
− | mq_flush_lock : spinlock_t
| + | |
− | sysfs_lock : struct mutex
| + | |
− | bypass_depth : int
| + | |
− | | + | |
− | rcu_head : struct rcu_head
| + | |
− | mq_freeze_wq : wait_queue_head_t
| + | |
− | mq_usage_counter : struct percpu_counter
| + | |
− | all_q_node : struct list_head
| + | |
| } | | } |
| request_queue -right-> request : root_rl | | request_queue -right-> request : root_rl |
147번째 줄: |
59번째 줄: |
| | | |
| class request << (S,#FF7700)/linux/blkdev.h >> { | | class request << (S,#FF7700)/linux/blkdev.h >> { |
− | queuelist : struct list_head
| + | q : struct request_queue * |
− | union {
| + | bio : struct bio * |
− | csd : struct call_single_data
| + | biotail : struct bio * |
− | mq_flush_work : struct work_struct
| + | ... |
− | };
| + | |
− | *q : struct request_queue
| + | |
− | *mq_ctx : struct blk_mq_ctx | + | |
− | cmd_flags : u64
| + | |
− | cmd_type : enum rq_cmd_type_bits
| + | |
− | atomic_flags : unsigned long
| + | |
− | cpu : int
| + | |
− | __data_len : unsigned int
| + | |
− | __sector : sector_t
| + | |
− | *bio : struct bio
| + | |
− | *biotail : struct bio
| + | |
− | hash : struct hlist_node
| + | |
− | union {
| + | |
− | rb_node : struct rb_node
| + | |
− | *completion_data : void | + | |
− | };
| + | |
− | union {
| + | |
− | struct {
| + | |
− | *icq : struct io_cq
| + | |
− | *priv[2] : void
| + | |
− | } elv;
| + | |
− | struct {
| + | |
− | seq : unsigned int
| + | |
− | list : struct list_head
| + | |
− | *saved_end_io : rq_end_io_fn
| + | |
− | } flush;
| + | |
− | };
| + | |
− | *rq_disk : struct gendisk
| + | |
− | *part : struct hd_struct
| + | |
− | start_time : unsigned long
| + | |
− | ioprio : unsigned short
| + | |
− | *special : void
| + | |
− | *buffer : char
| + | |
− | tag : int
| + | |
− | errors : int
| + | |
− | __cmd[BLK_MAX_CDB] : unsigned char
| + | |
− | *cmd : unsigned char
| + | |
− | cmd_len : unsigned short
| + | |
− | extra_len : unsigned int
| + | |
− | sense_len : unsigned int
| + | |
− | resid_len : unsigned int
| + | |
− | *sense : void
| + | |
− | deadline : unsigned long
| + | |
− | timeout_list : struct list_head
| + | |
− | timeout : unsigned int
| + | |
− | retries : int
| + | |
− | *end_io : rq_end_io_fn
| + | |
− | *end_io_data : void
| + | |
− | *next_rq : struct request
| + | |
| } | | } |
| request -left-> request_queue : *q | | request -left-> request_queue : *q |
206번째 줄: |
69번째 줄: |
| | | |
| </uml> | | </uml> |
| + | a |