Microsoft prepara melhorias para systemD no kernel Linux 5.15

Suporte total para sistemas de arquivos NTFS finalmente chega ao Linux
microsoft linux

Uma união entre a Micrsoft e desenvolvedores do systemD deve trazer para o kernel Linux 5.15 melhorias com a implementação de um possível contador global para alterações de bloco e disco. Segundo os envolvidos, isso serve para controlar melhor as alterações por meio de um número crescente em todo o sistema. Seria 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 Linux 5.15 em algumas semanas. Portanto, a Microsoft prepara melhorias para systemD no kernel Linux 5.15.

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/loop0 quando um dispositivo é desconectado e posteriormente reconectado, mas não necessariamente o mesmo dispositivo. 

O software do usuário, como o systemd, poderia se beneficiar desse esquema de numeração de todo o sistema para lidar melhor com os eventos. Assim, poderia 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.

Microsoft prepara melhorias para systemD no kernel Linux 5.15

Microsoft prepara melhorias para systemD no kernel Linux 5.15

commit principal resume ainda mais a motivação:

Associar uevents a dispositivos de bloco no espaço do usuário é difícil e ousado. O 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 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. 

Mais detalhes

Contudo, não permite derivar ordenações de uevents. Então, 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 e você perdeu. 

Portanto, associar um número sequencial único e crescente ao tempo de 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. Além disso, permite que os processos do usuário saibam se devem esperar pelo evento de que precisam ou se haverá descarte. Portanto, devem seguir em frente. Por outro lado, 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 por meio de uevents, sysfs e também há um novo BLKGETDISKSEQ ioctl. Se não houver problemas de última hora, este código está programado para fazer parte do Linux 5.15. Mais especificamente no subsistema de bloco pendente para material-5.15.