summaryrefslogblamecommitdiffstats
path: root/analysis/loop/sequence_diagram_loop_device_init_exit.txt
blob: 1c04f40c02dc9ffbd7b103a33baecc46b4d00d81 (plain) (tree)


























































































































































































                                                     
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