summaryrefslogtreecommitdiffstats
path: root/analysis/loop/sequence_diagram_loop_device_init_exit.txt
blob: 1c04f40c02dc9ffbd7b103a33baecc46b4d00d81 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
title Loop device kernel module
participantgroup #lightyellow Kernel
participant Kernel
participantgroup #lightblue Loop device kernel module
participant Module
participant Loop control
participant Loop device
end
participant MISC
participant Blkdev
participant Blk-mq
participant Blk-settings
participant Blk-core
participant Genhd
end

group Kernel module init
activate Kernel

Kernel->Module:module_init
activate Module
deactivate Kernel
Module->Loop control:loop_init
deactivate Module
activate Loop control
Loop control->MISC:misc_register
deactivate Loop control
activate MISC
note right of MISC:create "loop-control"\nmisc device
Loop control<--MISC:
deactivate MISC
activate Loop control
Loop control->Blkdev:register_blkdev
deactivate Loop control
activate Blkdev
note right of Blkdev:create "loop"\nblock device
Loop control<--Blkdev:
activate Loop control
deactivate Blkdev
Loop control->Genhd:blk_register_region
deactivate Loop control
activate Genhd
note right of Genhd:register device\nnumbers
Loop control<--Genhd:
deactivate Genhd
activate Loop control

loop pre-create loop devices
Loop control->Loop device:loop_add
deactivate Loop control
activate Loop device
Loop device->Blk-mq:blk_mq_alloc_tag_set
activate Blk-mq
deactivate Loop device
Loop device<--Blk-mq:
deactivate Blk-mq
activate Loop device
Loop device->Blk-mq:blk_mq_init_queue
activate Blk-mq
deactivate Loop device
Loop device<--Blk-mq:
deactivate Blk-mq
activate Loop device
Loop device->Blk-settings:blk_queue_max_hw_sectors
activate Blk-settings
deactivate Loop device
Loop device<--Blk-settings:
deactivate Blk-settings

activate Loop device
Loop device->Blk-core:blk_queue_flag_set
activate Blk-core
deactivate Loop device
Loop device<--Blk-core:
deactivate Blk-core

activate Loop device
Loop device->Genhd:alloc_disk
activate Genhd
deactivate Loop device
Loop device<--Genhd:
deactivate Genhd

activate Loop device
Loop device->Genhd:add_disk
activate Genhd
deactivate Loop device
Loop device<--Genhd:
deactivate Genhd

activate Loop device
Loop control<--Loop device:
deactivate Loop device
activate Loop control
end

Module<--Loop control:
deactivate Loop control
activate Module
Kernel<--Module:
deactivate Module
activate Kernel
space 
deactivate Kernel
end

group Kernel module exit
activate Kernel
Kernel->Module:module_exit
deactivate Kernel
activate Module
Module->Loop control:loop_exit
deactivate Module
activate Loop control


loop delete loop devices
Loop control->Loop device:loop_remove
deactivate Loop control

activate Loop device
Loop device->Genhd:del_gendisk
activate Genhd
deactivate Loop device
Loop device<--Genhd:
deactivate Genhd

activate Loop device
Loop device->Blk-core:blk_cleanup_queue
activate Blk-core
deactivate Loop device
Loop device<--Blk-core:
deactivate Blk-core

activate Loop device
Loop device->Blk-mq:blk_mq_free_tag_set
activate Blk-mq
deactivate Loop device
Loop device<--Blk-mq:
deactivate Blk-mq

activate Loop device
Loop device->Genhd:put_disk
activate Genhd
deactivate Loop device
Loop device<--Genhd:
deactivate Genhd

activate Loop device
Loop control<--Loop device:
deactivate Loop device
activate Loop control
end

Loop control->Genhd:blk_unregister_region
deactivate Loop control
activate Genhd
note right of Genhd:delete device\nnumbers
Loop control<--Genhd:
deactivate Genhd
activate Loop control

Loop control->Blkdev:unregister_blkdev
deactivate Loop control
activate Blkdev
note right of Blkdev:delete "loop"\nblock device
Loop control<--Blkdev:
deactivate Blkdev
activate Loop control

Loop control->MISC:misc_deregister
deactivate Loop control
activate MISC
note right of MISC:delete "loop-control"\nmisc device
Loop control<--MISC:
deactivate MISC

activate Loop control
Module<--Loop control:
deactivate Loop control

activate Module
Kernel<--Module:
deactivate Module

activate Kernel
end