qual seção do kernel gerencia solicitações io?

3

Eu sei que a camada Block I / O na pilha de E / S do Linux gerencia e agenda solicitações de E / S. mas eu não sei onde esse código está. de fato, eu quero ver a seção de código no kernel que corresponde a essa camada.

    
por mR.aTA 16.12.2015 / 10:39

1 resposta

2

O agendamento de IO começa na chamada da função blk_finish_plug, que por si só chamará o método elevator_add_req_fn do agendador de IO.

Este é um exemplo de um trecho de writeback chamando essa função para adicionar novos pedidos de e-mail:

#0  deadline_add_request at block/deadline-iosched.c:102
#1  __elv_add_request at block/elevator.c:717
#2  blk_flush_plug_list at block/blk-core.c:2746
#3  blk_finish_plug at block/blk-core.c:2762
#4  generic_writepages at mm/page-writeback.c:1052
#5  do_writepages at mm/page-writeback.c:1065
#6  writeback_single_inode at fs/fs-writeback.c:388
#7  writeback_sb_inodes at fs/fs-writeback.c:549
#8  writeback_inodes_wb at fs/fs-writeback.c:592
#9  wb_writeback at fs/fs-writeback.c:724
#10 wb_check_background at fs/fs-writeback.c:804
#11 wb_do_writeback at fs/fs-writeback.c:879
#12 bdi_writeback_thread at fs/fs-writeback.c:913
#13 kthread at kernel/kthread.c:96

Você pode dar uma olhada nos arquivos mencionados no rastreamento de pilha, especialmente no método blk_finish_plug do arquivo blk-core.c. Você pode encontrar mais detalhes sobre como o plugging funciona no link

    
por 16.12.2015 / 11:28