File Locking ueber NFS
Hallo Liste,
ich hab ein Problem mit File Locking ueber NFS. Auf meinem Suse 8.2 system mit
Kernel 2.4.20 funktioniert flock() nicht, das folgende Programm meldet ENOLCK
wenn es ueber NFS auf eine Datei zugreifen soll.
Auf einem aelteren System mit Suse 8.1 und Kernel 2.4.18 funktioniert es aber.
fcntl() kann ich leider nicht benutzen, da das eigentliche Programm die libgdbm
verwendet und diese eben flock hernimmt.
Bei den mount-options "nolock" anzugeben klappt zwar, ist aber keine akzeptable
Loesung.
Wer kann helfen ?
Bernd
--------------------------------------------
#include
Am Freitag, 8. August 2003 11:46 schrieb Bernd Deffner: Hallo !
ich hab ein Problem mit File Locking ueber NFS. Auf meinem Suse 8.2 system mit Kernel 2.4.20 funktioniert flock() nicht, das folgende Programm meldet ENOLCK wenn es ueber NFS auf eine Datei zugreifen soll.
Auf einem aelteren System mit Suse 8.1 und Kernel 2.4.18 funktioniert es aber.
fcntl() kann ich leider nicht benutzen, da das eigentliche Programm die libgdbm verwendet und diese eben flock hernimmt. Bei den mount-options "nolock" anzugeben klappt zwar, ist aber keine akzeptable Loesung.
Das liegt am SuSE Kernel, allerdings tritt bei uns das Problem auch beim SuSE 8.1 auf. Nach meinem Nachforschungen scheint es am "polyserv-flock-patch" zu liegen. Mit einem Vanilla-Kernel (auf dem Client) funktionieren sowohl flock und fcntl. so long Thomas. -- ======================================================== Thomas Weber, University of Kaiserslautern, Germany Dept. of Theoretical Chemistry http://iris2.chemie.uni-kl.de thw@chemie.uni-kl.de 0631-205-2064 ========================================================
Bernd Deffner wrote:
Hallo Liste,
ich hab ein Problem mit File Locking ueber NFS. Auf meinem Suse 8.2 system mit Kernel 2.4.20 funktioniert flock() nicht, das folgende Programm meldet ENOLCK wenn es ueber NFS auf eine Datei zugreifen soll.
Auf einem aelteren System mit Suse 8.1 und Kernel 2.4.18 funktioniert es aber.
fcntl() kann ich leider nicht benutzen, da das eigentliche Programm die libgdbm verwendet und diese eben flock hernimmt. Bei den mount-options "nolock" anzugeben klappt zwar, ist aber keine akzeptable Loesung.
Wer kann helfen ?
Bernd
--------------------------------------------
#include
#include #include int main(int argc, char **argv) { int fd;
printf("opening %s\n", argv[1]); fd = open(argv[1], O_RDONLY); if (fd < 0) { perror("open"); exit(1); } if (flock(fd, LOCK_SH | LOCK_NB) < 0) { perror("flock"); exit(1); } printf("OK\n"); }
mit dem 2.4.21-4 aus people/mantel funktioniert es. Michael -- ---------------------------------------------------------- Michael Schulz, Institut f. Geophysik, Universität Münster Corrensstr. 24, 48149 Münster Tel.: 0251-8333938, e-mail: michasch@uni-muenster.de
participants (3)
-
Bernd Deffner
-
Michael Schulz
-
Thomas Weber