Dieser Abschnitt beschreibt die internen Abläufe beim Ein- und Aushängen des bs2fs-Containers und von bs2fs-Dateisystemen.
Einhängen des bs2fs-Containers
Das Einhängen des ufs-Dateisystems mit der Eigenschaft bs2fs-Container (mount -o bs2fscontainer...) ist die Voraussetzung für das Einhängen von bs2fs-Dateisystemen. Der bs2fs-Container ist das physikalische Medium, in dem die Dateien von bs2fs-Dateisystemen temporär für die Dauer ihrer Bearbeitung abgelegt sind. Beim Einhängen des bs2fs-Containers wird erwartet, dass er leer ist. Sollte dies aufgrund eines Fehlers in einer vorangegangenen Session nicht der Fall sein, wird der Inhalt beim Einhängen gelöscht.
Ein ufs-Dateisystem kann nur dann als bs2fs-Container eingehängt werden, wenn es beim Anlegen (POSIX-Installationsprogramm) entsprechend gekennzeichnet wurde. Damit wird verhindert, dass ein nicht für die Nutzung als bs2fs-Container vorgesehenes ufs-Dateisystem versehentlich als bs2fs-Container eingehängt wird, wodurch sein Inhalt gelöscht würde. Als zusätzlicher Schutz wird empfohlen, den bs2fs-Container nach Möglichkeit automatisch einzuhängen.
Für die Anwender soll der bs2fs-Container unsichtbar sein. Zugriffe auf den Inhalt des bs2fs-Containers sollen ihnen nur indirekt möglich sein, d.h. durch Zugriff auf die Dateien in den eingehängten bs2fs-Dateisystemen. Diese werden intern auf die Dateien im bs2fs-Container umgelenkt.
Der direkte Zugriff auf den bs2fs-Container sollte nur durch den Systemverwalter und ausschließlich zu Diagnosezwecken erfolgen.
Aushängen des bs2fs-Containers
Der bs2fs-Container kann nur ausgehängt werden, wenn keine bs2fs-Dateisysteme mehr eingehängt sind.
Einhängen eines bs2fs-Dateisystems
Beim Einhängen eines bs2fs-Dateisystems wird im bs2fs-Container ein Verzeichnis mit folgendem Namen angelegt: catid.
userid.
nummer, wobei:
catid Katalogkennung aus dem Operanden ressource des mount-Kommandos userid Benutzerkennung aus dem Operanden ressource des mount-Kommandos nummer Nummer, mit der die mount-Vorgänge für bs2fs-Dateisysteme innerhalb einer Session in chronologischer Reihenfolge nummeriert werden. |
Dieses Verzeichnis dient dazu, Abbilder von Objekten (Datei, Bibliothek, Elementtyp oder Bibliothekselement) eines bs2fs-Dateisystems aufzunehmen, wenn diese mit open() oder opendir() zur Bearbeitung geöffnet werden. Diese Abbilder im bs2fs-Container sind grundsätzlich einfache Dateien, auch wenn das entsprechende Objekt im bs2fs-Dateisystem als Verzeichnis dargestellt wird. Die eingehängten BS2000-Dateien werden somit physikalisch nicht am Einhängepunkt des bs2fs-Dateisystems abgelegt, sondern liegen ("unsichtbar" für den Anwender) in einem für dieses bs2fs-Dateisystem reservierten Verzeichnis des bs2fs-Containers.
Außerdem existieren noch Verzeichnisse auf der obersten Ebene eines bs2fs-Dateisystems. Deren bei open oder opendir erzeugte Abbilddateien stellen jeweils prozesslokale Ansichten dieser Verzeichnisse dar und heißen %userid%pid, wobei userid die BS2000-Benutzerkennung (8 Zeichen mit Blanks) des Aufrufers von open oder opendir ist und pid dessen Prozess-Id, konkret z.B. "%BACH %00123
".
Folgende Tabelle zeigt, wie die Namen der Objekte im bs2fs-Dateisystem auf Dateinamen im bs2fs-Container abgebildet werden:
Typ im BS2000 | Name im bs2fs- | Typ im bs2fs- | Name der Datei im |
DVS-Datei | <datei> | Datei | <datei> |
PLAM-Bibliothek | <bibl> | Verzeichnis | <bibl>% |
Elementtyp | <bibl>/<typ> | Verzeichnis | <bibl>%<typ>% |
Bibliothekselement | <bibl>/<typ>/<elem> | Datei | <bibl>%<typ>%<elem>+<ver> |
wobei
<datei> | Dateiname |
<bibl> | Bibliotheksname |
<typ> | Elementtyp |
<elem> | Elementname |
<ver> | Elementversion |
Folgende Tabelle zeigt diese Abbildung noch einmal für konkrete Beispiele:
Objekt, das mit open() oder opendir() | Name im | Dateiname im |
DVS-Datei SOURCEFILE | sourcefile | sourcefile |
PLAM-Bibliothek MYPLAMLIB | myplamlib | myplamlib% |
Unterverzeichnis vom Typ S der PLAM- | myplamlib/s | myplamlib%s% |
Element SOURCE1 vom Typ S der PLAM- | myplamlib/s/source1 | myplamlib%s%source1+001 |
Die Abbild-Dateien im bs2fs-Container werden beim ersten open() bzw. opendir() auf das entsprechende Objekt angelegt und beim letzten close() bzw. closedir() wieder gelöscht. Für Dateien oder Verzeichnisse, auf die auf andere Weise zugegriffen wird, existieren keine Abbild-Dateien im bs2fs-Container.
Aushängen eines bs2fs-Dateisystems
Beim Aushängen eines bs2fs-Dateisystems wird auch das entsprechende Verzeichnis im bs2fs-Container gelöscht.