¿Linux tiene llamadas al sistema para acceder a todas las funciones de los sistemas de archivos que admite?

12

Linux admite muchos sistemas de archivos (por ejemplo: ext3, NTFS, FAT32, etc.).

El siguiente diagrama muestra cómo Linux permite que un proceso acceda a los archivos:

ingrese la descripción de la imagen aquí

Entonces, suponga que un proceso llamado la llamada del read()sistema para leer un archivo, lo que sucederá es que se accederá a la capa VFS, y la capa VFS decidirá a qué controlador del sistema de archivos acceder en función del sistema de archivos de la partición a la que el archivo ser leído reside en

Linux ofrece muchas llamadas al sistema de acceso a los archivos (por ejemplo: read(), write(), rename(), etc.).

Ahora read()y write()y rename()el trabajo en todos los sistemas de archivos que soporta Linux.

Pero hay características específicas que existen solo en algunos sistemas de archivos y no existen en otros. Por ejemplo: en un sistema de archivos NTFS, se puede establecer el archivo de bits para un archivo, mientras que esto no puede hacerse en un sistema de archivos ext3.

Ahora mi pregunta es, ¿Linux tiene llamadas al sistema para acceder a todas las funciones de los sistemas de archivos que admite? por ejemplo: no Linux tiene una llamada al sistema para establecer el Archivo de bits para un archivo en un sistema de archivos NTFS?

usuario341642
fuente

Respuestas:

10

¿Linux tiene una llamada al sistema para establecer el bit de archivo para un archivo en un sistema de archivos NTFS?

Para este caso particular, el ntfs-3gcontrolador exporta los atributos del archivo a través de atributos extendidos , consulte ¿Puedo configurar el bit "Archivo" en un archivo en NTFS en Linux?

El sistema de archivos (V) FAT tiene los atributos de archivo similares, pero utiliza una ioctl()función para acceder a ellos, vea ioctl_fat(2). ( ioctl()es una especie de llamada de sistema multipropósito, utilizada para todo tipo de cosas específicas del dispositivo que no garantizan una llamada real del sistema).

Ahora mi pregunta es, ¿Linux tiene llamadas al sistema para acceder a todas las funciones de los sistemas de archivos que admite?

Es difícil responder con seguridad , pero ha habido al menos un ejemplo de lo contrario. ext4 admite internamente una marca de tiempo de "tiempo de nacimiento" para los archivos (como un tiempo de creación real, a diferencia de los ctimecambios en la modificación del inodo). Pero aunque ext4 es el sistema de archivos "estándar", durante mucho tiempo, no hubo una llamada al sistema para acceder a la hora de nacimiento.

Debería ser compatible ahora, con la statx()llamada al sistema agregada en Linux 4.11 , en abril de 2017.

Relacionado:

ilkkachu
fuente
3
ntfs! = gordo. Al menos la versión del kernel de ntfs NO tiene ninguna forma de establecer u obtener el indicador de archivo, aunque sus encabezados lo definen. Solo el ntfs-3g basado en fusibles parece admitirlo (a través de atributos extendidos, no ioctls especiales).
Tío Billy
Esto no está directamente relacionado con la pregunta, pero como complemento de su mención statx, ahora es compatible con la biblioteca C y en la última versión de coreutils que se lanzó hace unos días.
Stephen Kitt
@UncleBilly, por supuesto, aparentemente no puedo leer, pero automáticamente pensé en (v) gordo. Gracias por notar eso, veré si puedo encontrar una referencia más apropiada.
ilkkachu