FERRAMENTAS LINUX: Um esforço do Systemd / Microsoft é para um contador global em alterações de bloco / disco chegando ao Kermel Linux 5.15

domingo, 1 de agosto de 2021

Um esforço do Systemd / Microsoft é para um contador global em alterações de bloco / disco chegando ao Kermel Linux 5.15

 

Confira !!


 Um possível contador global para alterações de bloco / disco no Linux que está sendo discutido pela Microsoft e os desenvolvedores do systemd para controlar melhor as alterações por meio de um número monotonicamente crescente em todo o sistema como uma alternativa ao rastreamento por disco existente. Essa funcionalidade agora está enfileirada como parte das mudanças do subsistema de bloco antes da janela de mesclagem do Kernel Linux 5.15 em algumas semanas.

Este contador global para alterações de dispositivo de bloco é procurado para melhor correlacionar eventos para dispositivos que podem acabar reutilizando o mesmo dispositivo, comumente para casos como / dev / sda ou / dev / loop0quando um dispositivo é desconectado e posteriormente reconectado, mas não necessariamente o mesmo dispositivo. O software de espaço do usuário, como o systemd, poderia se beneficiar desse esquema de numeração de todo o sistema para lidar melhor com os eventos e evitar problemas em torno da confusão de reutilização do dispositivo ou eventos que chegam ao espaço do usuário fora de ordem.

Esses patches que fornecem este contador global para alterações de dispositivo de bloco por Matteo Croce da Microsoft foram colocados na fila na quinta-feira para a ramificação Git "for-5.15" do subsistema de bloco.

O compromisso principal resume ainda mais a motivação:

Associar uevents a dispositivos de bloco no espaço do usuário é difícil e ousado: o soquete netlink uevent tem perdas e em sistemas lentos e sobrecarregados tem uma latência muito alta. Dispositivos de bloco não têm proprietários exclusivos no espaço do usuário, qualquer processo pode configurar um (por exemplo, dispositivos de loop). Além disso, os nomes dos dispositivos podem ser reutilizados (por exemplo, loop0 pode ser reutilizado repetidamente). Um processo do espaço do usuário configurando um dispositivo de bloco e observando seus eventos não pode, portanto, dizer com segurança se um evento está relacionado ao dispositivo que acabou de configurar ou a outra instância anterior com o mesmo nome.

Ser capaz de definir um UUID em um dispositivo de loop resolveria as condições de corrida. Mas não permite derivar ordenações de uevents: se você vir um uevent com um UUID que não corresponde ao dispositivo que você está esperando, você não pode dizer se é porque o uevent certo ainda não chegou ou já foi enviado e você perdeu. Portanto, você não pode dizer se deve esperar por isso ou não. 
Associar um número sequencial único e monotonicamente crescente à vida de cada dispositivo de bloco, que pode ser recuperado com um ioctl imediatamente após configurá-lo, permite resolver as condições de corrida com uevents e também permite que os processos do espaço do usuário saibam se devem esperar por o evento de que precisam ou se foi descartado e, portanto, devem seguir em frente.

Além disso, aumente o número de sequência do disco quando a mídia mudar, ou seja, no evento DISK_EVENT_MEDIA_CHANGE.

O número de sequência do disco é exportado via uevents, sysfs e também há um novo BLKGETDISKSEQ ioctl. Assumindo que não há objeções de design de última hora, este código está programado para torná-lo para o Kernel Linux 5.15 como parte do subsistema de bloco pendente para o do  material-5.15.







Fonte

Até a próxima !!

Nenhum comentário:

Postar um comentário