STATFS
Section: Manuel du programmeur Linux (2) Updated: 18 juillet 2003 Index
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
CONFORMITÉ
f_fsid
VOIR AUSSI
TRADUCTION
NOM
statfs, fstatfs - Obtenir des statistiques sur le système de fichiers.
SYNOPSIS
#include <sys/vfs.h>
int statfs(const char *path, struct statfs *buf);
int fstatfs(int fd, struct statfs *buf);
DESCRIPTION
statfs
renvoie des informations à propos d'un système de fichiers montés.
path
est le nom d'un fichier quelconque dans le système de fichiers.
buf
est un pointeur sur une structure
statfs
définie comme suit :
-
struct statfs {
long f_type; /* type de système de fichier */
long f_bsize; /* Taille optimale de bloc */
long f_blocks; /* Nombre total de blocs */
long f_bfree; /* Blocs libres */
long f_bavail; /* Blocs libres pour utilisateurs */
long f_files; /* Nombres de noeuds */
long f_ffree; /* Nombre de noeuds libres */
fsid_t f_fsid; /* ID du système de fichiers */
long f_namelen; /* Longueur maxi des noms de fichier */
long f_spare[6]; /* réservé pour usage ultérieur */
};
Types de systèmes de fichiers :
linux/affs_fs.h:
AFFS_SUPER_MAGIC 0xADFF
linux/efs_fs.h:
EFS_SUPER_MAGIC 0x00414A53
linux/ext_fs.h:
EXT_SUPER_MAGIC 0x137D
linux/ext2_fs.h:
EXT2_OLD_SUPER_MAGIC 0xEF51
EXT2_SUPER_MAGIC 0xEF53
linux/hpfs_fs.h:
HPFS_SUPER_MAGIC 0xF995E849
linux/iso_fs.h:
ISOFS_SUPER_MAGIC 0x9660
linux/minix_fs.h:
MINIX_SUPER_MAGIC 0x137F /* Minix original */
MINIX_SUPER_MAGIC2 0x138F /* Minix 30 caract. */
MINIX2_SUPER_MAGIC 0x2468 /* Minix V2 */
MINIX2_SUPER_MAGIC2 0x2478 /* Minix V2 30 car. */
linux/msdos_fs.h:
MSDOS_SUPER_MAGIC 0x4d44
linux/ncp_fs.h:
NCP_SUPER_MAGIC 0x564c
linux/nfs_fs.h:
NFS_SUPER_MAGIC 0x6969
linux/proc_fs.h:
PROC_SUPER_MAGIC 0x9fa0
linux/smb_fs.h:
SMB_SUPER_MAGIC 0x517B
linux/sysv_fs.h:
XENIX_SUPER_MAGIC 0x012FF7B4
SYSV4_SUPER_MAGIC 0x012FF7B5
SYSV2_SUPER_MAGIC 0x012FF7B6
COH_SUPER_MAGIC 0x012FF7B7
linux/ufs_fs.h:
UFS_MAGIC 0x00011954
linux/xfs_fs.h:
XFS_SUPER_MAGIC 0x58465342
linux/xia_fs.h:
_XIAFS_SUPER_MAGIC 0x012FD16D
Personne ne sait ce que
f_fsid
est supposé contenir (voir plus loin).
Les champs indéfinis pour un système de fichiers donné sont mis à 0.
fstatfs
renvoie les mêmes informations concernant un fichier ouvert référencé par
fd.
VALEUR RENVOYÉE
statfs
et
fstatfs
renvoient zéro s'ils réussissent.
En cas d'échec -1 est renvoyé, et
errno
contient le code d'erreur.
ERREURS
Pour
statfs :
- ENOTDIR
-
Un élément du chemin d'accès
path
n'est pas un répertoire
- ENAMETOOLONG
-
path
est trop long.
- ENOENT
-
Le fichier indiqué par
path
n'existe pas.
- EACCES
-
Un élément du chemin d'accès
path
ne permet pas le parcours.
- ELOOP
-
path
contient une référence circulaire (à travers un lien symbolique).
- EFAULT
-
buf
ou
path
pointent en dehors de l'espace d'adressage accessible
- EIO
-
Une erreur d'entrée/sortie s'est produite pendant la lecture
dans le système de fichiers.
- ENOMEM
-
Pas assez de mémoire pour le noyau.
- ENOSYS
-
Le système de fichiers contenant
path
ne supporte pas l'appel
statfs.
Pour
fstatfs :
- EBADF
-
Fd
n'est pas un descripteur de fichier ouvert valide.
- EFAULT
-
Buf
pointe en dehors de l'espace d'adressage accessible
- EIO
-
Une erreur d'entrée/sortie s'est produite pendant la lecture
dans le système de fichiers.
ENOSYS
Le système de fichiers contenant
fd
ne supporte pas l'appel
statfs.
CONFORMITÉ
La routine
statfs
de Linux a été inspirée par celle de BSD 4.4, mais n'emploie pas
la même structure.
f_fsid
Solaris et POSIX 1003.1-2001 ont un appel-système
statvfs
qui renvoie une
struct statvfs
(définie dans
<sys/statvfs.h>)
contenant un
unsigned long
f_fsid.
Linux, SunOS, HPUX, 4.4BSD ont un appel-système
statfs
qui renvoie une
struct statfs
(définie dans
<sys/vfs.h>)
contenant un
fsid_t
f_fsid,
où
fsid_t
est défini comme une
struct { int val[2]; }.
La même chose vaut pour FreeBSD, sauf que le fichier d'en-tête est
<sys/mount.h>.
L'idée générale est que
f_fsid
contient quelque chose qui permette que la paire
( f_fsid, ino)
identifie un fichier de manière unique.
Certains systèmes utilisent (une variation sur) le numéro de périphérique
combiné au type de système de fichiers.
Plusieurs systèmes restreigne l'accès au champ
f_fsid
pour le Super-user, (et indique zéro pour les utilisateurs normaux), car ce champ
est utilisé dans la manipulation du système de fichiers lors d'exportation par
NFS, et sa valeur peut être considérée comme un élément de sécurite.
Sous certains systèmes, le
fsid
peut être utilisé en second paramètre de
l'appel-système
sysfs().
VOIR AUSSI
TRADUCTION
Christophe Blaess, 1996-2003.
|