Seguro que no parece que ya hayan pasado cinco años desde que Huawei anunció EROFS como un sistema de archivos de solo lectura diseñado inicialmente para dispositivos Android, pero ha demostrado ser útil en el núcleo principal de Linux para los usuarios de Linux en general con casos de uso interesantes que también están por llegar. alrededor de contenedores y más. Con el kernel Linux 6.4 en desarrollo, hay aún más mejoras en este sistema de archivos de solo lectura.
EROFS con Linux 6.4 gana soporte para soporte de bloque de subpágina que es particularmente útil en el espacio AArch64 donde las páginas más grandes pueden ser más comunes. EROFS de Linux 6.4 también agrega la funcionalidad de prefijos de nombre xattr largos. También hay soporte para dispositivos de bloques aplanados para imágenes de múltiples blobs que se adjuntan a máquinas virtuales.
La solicitud de extracción ya fusionada de Gao Xiang explica:
En este ciclo, está disponible la compatibilidad con bloques de subpáginas para archivos sin comprimir. Se utiliza principalmente para habilitar imágenes de bloques dorados de 4k en arm64 con páginas de 16/64k. Además, los usuarios finales también podrían usar esta característica para crear un manifiesto para referirse directamente a los datos de golden tar.
Además, la compatibilidad con el prefijo de nombre xattr largo también se introduce en este ciclo para evitar demasiados xattrs con el mismo prefijo (por ejemplo, overlayfs xattrs). Es útil para la combinación erofs + overlayfs (como el modelo Composefs): el tamaño de la imagen se reduce en ~14 % y el rendimiento del tiempo de ejecución también mejora ligeramente.
En cuanto al código de prefijos de nombre xattr largo, Jingbo Xu de Alibaba explicó en el anterior serie de parches:
overlayfs usa xattrs para mantener sus propios metadatos. Si tales xattrs se usan mucho, como el modelo de Composefs [1], existe una gran cantidad de xattrs con diversos valores de xattr, pero solo unos pocos nombres de xattr comunes son válidos (trusted.overlay.redirect, trusted.overlay.digest, y tal vez más en el futuro).
…
Vamos a introducir prefijos largos de nombre xattr ahora para arreglar esto. Funcionan de manera similar a los prefijos de nombre predefinidos, excepto que los prefijos de nombre xattr largos son especificados por el usuario.Cuando se usa un prefijo de nombre xattr largo, los prefijos xattr largos compartidos se almacenan en el inodo empaquetado o meta, mientras que la parte final restante del nombre xattr aparte del prefijo de nombre xattr largo se almacenará en erofs_xattr_entry.e_name. e_name está vacío si el nombre xattr coincide exactamente con el prefijo largo del nombre xattr.