[linux-l] Lock-Dateien vs. Lock-Verzeichnisse

Jan-Benedict Glaw jbglaw at lug-owl.de
Mo Jul 17 00:45:10 CEST 2006


On Sun, 2006-07-16 22:49:23 +0200, Volker Grabsch <vog at notjusthosting.com> wrote:
>     "mkdir" ist auf jedem Betriebssystem atomisch.

Das Problem ist nicht immer, eine Operation atomar auszuführen,
sondern sie auch _sichtbar_ zu haben.

Wenn ein NFS-Client z.B. ein Verzeichnis anlegt, sieht es ein anderer
Client nicht sofort. Viel schlimmer: wenn er einen mkdir()-Aufruf
macht, muß das nichtmal sofort an den Server übertragen werden,
sondern der Client darf erstmal mit seinem Cache spielen!

Das ist also totaler Mumpitz.

> Aber es widerspricht meiner Alltagserfahrung mit Unix-Systemen,
> auch denen praktisch jeder konkurrierende Zugriff über Lock-Dateien
> geregelt wird, nicht über Verzeichnisse.

...und nichtmal über Dateien, sondern über file locks. Das einzige,
was auch nur _ansatzweise_ funktioniert, ist fcntl(F_SETLK).

> Also ist diese Idee entweder genial und unkonventionell, oder ich
> übersehe einfach einen wichtigen Punkt. Deshalb interessiert mich
> eure Meinung dazu.

Die skizzierte Methode funktioniert einfach nicht :)

> a) überprüfen, ob die Datei schon da ist
> b) Datei öffnen

open(..., O_EXCL), aber das muß nicht zwingend sofort auf den Server
schreiben, wenn es sich um ein Netzwerk-Dateisystem handelt. Ergo ist
selbst das nicht sicher.

> Nun ist aber "mkdir" auf allen Betriebssystemen vorhanden, während
> die konkrete Realisierung von exklusiven Dateien von System zu System
> abweicht. Hinzu kommen Probleme mit buggy Implementierungen von
> Lock-Files. Ich höre z.B. jeden darüber jammern, der NFS einsetzt.

Dateien nutzt man auch nicht zu Locking-Zwecken, sondern file locks :)

> Wenn ein "mkdir" sowohl portabel ist, als auch super für Locking-
> Zwecke funktioniert, wieso wird es nicht benutzt? Oder gibt es

Weil es weder portabel ist, noch funktioniert.

MfG, JBG

-- 
Jan-Benedict Glaw       jbglaw at lug-owl.de    . +49-172-7608481             _ O _
"Eine Freie Meinung in  einem Freien Kopf    | Gegen Zensur | Gegen Krieg  _ _ O
 für einen Freien Staat voll Freier Bürger"  | im Internet! |   im Irak!   O O O
ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: Digital signature
URL         : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20060717/6bf0b6ea/attachment.sig>


Mehr Informationen über die Mailingliste linux-l