1. address_space
1.1. *inode
1.2. *radix_tree_root
1.2.1. (page in page cache)
1.3. *address_space_operations
1.3.1. *writepage()
1.3.2. *readpage()
1.3.2.1. submit_bio
1.3.2.1.1. bio
1.3.2.1.2. generic_make_request
1.3.3. *set_page_dirty()
1.3.4. *migratepage()
1.3.5. *readpages()
2. file
2.1. f_mapping
2.2. f_inode
2.3. f_path
2.3.1. vfsmount
2.3.2. dentry
2.4. *f_op
2.4.1. *read
2.4.1.1. [fs_wrapper]generic_file_read_iter
2.4.1.1.1. do_generic_file_read
2.4.2. *write
2.4.3. *llseet
2.4.4. *open
2.4.5. ...
3. files_struct
3.1. fdtable fdtab
3.1.1. **fd
3.1.2. *close_on_exec
3.1.3. *open_fds
3.1.4. *full_fds_bits
3.2. close_on_exec_init
3.3. open_fds_init
3.4. full_fds_bits_init
4. task_struct
4.1. files
4.2. plug
5. SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count)
5.1. 1 fdget_pos
5.1.1. __fget_light
5.1.1.1. current->files
5.2. 2 vfs_read(f.file, buf, count, &pos)
5.2.1. file->f_op->read
5.3. 3 file_pos_write
6. sys_opoen
6.1. SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode)
6.1.1. *do_sys_open
6.1.1.1. * build_open_flags- [build &op ]
6.1.1.2. *getname
6.1.1.2.1. getname_flags
6.1.1.3. *get_unused_fd_flags
6.1.1.3.1. __alloc_fd(current->files, 0, rlimit(RLIMIT_NOFILE), flags)
6.1.1.4. *do_filp_open
6.1.1.4.1. set_nameidata
6.1.1.4.2. path_openat
6.1.1.5. fd_install
7. nameidata
7.1. path
7.1.1. vfsmount *mnt
7.1.1.1. sb
7.1.1.2. sb_dentry
7.1.2. dentry
7.1.2.1. d_inode
7.1.2.2. dentry *d_parent
7.1.2.3. char d_iname[DNAME_INLINE_LEN]
7.1.2.4. qstr d_name
7.1.2.5. super_block *d_sb
7.2. inode
7.3. filename
7.4. root[path]
8. User land : ssize_t read(int fd, void *buf, size_t count)
9. request_queue
9.1. *request_fn
9.1.1. [while ]rq=blk_fetch_request(q)
9.1.1.1. blk_peek_request
9.1.1.1.1. __elv_next_request
9.1.1.2. blk_fetch_request
9.1.1.2.1. blk_dequeue_request
9.1.2. blk_end_request_all(rq, rv);
9.2. *make_request_fn
9.2.1. *blk_queue_bio(q,bio)
9.2.1.1. blk_queue_split
9.2.1.1.1. generic_make_request
9.2.1.2. el_ret = elv_merge(q, &req, bio)
9.2.1.2.1. ELEVATOR_BACK_MERGE
9.2.1.3. get_request
9.2.1.4. init_request_from_bio(req, bio)
9.2.1.5. current->plug
9.2.1.5.1. [plug]
9.2.1.5.2. [unplug]
9.3. *request list
9.4. __elv_add_request(q, rq, ELEVATOR_INSERT_SORT_MERGE)
9.5. ELEVATOR_FRONT_MERGE
9.6. *elevator
9.6.1. type[cfq,deadline]
9.6.1.1. ops
9.6.1.1.1. elevator_merge_req_fn
9.6.1.1.2. elevator_dispatch_fn
9.6.1.1.3. elevator_add_req_fn
10. request
10.1. list_head queuelist
10.2. bio
10.3. struct gendisk *rq_disk
11. bio
11.1. bio *bi_next
11.2. *bi_io_vect
11.2.1. bio_vect[ ]
11.2.1.1. *page
11.2.1.2. offset
11.2.1.3. lenth
11.3. *bi_bdev
11.4. *bi_end_io
11.4.1. (completion call back)
11.5. bvec_iter
11.5.1. bi_sector
11.5.2. bi_size
11.5.3. bi_idx
11.5.4. bi_bvec_done
12. VFS
12.1. OVER_LOAD_INODE_[F]OPS
12.1.1. inode_operations
12.1.1.1. [MEM_OPS]
12.1.1.1.1. [fs_spec ]ext4_dir_inode_operations
12.1.1.1.2. [fs_spec ]ext4_file_inode_operations
12.1.2. file_operations
12.1.2.1. [MEM_OPS]
12.1.2.1.1. [fs_wrapper]generic_file_write_iter
12.1.2.1.2. [fs_wrapper]generic_file_read_iter
12.1.3. address_space_operations
12.1.3.1. [fs_spec] ext4_readpage
12.1.3.2. [fs_spec] ext4_readpages
12.1.3.3. [fs_spec] ext4_writepage
12.1.3.4. [fs_spec] ext4_writepages
13. block_device
13.1. block device driver
13.1.1. struct gendisk alloc_disk()
13.1.2. assign value to gendisk
13.1.2.1. major
13.1.2.2. first-minor
13.1.2.3. *fops
13.1.2.3.1. open
13.1.2.3.2. release
13.1.2.3.3. ioctl
13.1.2.4. *reques_queue
13.1.2.4.1. blk_mq_init_queue
13.1.2.4.2. blk_init_queue
13.1.2.4.3. blk_alloc_queue (manually)
14. file_system_type ext4_fs_type
14.1. owner = THIS_MODULE
14.2. .name = "ext4"
14.3. .mount = ext4_mount
14.3.1. mount_bdev(fs_type, flags, dev_name, data, ext4_fill_super)