Ubunlog David Naranjo  

El Kernel de Linux 5.2 en Ext4 permitirá la búsqueda sin distinción de mayúsculas y minúsculas

case-insensitive

Ted Ts’o, el autor de los sistemas de archivos ext2 / ext3 / ext4, aceptó la rama Linux-next, sobre la base de la cual se creará el lanzamiento del Kernel de Linux 5.2, un conjunto de cambios que implementan el soporte para operaciones independientes de casos en el sistema de archivos Ext4.

Los parches también agregan soporte para los caracteres UTF-8 en los nombres de archivos. El modo de operación sin distinción del caso de los caracteres se incluye opcionalmente en el enlace a directorios separados utilizando el nuevo atributo “+ F” (EXT4_CASEFOLD_FL).

Case-insensitive para ext4

Cuando este atributo se instale en el directorio, todas las operaciones con archivos y subdirectorios que se encuentren dentro de ella no se distinguirán entre mayúsculas y minúsculas, incluido el caso se ignorarán al buscar y abrir archivos (por ejemplo, Test.txt, test.txt y test.TXT en directorios similares) será considerado el mismo).

Es decir, que coincide con una entrada de directorio, incluso si el nombre utilizado por el espacio del usuario es no es un byte por byte que coincida con el nombre del disco, pero es una versión equivalente de mayúsculas y minúsculas de la cadena Unicode.

Esta operación se denomina búsqueda de nombre de archivo que no distingue mayúsculas y minúsculas. La característica se configura como un atributo de inodo aplicado a directorios y heredado por sus hijos.

Este atributo solo se puede habilitar en directorios vacíos para sistemas de archivos que admiten la función de codificación, evitando así la colisión de nombres de archivos que solo difieren según el caso.

De forma predeterminada, con la excepción de los directorios con el atributo “+ F”, el sistema de archivos sigue distinguiendo entre mayúsculas y minúsculas. Para controlar la inclusión del modo insensible a mayúsculas y minúsculas, se ofrece un conjunto modificado de utilidades e2fsprogs.

Este parche implementa el soporte real para las búsquedas de nombres de archivos que no distinguen entre mayúsculas y minúsculas en ext4, según el bit de característica y la codificación almacenada en el superbloque.

Un trabajo que tardo bastante tiempo en llegar

Los parches fueron preparados por Gabriel Krisman Bertazi, colaborador de Collabora y se tomaron del séptimo intento después de tres años de desarrollo y eliminación de comentarios.

La implementación no realiza cambios en el formato de almacenamiento en disco y funciona exclusivamente a nivel de cambiar la lógica de comparación de nombres en la función ext4_lookup () y reemplazar el hash en la estructura dcache (Directory Name Lookup Cache).

El valor del atributo “+ F” se almacena dentro de los inodos de los directorios individuales y se aplica a todos los archivos y subdirectorios adjuntos. La información de codificación se almacena en el superbloque.

Por ahora, las búsquedas negativas no se insertan en el dcache, ya que tendrían que ser invalidadas de todos modos, porque no podemos confiar en archivos perdidos.

Esto es malo para el rendimiento, pero requiere un cierto aprovechamiento de la capa vfs para corregirlo.

Podemos vivir sin eso por ahora, al igual que todos los demás.

Para evitar colisiones con los nombres de los archivos existentes, el atributo “+ F” solo se puede establecer en directorios vacíos en sistemas de archivos, en los que el modo de soporte Unicode en los nombres de archivos y directorios se habilita durante la fase de montaje.

Los nombres de los elementos del directorio para los que se activa el atributo “+ F” se traducen automáticamente a minúsculas y se reflejan en esta forma en dcache, pero se almacenan en el disco en la forma originalmente definida por el usuario.

Los nuevos hashes de disco se calculan como el hash de la cadena completa de casos, en lugar de la cadena directamente.

Es decir a pesar del procesamiento de nombres independientemente del caso, los nombres se muestran y se guardan sin perder información sobre el caso de los caracteres (pero el sistema no le permitirá crear un nombre de archivo con los mismos caracteres, pero en un caso diferente).

También permite que el código VFS encuentre rápidamente la entrada correcta en el caché a pesar de que se utilizó una cadena equivalente en una búsqueda anterior

El artículo El Kernel de Linux 5.2 en Ext4 permitirá la búsqueda sin distinción de mayúsculas y minúsculas ha sido originalmente publicado en Ubunlog.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.