Die Sourcen des VFS sind in fs/
, das zugehörige include file ist
include/linux/fs.h
. Die jeweiligen filesystems sind in fs/ext2/
,
fs/minix/
usw. implementiert und haben ein include file namens
fs_ext2.h
usw. in include/linux
. Die Aufgaben und Quellen des VFS
sind im einzelnen:
binfmt_name.c
, wobei name aout, elf, script, ... sein kann.
fs/block_dev.c
werden generische read()
,
write()
, and fsync()
Funktionen für block devices
implementiert. Die Anfragen werden nicht direkt an den device driver
gegeben, sondern an den Block Buffer (fs/buffer.c
).
fs/buffer.c
wird ein Block Buffer implementiert. Dieser nimmt
Anfragen, Blöcke zu schreiben oder zu lesen entgegen, oder den Buffer
zu leeren (sync). Ist ein Block nicht direkt verfügbar oder soll der
Buffe geleert werden, werden entsprechende Anfragen an den device
driver gequeued. Die Funktion ll_rw_blk
für Anfragen an block devices
wird in drivers/block/ll_rw_blk.c
implementiert. In diesen
Verzeichnissen sind auch die übrigen Quellen zu (block) device drivers.
fs/dcache.c
wird ein Cache für das Suchen von Verzeichnissen
implementiert. Dieser greift nicht auf das filesystem durch, sondern
ist rein generisch: Man kann gefunden Einträge hinzufügen und
nachschauen, ob ein Eintrag schon vorhanden ist.
fs/devices.c
sind die Funktionen, um device driver zu registrieren,
owie einige generische Funktionen zum Zugriff auf devices äquivalent
zu fs/filesystems.c
. Die Anfragen werden, wenn nötig, an den
entsprechenden Treiber weitergereicht.
fs/dquot.c
wird generisch disk quota unterstützt. Es werden
Funktionen konkreter filesystems aufgerufen.
fs/exec.c
ist der Mechanismus zum Registrieren der
Binärformate. In exec.c
werden nur Funktionen des VFS, vornehmlich die
in binfmt_name.c
aufgerufen.
fs/filesystems.c
ist nur die Funktion
sys_setup
, die sämtliche filesystems registriert und das root
filesystem mountet.
fs/open.c
sind Funktionen, um Dateien auf zu beeinflussen: statfs,
fstatfs, truncate, ftruncate, utime, utimes, utime, utimes, access,
chdir, fchdir, chroot, fchmod, chmod, fchown, chown, open, creat,
close, vhangup.
fs/super.c
sind die Funktionen sys_mount
und
sys_umount
sowie register_filesystem
definiert (siehe
unten).