Beim Arbeiten mit Dateien in einem bs2fs-Dateisystem sind einige Besonderheiten (z.B. gegenüber dem Arbeiten mit lokalen POSIX-Dateien) zu beachten, die im Folgenden noch einmal zusammengefasst werden:
Neu erstellte Dateien in einem bs2fs-Dateisystem
Dateien oder Elemente, die in einem bs2fs-Dateisystem neu erstellt werden, erhalten BACL-Attribute. Somit haben die Dateiattribute ACCESS und USER-ACCESS keine Bedeutung für den Schutz.DVS-Wildcard beim mount-Kommando für das bs2fs-Dateisystem
Neue DVS-Dateien (immer vom Typ SAM) können nur angelegt werden, wenn ihr Name der Musterangabe im mount-Kommando und den Syntaxregeln des BS2000 entspricht. Insbesondere ist es nicht möglich, Dateien anzulegen, deren Name mit einem Punkt (.) beginnt.PLAM-Bibliothek: BS2000-Datei-Lock vom Typ Lesen
Beim Zugriff auf eine PLAM-Bibliothek im bs2fs-Dateisystem (z.B. mit ls), wird diese mit einem lesenden Lock ("Lock Type INPUT") im BS2000 versehen. Umbenennen, Löschen und Ändern der Dateiattribute der PLAM-Bibliothek sind dann nicht möglich. Lese-Locks werden vom bs2fs-Dämonen automatisch wieder freigegeben, wenn innerhalb von ca. 20 Sekunden keine bs2fs-Zugriffe auf die PLAM-Bibliothek mehr erfolgt sind.
Locks vom Typ Schreiben ("Lock Type INOUT") auf eine PLAM-Bibliothek gibt der bs2fsd-Dämon dagegen sofort frei, sobald in der Bibliothek kein Element mehr für den auftraggebenden Benutzer geöffnet ist.Löschen von Dateien in einem bs2fs-Dateisystem erfordert Schreibrecht
Das Löschen von Dateien in einen bs2fs-Dateisystem wird generell zurückgewiesen, wenn kein Schreibrecht existiert. In POSIX können auch Dateien ohne Schreibrecht gelöscht werden (vgl. rm mit Rückfrage bzw. mit Schalter -f oder mv mit Rückfrage).Zugriffsrechte für den privilegierten Benutzer
Analog zu den Zugriffsrechten im BS2000 besitzt auch beim Zugriff auf Dateien im bs2fs-Dateisystem nur die Kennung TSOS standardmäßig die gleichen Rechte wie der Eigentümer einer Datei oder einer PLAM-Bibliothek. Die Kennung SYSROOT, der im POSIX ebenfalls die privilegierte uid=0 zugeordnet ist, wird bei bs2fs-Dateizugriffen wie eine beliebige andere, nicht privilegierte Kennung behandelt.
In der POSIX/UNIX-Welt werden privilegierten Kennungen (uid=0) Zugriffe auf Dateien gewährt, die über die Zugriffsmöglichkeiten des Dateieigentümers hinausgehen, z.B. das Lesen einer Datei, obwohl die Schutzbits dem Dateieigentümer kein Lesen erlauben.
In bs2fs-Dateisystemen stehen jedoch auch TSOS nur die Berechtigungen zur Verfügung, die der Eigentümer eines Objekts im BS2000 hat. Beim Einsatz von SECOS (z.B. GUARDS) kann der Eigentümer auch TSOS-Rechte einschränken.Update von Dateien im Textmodus
Beim Update von bestehenden Sätzen in mit ftyp=text eingehängten SAM- oder ISAM-Dateien darf die Satzlänge nicht geändert werden. Die Verkürzung oder Verlängerung eines Satzes führt zu einem EIO-Error. Der write() wird nicht ausgeführt, und nach dem close() sind nur die Teile der BS2000-Datei verändert, die erfolgreich mit write() geschrieben wurden.Zeitstempel
Im bs2fs-Dateisystem werden die mit FSTAT ermittelten Zeitstempel einer Datei bzw. eines Elements wie folgt auf die Felder der stat-Datenstruktur im POSIX abgebildet:BS2000
POSIX
CRE-DATE/TIME
st_ctime
ACC-DATE/TIME
st_atime
CHANG-DATE/TIME
st_mtime
Zu beachten ist hierbei:
Während eine Datei geöffnet ist, werden im bs2fs-Dateisystem die Felder st_atime und st_mtime der ufs-Schattendatei als st_atime und st_mtime der bs2fs-Datei übernommen, nach dem Schließen werden wieder die Werte ausgegeben, die FSTAT im BS2000 liefert. Dies kann dazu führen, dass die mit dem Kommando /SHOW-FILE-ATTRIBUTES angezeigten Änderungszeiten einer Datei, von denen mit ls -l im bs2fs-Dateisystem ermittelten Zeiten abweichen, solange die Datei geöffnet ist.
Die Felder CRE-DATE/TIME und st_ctime werden im BS2000 und POSIX/UNIX unterschiedlich interpretiert. CRE-DATE/TIME gibt im BS2000 den Zeitpunkt des Anlegens einer Datei wieder, st_ctime protokolliert in POSIX/UNIX den Zeitpunkt der
letzten Änderung der Verwaltungsstrukturen wieder (z.B. aufgrund von chmod)
Dateigrößen
Solange eine Datei oder ein Bibliothekselement im bs2fs nach dem Einhängen (mount) nicht geöffnet war, wird bei der Ausgabe des Kommandos ls -l die Größe einer Datei aus der vom BS2000-FSTAT-Makro gelieferten Anzahl von PAM-Seiten mal 2048 berechnet. Erst nachdem eine Datei im bs2fs-Dateisystem geöffnet wurde, erfolgt die Anzeige byte-genau. Dieser Wert kann fehlerhaft sein, falls die Größe der Datei außerhalb des bs2fs verändert wurde.Behandlung von migrierten Dateien
Die Verarbeitung von migrierten Dateien wird nicht unterstützt. Dies hat folgende Auswirkungen:ls, stat(), fstat() zeigen die Namen migrierter Dateien nicht an.
Beim Versuch, eine migrierte Datei zu öffnen, wird errno 8 (
ENOENT
, "No such file or directory") zurückgeliefert.Beim Versuch, eine neue Datei mit dem Namen einer migrierten Datei zu erzeugen, z.B. mit creat(), rename() oder mit den Shell-Kommmandos cp, mv, wird errno 206 (
ENXIO
, "No such device or adress") zurückgeliefert.ENXIO
ist bei bs2fs-Zugriffen eindeutig, d.h. es handelt sich immer um den Versuch, eine Datei mit dem Namen einer migrierten Datei neu zu erzeugen.
X-Bit für Dateiverzeichnisse
Das x-Bit für ein Dateiverzeichnis wird im bs2fs-Dateisystem anders interpretiert als in der UNIX-Welt üblich. Zum Suchen eines Eintrags im Inhaltsverzeichnis einer PLAM-Bibliothek benötigt man im bs2fs-Dateisystem das Leserecht, nicht das Ausführungsrecht.Die Verzeichnisstruktur eines bs2fs-Dateisystems ist durch den mount-Vorgang festlegt und kann nicht verändert werden, da sie die Struktur von PLAM-Bibliotheken abbildet. Verzeichnisse in einem bs2fs-Dateisystem können daher nicht gelöscht oder umbenannt werden, und es ist auch nicht möglich, neue Verzeichnisse anzulegen. Somit lassen sich auch keine neuen PLAM-Bibliotheken mit bs2fs-Mitteln (z.B. mit mkdir) erstellen. Die Zugriffsrechte von Verzeichnissen können ebenfalls nicht geändert werden.
Bibliothekselemente können mit beliebigen Namen entsprechend den Syntaxregeln für PLAM-Bibliotheken in den definierten Verzeichnissen (Typen) angelegt werden, außer in Verzeichnissen, die einen Typ abbilden, der keinen Standardtyp als Basistyp hat.
Bibliothekselemente, die einem Typ zugeordnet sind, der keinen Standardtyp als Basistyp hat, können nur gelesen werden.
Bibliothekselemente eines Typs mit Basistyp L können nur in Bibliothekselemente desselben Typs oder eines anderen Typs mit Basistyp L umbenannt oder kopiert werden. Ebenso können Dateien oder Bibliothekselemente eines Typs mit Basistyp ungleich L nicht in ein Element eines Typs mit Basistyp L umbenannt oder kopiert werden.
Bibliothekselemente sind im bs2fs-Dateisystem unter einem Namen abgelegt, der sich aus dem Elementnamen und der Versionsbezeichnung zusammensetzt:
elementname+ver
Zusätzlich existiert ein Verweis elementname auf die aktuell höchste Version des Elements. Dies hat folgende AuswirkungenWird im bs2fs-Dateisystem eine neue Elementversion mit einer Versionsbezeichnung erzeugt, die höher ist als die bisher höchste, verweist elementname automatisch auf die neue höchste Version.
Das Löschen von elementname (z.B. mit
rm
elementname) hat folgende Wirkung:Zunächst wird die Datei gelöscht, die die höchste Version des Elements enthält.
Falls weitere Versionen des Elements vorhanden sind, verweist elementname anschließend auf die neue höchste Version. Andernfalls wird auch der Verweis elementname gelöscht.Wird eine bestimmte Version eines Elements (z.B. mit
rm
elementname+ver) gelöscht, wird auch der Verweis elementname gelöscht, falls keine weiteren Versionen des Elements existieren.