statfs(2) System Calls Manual statfs(2) NUME statfs, fstatfs - obine statistici ale sistemului de fiiere BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include /* sau */ int statfs(const char *path, struct statfs *buf); int fstatfs(int fd, struct statfs *buf); Daca nu avei nevoie de campul f_type, ar trebui sa utilizai in schimb interfaa standard statvfs(3). DESCRIERE Apelul de sistem statfs() returneaza informaii despre un sistem de fiiere montat. path este numele de ruta al oricarui fiier din cadrul sistemului de fiiere montat. buf este un indicator catre o structura statfs definita aproximativ dupa cum urmeaza: struct statfs { __fsword_t f_type; /* Tipul de sistem de fiiere (a se vedea mai jos) */ __fsword_t f_bsize; /* Dimensiunea optima a blocului de transfer */ fsblkcnt_t f_blocks; /* Numarul total de blocuri de date din sistemul de fiiere */ fsblkcnt_t f_bfree; /* Blocuri libere in sistemul de fiiere */ fsblkcnt_t f_bavail; /* Blocuri libere disponibile pentru utilizatorii neprivilegiai */ fsfilcnt_t f_files; /* Numarul total de noduri-i in sistemul de fiiere */ fsfilcnt_t f_ffree; /* Noduri-i libere in sistemul de fiiere */ fsid_t f_fsid; /* ID-ul sistemului de fiiere */ __fsword_t f_namelen; /* Lungimea maxima a numelor de fiiere */ __fsword_t f_frsize; /* Dimensiunea fragmentelor (incepand cu Linux 2.6) */ __fsword_t f_flags; /* Fanioanele de montare ale sistemului de fiiere (incepand cu Linux 2.6.36) */ __fsword_t f_spare[xxx]; /* Octei de umplutura rezervai pentru utilizare ulterioara */ }; Urmatoarele tipuri de sisteme de fiiere pot aparea in f_type: ADFS_SUPER_MAGIC 0xadf5 AFFS_SUPER_MAGIC 0xadff AFS_SUPER_MAGIC 0x5346414f ANON_INODE_FS_MAGIC 0x09041934 /* Nod-i anonim FS (pentru pseudofiiere care nu au nume; de exemplu, epoll, signalfd, bpf) */ AUTOFS_SUPER_MAGIC 0x0187 BDEVFS_MAGIC 0x62646576 BEFS_SUPER_MAGIC 0x42465331 BFS_MAGIC 0x1badface BINFMTFS_MAGIC 0x42494e4d BPF_FS_MAGIC 0xcafe4a11 BTRFS_SUPER_MAGIC 0x9123683e BTRFS_TEST_MAGIC 0x73727279 CGROUP_SUPER_MAGIC 0x27e0eb /* Pseudo sistem de fiiere Cgroup */ CGROUP2_SUPER_MAGIC 0x63677270 /* Pseudo sistem de fiiere Cgroup v2 */ CIFS_MAGIC_NUMBER 0xff534d42 CODA_SUPER_MAGIC 0x73757245 COH_SUPER_MAGIC 0x012ff7b7 CRAMFS_MAGIC 0x28cd3d45 DEBUGFS_MAGIC 0x64626720 DEVFS_SUPER_MAGIC 0x1373 /* Linux 2.6.17 i versiunile anterioare */ DEVPTS_SUPER_MAGIC 0x1cd1 ECRYPTFS_SUPER_MAGIC 0xf15f EFIVARFS_MAGIC 0xde5e81e4 EFS_SUPER_MAGIC 0x00414a53 EXT_SUPER_MAGIC 0x137d /* Linux 2.0 i versiunile anterioare */ EXT2_OLD_SUPER_MAGIC 0xef51 EXT2_SUPER_MAGIC 0xef53 EXT3_SUPER_MAGIC 0xef53 EXT4_SUPER_MAGIC 0xef53 F2FS_SUPER_MAGIC 0xf2f52010 FUSE_SUPER_MAGIC 0x65735546 FUTEXFS_SUPER_MAGIC 0xbad1dea /* Neutilizat */ HFS_SUPER_MAGIC 0x4244 HOSTFS_SUPER_MAGIC 0x00c0ffee HPFS_SUPER_MAGIC 0xf995e849 HUGETLBFS_MAGIC 0x958458f6 ISOFS_SUPER_MAGIC 0x9660 JFFS2_SUPER_MAGIC 0x72b6 JFS_SUPER_MAGIC 0x3153464a MINIX_SUPER_MAGIC 0x137f /* sistemul de fiiere minix original */ MINIX_SUPER_MAGIC2 0x138f /* sistemul de fiiere minix, nume de 30 de caractere */ MINIX2_SUPER_MAGIC 0x2468 /* sistemul de fiiere minix V2 */ MINIX2_SUPER_MAGIC2 0x2478 /* sistemul de fiiere minix V2, nume de 30 de caractere */ MINIX3_SUPER_MAGIC 0x4d5a /* sistemul de fiiere minix V3, nume de 60 de caractere */ MQUEUE_MAGIC 0x19800202 /* sistemul de fiiere pentru coada de mesaje POSIX */ MSDOS_SUPER_MAGIC 0x4d44 MTD_INODE_FS_MAGIC 0x11307854 NCP_SUPER_MAGIC 0x564c NFS_SUPER_MAGIC 0x6969 NILFS_SUPER_MAGIC 0x3434 NSFS_MAGIC 0x6e736673 NTFS_SB_MAGIC 0x5346544e OCFS2_SUPER_MAGIC 0x7461636f OPENPROM_SUPER_MAGIC 0x9fa1 OVERLAYFS_SUPER_MAGIC 0x794c7630 PIPEFS_MAGIC 0x50495045 PROC_SUPER_MAGIC 0x9fa0 /* sistemul de fiiere /proc */ PSTOREFS_MAGIC 0x6165676c QNX4_SUPER_MAGIC 0x002f QNX6_SUPER_MAGIC 0x68191122 RAMFS_MAGIC 0x858458f6 REISERFS_SUPER_MAGIC 0x52654973 ROMFS_MAGIC 0x7275 SECURITYFS_MAGIC 0x73636673 SELINUX_MAGIC 0xf97cff8c SMACK_MAGIC 0x43415d53 SMB_SUPER_MAGIC 0x517b SMB2_MAGIC_NUMBER 0xfe534d42 SOCKFS_MAGIC 0x534f434b SQUASHFS_MAGIC 0x73717368 SYSFS_MAGIC 0x62656572 SYSV2_SUPER_MAGIC 0x012ff7b6 SYSV4_SUPER_MAGIC 0x012ff7b5 TMPFS_MAGIC 0x01021994 TRACEFS_MAGIC 0x74726163 UDF_SUPER_MAGIC 0x15013346 UFS_MAGIC 0x00011954 USBDEVICE_SUPER_MAGIC 0x9fa2 V9FS_MAGIC 0x01021997 VXFS_SUPER_MAGIC 0xa501fcf5 XENFS_SUPER_MAGIC 0xabba1974 XENIX_SUPER_MAGIC 0x012ff7b4 XFS_SUPER_MAGIC 0x58465342 _XIAFS_SUPER_MAGIC 0x012fd16d /* Linux 2.0 i versiunile anterioare */ Majoritatea acestor constante MAGIC sunt definite in /usr/include/linux/magic.h, iar unele sunt codificate in sursele nucleului. Campul f_flags este o masca de bii care indica opiunile de montare pentru sistemul de fiiere. Acesta conine zero sau mai muli din urmatorii bii: ST_MANDLOCK Blocarea obligatorie este permisa pe sistemul de fiiere (a se vedea fcntl(2)). ST_NOATIME Nu se actualizeaza timpii de acces; a se vedea mount(2). ST_NODEV Interzice accesul la fiierele speciale ale dispozitivului pe acest sistem de fiiere. ST_NODIRATIME Nu actualizeaza timpii de acces la directoare; a se vedea mount(2). ST_NOEXEC Execuia de programe nu este permisa pe acest sistem de fiiere. ST_NOSUID Biii set-user-ID i set-group-ID sunt ignorai de exec(3) pentru fiierele executabile de pe acest sistem de fiiere ST_RDONLY Acest sistem de fiiere este montat numai-pentru-citire. ST_RELATIME Actualizeaza atime in raport cu mtime/ctime; a se vedea mount(2). ST_SYNCHRONOUS Scrierile sunt sincronizate cu sistemul de fiiere imediat (a se vedea descrierea lui O_SYNC in open(2)). ST_NOSYMFOLLOW (incepand cu Linux 5.10) Legaturile simbolice nu sunt urmate la rezolvarea rutelor; a se vedea mount(2). Nimeni nu tie ce ar trebui sa conina f_fsid (dar vezi mai jos). Campurile care nu sunt definite pentru un anumit sistem de fiiere sunt stabilite la 0. fstatfs() returneaza aceleai informaii despre un fiier deschis la care se face referire prin descriptorul fd. VALOAREA RETURNATA In caz de succes, se returneaza zero. In caz de eroare, se returneaza -1, iar errno este configurata pentru a indica eroarea. ERORI-IEIRE EACCES (statfs()) Permisiunea de cautare este refuzata pentru o componenta a prefixului rutei path; (a se vedea i path_resolution(7).) EBADF (fstatfs()) fd nu este un descriptor de fiier deschis valid. EFAULT buf sau path indica o adresa nevalida. EINTR Apelul a fost intrerupt de un semnal; a se vedea signal(7). EIO A aparut o eroare de In/Ie in timpul citirii din sistemul de fiiere. ELOOP (statfs()) Prea multe legaturi simbolice au fost intalnite in traducerea path. ENAMETOOLONG (statfs()) path este prea lunga. ENOENT (statfs()) Fiierul menionat de path nu exista. ENOMEM Nu a fost disponibila suficienta memorie pentru nucleu. ENOSYS Sistemul de fiiere nu accepta acest apel. ENOTDIR (statfs()) O componenta a prefixului rutei path nu este un director. EOVERFLOW Unele valori erau prea mari pentru a fi reprezentate in structura returnata. VERSIUNI Campul f_fsid Solaris, Irix i POSIX au un apel de sistem statvfs(2) care returneaza o struct statvfs (definita in ) coninand un unsigned long f_fsid. Linux, SunOS, HP-UX, 4.4BSD au un apel de sistem statfs() care returneaza o struct statfs (definita in ) coninand o fsid_t f_fsid, unde fsid_t este definit ca o structura struct { int val[2]; }. Acelai lucru este valabil i pentru FreeBSD, cu excepia faptului ca acesta utilizeaza fiierul de includere . Ideea generala este ca f_fsid conine unele elemente aleatorii astfel incat perechea (f_fsid,ino) determina in mod unic un fiier. Unele sisteme de operare utilizeaza (o variaie) numarul dispozitivului sau numarul dispozitivului combinat cu tipul sistemului de fiiere. Mai multe sisteme de operare restricioneaza divulgarea campului f_fsid numai superutilizatorului (i o reduc la zero pentru utilizatorii neprivilegiai), deoarece acest camp este utilizat in gestionarul de fiier al sistemului de fiiere atunci cand este exportat NFS, iar divulgarea sa reprezinta o problema de securitate. In unele sisteme de operare, fsid poate fi utilizat ca al doilea argument al apelului de sistem sysfs(2). STANDARDE Linux. ISTORIC Linux statfs() a fost inspirat de cel din 4.4BSD (dar nu utilizeaza aceeai structura). Apelurile de sistem originale Linux statfs() i fstatfs() nu au fost concepute inand cont de dimensiunile extrem de mari ale fiierelor. Ulterior, Linux 2.6 a adaugat noile apeluri de sistem statfs64() i fstatfs64() care utilizeaza o noua structura, statfs64. Noua structura conine aceleai campuri ca structura originala statfs, dar dimensiunile diferitelor campuri sunt marite, pentru a permite fiiere de dimensiuni mari. Funciile de invaluire glibc statfs() i fstatfs() trateaza in mod transparent diferenele din nucleu. LSB a depreciat apelurile de biblioteca statfs() i fstatfs() i ne spune sa folosim in schimb statvfs(3) i fstatvfs(3). NOTE Tipul __fsword_t utilizat pentru diverse campuri in definiia structurii statfs este un tip intern glibc, care nu este destinat utilizarii publice. Acest lucru lasa programatorul intr-o mica enigma atunci cand incearca sa copieze sau sa compare aceste campuri la variabile locale intr-un program. Utilizarea unsigned int pentru astfel de variabile este suficienta pe majoritatea sistemelor. Unele sisteme au doar , alte sisteme au, de asemenea, , unde primul il include pe cel de-al doilea. Deci, se pare ca includerea primului este cea mai buna alegere. ERORI De la Linux 2.6.38 pana la i inclusiv Linux 3.1, fstatfs() a euat cu eroarea ENOSYS pentru descriptorii de fiier creai de pipe(2). CONSULTAI I stat(2), statvfs(3), path_resolution(7) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.15 17 mai 2025 statfs(2)