27.12.2012 Aufrufe

Vnode Schnittstelle - Frank Kardel

Vnode Schnittstelle - Frank Kardel

Vnode Schnittstelle - Frank Kardel

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!