Linux ha chiamate di sistema per accedere a tutte le funzionalità dei file system che supporta?


12

Linux supporta molti file system (ad esempio ext3, NTFS, FAT32, ecc.).

Il diagramma seguente mostra come Linux consente a un processo di accedere ai file:

inserisci qui la descrizione dell'immagine

Supponiamo quindi che un processo chiamato read()chiamata di sistema per leggere un file, accada al livello VFS e il livello VFS deciderà a quale driver del file system accedere in base al file system della partizione a cui il file essere letto risiede.

Linux fornisce molte chiamate di sistema per accedere ai file (ad esempio: read(), write(), rename(), etc.).

Adesso read()e write()e rename()funziona su tutti i file system supportati da Linux.

Ma ci sono funzionalità specifiche che esistono solo su alcuni file system mentre non esistono su altri. Ad esempio: su un file system NTFS, è possibile impostare il bit di archiviazione per un file, mentre ciò non può essere fatto su un file system ext3.

Ora la mia domanda è: Linux ha chiamate di sistema per accedere a tutte le funzionalità dei file system che supporta? per esempio: Linux ha una chiamata di sistema per impostare il bit di archivio per un file su un file system NTFS?

Risposte:


10

Linux ha una chiamata di sistema per impostare il bit di archivio per un file su un file system NTFS?

Per questo caso particolare, il ntfs-3gdriver esporta gli attributi del file tramite attributi estesi , vedi Posso impostare il bit "Archive" su un file su NTFS su Linux?

Il file system (V) FAT ha gli attributi di file simili, ma usa una ioctl()funzione per accedervi, vedi ioctl_fat(2). ( ioctl()è una sorta di chiamata di sistema multiuso, utilizzata per tutti i tipi di cose specifiche del dispositivo che non giustificano una vera chiamata di sistema.)

Ora la mia domanda è: Linux ha chiamate di sistema per accedere a tutte le funzionalità dei file system che supporta?

È difficile rispondere con certezza , ma c'è stato almeno un esempio del contrario. ext4 supporta internamente un timestamp "tempo di nascita" per i file (come, un vero tempo di creazione, a differenza di ctimequello che cambia sulla modifica dell'inode). Ma anche se ext4 è il filesystem "standard", per molto tempo non ci sono state chiamate di sistema per accedere all'ora di nascita.

Dovrebbe essere supportato ora, con la statx()chiamata di sistema aggiunta in Linux 4.11 , ad aprile 2017.

Relazionato:


3
ntfs! = grasso. Almeno la versione del kernel di ntfs NON ha alcun modo di impostare o ottenere il flag di archivio, anche se le intestazioni lo definiscono. Solo il ntfs-3g basato su fusibili sembra supportarlo (tramite attributi estesi, non ioctls speciali).
Zio Billy,

Questo non è direttamente correlato alla domanda, ma come complemento della tua menzione statx, è ora supportato nella libreria C e nell'ultima versione di coreutils rilasciata pochi giorni fa.
Stephen Kitt,

@UncleBilly, a quanto pare, non riesco a leggere, ma ho pensato automaticamente a (v) grasso. Grazie per averlo notato, vedrò se riesco a trovare un riferimento più appropriato.
ilkkachu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.