Linux dispose-t-il d'appels système pour accéder à toutes les fonctionnalités des systèmes de fichiers qu'il prend en charge?


12

Linux prend en charge de nombreux systèmes de fichiers (par exemple: ext3, NTFS, FAT32, etc.).

Le diagramme suivant montre comment Linux permet à un processus d'accéder aux fichiers:

entrez la description de l'image ici

Supposons donc qu'un processus appelé read()appel système pour lire un fichier, ce qui se passera, c'est que la couche VFS sera accessible, et la couche VFS décidera du pilote de système de fichiers auquel accéder en fonction du système de fichiers de la partition à laquelle le fichier doit être être lu réside sur.

Linux offre de nombreux appels système d'accès aux fichiers (par exemple: read(), write(), rename(), etc.).

Maintenant read()et write()et rename()travaillez sur tous les systèmes de fichiers pris en charge par Linux.

Mais il existe des fonctionnalités spécifiques qui n'existent que sur certains systèmes de fichiers alors qu'elles n'existent pas sur d'autres. Par exemple: sur un système de fichiers NTFS, vous pouvez définir le bit d' archivage pour un fichier, alors que cela ne peut pas être fait sur un système de fichiers ext3.

Maintenant ma question est, Linux a-t-il des appels système pour accéder à toutes les fonctionnalités des systèmes de fichiers qu'il prend en charge? par exemple: Linux a-t-il un appel système pour définir le bit d' archivage d'un fichier sur un système de fichiers NTFS?

Réponses:


10

Linux a-t-il un appel système pour définir le bit d'archivage d'un fichier sur un système de fichiers NTFS?

Dans ce cas particulier, le ntfs-3gpilote exporte les attributs de fichier via des attributs étendus , voir Puis-je définir le bit "Archive" sur un fichier sur NTFS sur Linux?

Le système de fichiers (V) FAT possède les ioctl()mêmes attributs de fichier, mais il utilise une fonction pour y accéder, voir ioctl_fat(2). ( ioctl()est une sorte d'appel système polyvalent, utilisé pour toutes sortes de choses spécifiques à un appareil qui ne justifient pas un véritable appel système.)

Maintenant ma question est, Linux a-t-il des appels système pour accéder à toutes les fonctionnalités des systèmes de fichiers qu'il prend en charge?

Il est difficile de répondre avec certitude , mais il y a eu au moins un exemple du contraire. ext4 prend en charge en interne un horodatage "heure de naissance" pour les fichiers (comme une heure de création réelle, contrairement à ce ctimequi change lors de la modification de l'inode). Mais même si ext4 est le système de fichiers "standard", pendant longtemps, il n'y a eu aucun appel système pour accéder à l'heure de naissance.

Il devrait être pris en charge maintenant, avec l' statx()appel système ajouté dans Linux 4.11 , en avril 2017.

En relation:


3
ntfs! = gras. Au moins, la version du noyau de ntfs n'a aucun moyen de définir ou d'obtenir l'indicateur d'archive, bien que ses en-têtes le définissent. Seul le ntfs-3g basé sur les fusibles semble le prendre en charge (via des attributs étendus, pas des ioctls spéciaux).
Oncle Billy

Ce n'est pas directement lié à la question, mais en complément de votre mention statx, il est désormais pris en charge dans la bibliothèque C et dans la dernière version de coreutils qui a été publiée il y a quelques jours.
Stephen Kitt

@UncleBilly, d'oh, apparemment je ne peux pas lire, mais je pensais automatiquement (v) à la graisse. Merci de l'avoir remarqué, je vais voir si je peux trouver une référence plus appropriée.
ilkkachu
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.