Certamente não parece que já se passaram cinco anos desde que a Huawei anunciou o EROFS como um sistema de arquivos somente leitura inicialmente projetado para dispositivos Android, mas provou ser útil no kernel Linux principal para usuários do Linux em geral, com casos de uso interessantes também chegando. em torno de contêineres e muito mais. Com o kernel Linux 6.4 em desenvolvimento, há ainda mais melhorias para este sistema de arquivos somente leitura.
EROFS com Linux 6.4 ganha suporte para suporte de bloco de sub-página que é particularmente útil no espaço AArch64 onde páginas maiores podem ser mais comuns. O EROFS do Linux 6.4 também adiciona a funcionalidade de prefixos de nomes xattr longos. Também há suporte para dispositivos de bloco nivelado para imagens multiblob a serem anexadas a máquinas virtuais.
A solicitação pull já mesclada de Gao Xiang explica:
Neste ciclo, o suporte de bloco de subpágina para arquivos descompactados está disponível. É usado principalmente para habilitar imagens de blocos dourados de 4k no arm64 com páginas de 16/64k. Além disso, os usuários finais também podem usar esse recurso para criar um manifesto para se referir diretamente aos dados do golden tar.
Além disso, o suporte a prefixos de nomes xattr longos também é introduzido neste ciclo para evitar muitos xattrs com o mesmo prefixo (por exemplo, overlayfs xattrs). É útil para a combinação erofs + overlayfs (como o modelo Composefs): o tamanho da imagem é reduzido em aproximadamente 14% e o desempenho do tempo de execução também é ligeiramente melhorado.
Quanto ao código longo de prefixos de nome xattr, Jingbo Xu do Alibaba explicou no série de patches:
overlayfs usa xattrs para manter seus próprios metadados. Se tais xattrs forem muito usados, como o modelo Composefs [1], existe uma grande quantidade de xattrs com diversos valores xattr, mas apenas alguns nomes xattr comuns são válidos (trusted.overlay.redirect, Trusted.overlay.digest e talvez mais em o futuro).
…
Vamos introduzir longos prefixos de nome xattr agora para corrigir isso. Eles funcionam de forma semelhante aos prefixos de nome predefinidos, exceto que os prefixos de nome xattr longos são especificados pelo usuário.Quando um prefixo de nome xattr longo é usado, os prefixos xattr longos compartilhados são armazenados no inode compactado ou meta, enquanto a parte final restante do nome xattr além do prefixo de nome xattr longo será armazenada em erofs_xattr_entry.e_name. e_name está vazio se o nome xattr corresponder exatamente ao prefixo longo do nome xattr.