criar destino do mapeador de dispositivo

Estou tentando implementar o destino do mapeador de dispositivos, referindo-se aos já existentes dm-linear, dm-snapshot, dm-cache etc. Na minha implementação, preciso executar uma operação de leitura / modificação / gravação em um determinado intervalo de setor. Como o mapeador de dispositivos se comunica diretamente com a camada de blocos, não tenho certeza de quais estruturas / funções de dados usar para ler os setores na memória, modificar o buffer e gravá-los em outro intervalo de setores. No nível do aplicativo, temos syscalls e abaixo temos vfs_read / vfs_write. Existe algo semelhante para a camada do mapeador de dispositivos? Estou preso aqui há muito tempo. Qualquer ajuda será apreciada.