Vnode Schnittstelle - Frank Kardel
Vnode Schnittstelle - Frank Kardel
Vnode Schnittstelle - Frank Kardel
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Dateisystemerweiterungen<br />
4.8 Aufbau einer atf_vnode<br />
Zunächst ist es wichtig, daß die Abstraktion der attributierten Datei aufgebaut wird,<br />
sobald eine solche innerhalb eines Dateisystems angetroffen wird. In der vnode-<strong>Schnittstelle</strong><br />
gibt es genau zwei Operationen (VOP_CREATE, VOP_LOOKUP), die eine Pfadnamenskomponente<br />
in eine vnode-Referenz verwandeln. An dieser Stelle muß überprüft<br />
werden, ob es sich bei der vnode-Referenz um die eines attributierten Dateisystemobjekts<br />
handelt. Ist dieses der Fall, so wird eine neue vnode, die atf_vnode,<br />
aufgebaut. Sie ermöglicht die Realisierung der Kernstrategien. Für reine attributierte<br />
Dateien wäre dieses Vorgehen nicht notwendig, aber die zusätzlichen Kernstrategien<br />
erlauben größere Einsatzmöglichkeiten des Konzeptes der attributierten Dateien.<br />
Immer, wenn eine vnode einer attributierten Datei aufgefunden wird, muß die entsprechende<br />
vnode, die die Kernstrategien realisiert, zurückgeliefert werden. Die Operationen<br />
der atf_vnode führen die vnode-Operationen entsprechend dem angegebenen Kernstrategienstapel<br />
aus. Um nicht die existierende vnode-Struktur für den Prototyp erweitern<br />
zu müssen, wird die zu einer vnode gehörige atf_vnode mit einer Hash-Tabelle<br />
aufgesucht. Weil die Übersetzung eines Pfadnamens immer zuerst die vnode der attributierten<br />
Datei liefert, aber die entsprechende Abstraktion gewährleistet sein muß, ist<br />
diese Übersetzung immer notwendig.<br />
4.9 Aufbau einer attributierten Datei<br />
Eine attributierte Datei erzeugt man, indem man sie mit der pol_push()-Operation an<br />
eine Kernstrategie bindet. Zu diesem Zeitpunkt werden alle damit verbundenen Datenstrukturen<br />
(zusätzliches Verzeichnis, Datei mit die Liste der Strategien) angelegt.<br />
Haben andere Prozesse die Datei schon vorher eröffnet, so arbeiten sie auf der ursprünglichen<br />
Referenz auf die Datei und stellen damit keine Veränderungen fest. Alle<br />
Prozesse, die später auf die attributierte Datei zugreifen, finden wegen der Übersetzung<br />
der attributierten vnode in eine atf_vnode die attributierte Datei vor.<br />
4.10 Abbau einer atf_vnode<br />
Die Deaktivierung einer atf_vnode kann auf zwei Arten geschehen. Entweder gibt es<br />
keine Referenzen mehr auf die atf_vnode; aber es sind noch Strategien angebunden. In<br />
diesem Falle werden einfach alle Datenstrukturen wieder freigegeben. Oder die Freigabe<br />
entsteht durch das Entfernen der letzten Strategie mit der pol_pop()-Operation.<br />
Hier werden die Datenstrukturen soweit aufgeräumt, bis ein leerer Stapel an die<br />
atf_vnode angebunden ist. Die atf_vnode kann aber erst dann freigegeben werden, wenn<br />
keine Referenzen mehr auf sie existieren. Die Operationen verhalten sich in diesem<br />
Falle wie bei einer normalen, nicht attributierten Datei.<br />
92