[linux-l] NFS file locking: es geht einfach nicht...

Steffen Dettmer steffen at dett.de
Di Apr 6 08:42:21 CEST 2004


* Peter Ross wrote on Mon, Apr 05, 2004 at 11:25 +1000:
> Steffen Dettmer sagte:
> > sicherlich meistens anders gemeint war ;)). Jetzt kommt flock
> > (was lokal arbeitet) mit einem Fehler zurück (der vom "Netz"/NFS
> > kommt), was doch falsch ist? Er kann das Teil doch lokal locken?
> 
> Er kann das File, was auf dem NFS-Server liegt, unter Linux
> nicht locken - das es einen Fehler zurueckgibt, ist in Ordnung
> - was Dein Anwendungsprogramm damit macht, istDir ueberlassen.

Nein, eben ja nicht:
flock(2) does not  lock  files  over  NFS. 
(man flock). Er darf also nicht über NFS gehen, sondern muss
lokal locken (ist ja in der man page so "spezifiziert"). Na ja,
Details...

> > Wie es ein Linux 2.2 ja auch gemacht hat
> glaube ich nicht, zuerst ist mir das unter einem Linux 2.2
> (Debian potato) aufgefallen.

Vielleicht hatte ich ein älteres 2.2?

> Aber Du darfst ja unter Linux auch zwischrn User- und
> Kernel-NFS-Implementierung waehlen..erstere ist auch weird..

User-NFS hat doch nu überhaupt gar keine Locks, oder?

> > ist das nun eigentlich POSIX? Soll man auf "allen" (POSIX-)
> > Architekturen lockf in solchen Fällen verwenden?
> 
> Vielleicht, aber die Semantik ist anders.

Na, irgendwas muss man ja nehmen sollen...

> > BSD-flock arbeitet mit einem Dateinamen?! Komisch, mein man flock
> > sagt, CONFORMING TO 4.4BSD [...] als int flock(int fd, int
> > operation).
> 
> Entschuldigung, mit Files statt mit Filedeskriptoren, das war Schlamperei
> von mir:
> 
> NOTES
>    Locks are on files, not file descriptors.	That is, file descriptors
>    duplicated through dup(2) or fork(2) do not result in multiple instances
>    of a lock, but rather multiple references to a single lock.  If a process
>    holding a lock on a file forks and the child explicitly unlocks the file,
>    the parent will lose its lock.

Ja, schön! Soll doch so sein? Ein flock heisst ja auch flock und
nicht fdlock (obwohl das nix zu sagen hat, klar) :)

> > Was mich wundert, dass google recht wenig zu dem Thema sagt. Man
> > könnte ja annehmen, dass viele die Distri-Defaults (gar keinen
> > lockd/statd starten) verwenden, und denen daher sowas gar nicht
> > so auffällt? Nein, darüber möchte ich jetzt nicht weiter
> > nachdenken ;-)
> 
> Ganz einfach: Schlamperei ist hier der Default, da das Ganze
> ohnehin wacklig ist..

LOL, also nimmt das eh keiner ernst, meinste? Würde ich ehrlich
gesagt auch nicht, wenn flock keinen Fehler zurückgeben würde
(hab ja da bloss einen Client zu einer Zeit).

> > Danke für den lockf-Tipp und die ganzen Infos!!
> 
> Prima. viel Spass!

Bei so viel Sarkasmus muss ein ";)" ran!! :-)

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.



Mehr Informationen über die Mailingliste linux-l