2. Der Start
Der Daemon wird bei jedem Mount gestartet, da immer eine Daemon einen
Mountpunkt bedient. Dann übermittelt er dem Kernel den Namen des Root
Vnodes (z.B. ftp.uni-erlangen.ftp) sowie die Inode-Nummer für diesen
Vnode.
3. Auszüge aus der Funktionsweise
Im Folgenden werden wir einige wichtige Requests des Kernels und die
Reaktionen des Daemons darstellen:
Attributanfragen:
Will der Kern z.B. wissen, ob es sich bei einer Datei um ein Verzeichniss
oder eine reguläre Datei handelt, so muss zunaechst der Dateiname
bestimmt werden. Mit Hilfe seiner lokalen Lookup-Tabelle bestimmt der Daemon
den Namen aus der vom Kern übergebenen Inodenummer. Sodann kann er
mittels ftp-Komandos die gewünschte Informtaion besorgen.
Auslesen von Verzeichnissen:
Auch hier wird analog zu den Attributanfragen ein entsprechendes ftp-Kommando
abgeschickt und die Antwort an den Kern weitergeleitet.
Öffnen einer Datei:
Wird eine Datei geöffnet, so kopiert der Daemon sie in ein lokales
Verzeichniss (Es ist auch denkbar, die Datei im Speicher zu halte, was
aber bei grossen Dateien zu Problemen führen könnte). Als Namen
für die lokale Kopie der Datei benutzt er die Inodenummer und hängt
noch seine Prozess-Id dran. Da die Inodenummern pro gemountetem Filesystem
eindeutig sind, kommt es so zu keinen Überschneidungen.
Lesen einer Datei:
Vor dem Lesen wurde die Datei bereits geöffnet. D.h. es existiert
bereits eine lokale Kopie. Die Leseaufrufe können nun also einfach
in lokale Leseaufrufe umgesetzt werden. Die angeforderten Daten werden
dann in den Kern zurückgeschickt.
4. Strukturen im Daemon
Der Daemon hat lokal eine Lookup-Tabelle. Hier sind die Inode-Nummern
und die Dateinummern eingetragen.
Bei jedem Auslesen eines Verzeichnisses wird üeberpüft, ob
bereits ein Eintrag für die entsprechende Datei angelegt worden ist.
Wenn nicht, so wird sie mit einer neuen, eindeutigen Inodenummer eingetragen.