[linux-l] Hard links and stale NFS handle

Peter Ross Peter.Ross at alumni.tu-berlin.de
Mi Feb 12 03:27:47 CET 2003


Von Steffen Dettmer:

> * Peter Ross wrote on Mon, Feb 10, 2003 at 12:06 +1100:
> > Nachdem ich Hardlinks auf per NFS exportierte Files angelegt habe,
> > beschwerten sich die NFS-Clients mit "Stale NFS handles".

> Du meinst, das wäre ein generelles Problem? Ich hab eben mal
> testweise ein hardlink angelegt, kann das Öffnen und so... Früher
> hab ich für diskless auch mal ein /bin style exportiert, da
> gibt's auch etliche hard links IIRC.

Nein, nicht jeder Hardlink ist ein Problem, sondern nur einer, der nach
Oeffnen des Files auf dieses angelegt wird.

Also: File ueber NFS oeffnen
      Hard link erstellen
      Stale NFS handle.

Das Schrillste ist, dass das File nur vor kurzem geoeffnet sein musste,
also nicht einmal offen sein musste, um beim naechsten Oeffnen das Stale
NFS handle anzuzeigen. Da konnte sogar zwischenzeitlich sogar das
NFS-Filesystem umountet und wieder mountet worden sein!

Das laesst auf "Reusing" einmal generierter NFS-Filehandle schliessen.
Beim Oeffnen sagt man ja dem Server den Namen, uebergibt also gar kein NFS
handle, sondern bekommt es als Antwort und verwendet es bei den naechsten
Requests. Demnach duerfte "Stale NFS handle" nie die Antwort auf ein
Oeffnen sein! (Es sei denn, der Server cacht welche und ist nun verwirrt)

Desweitern vermute ich, dass die Fileattributes und damit der Linkcounter
Teil des NFS handles sind. Der Teil des Kernelcodes, den ich mir angeguckt
habe, laesst mich das vermuten, aber ganz sicher bin ich mir nicht.
Relativ schlecht bis gar nicht kommentierter Kernel-C-Code ist nicht
unbedingt so leicht zu durchschauen, wie ein Cobol-Prograemmchen;-)

Sollte das der Fall sein, muesste der Code dort deutlich nachgebessert
werden..

Ganz unverdaechtig ist mir aber auch das ReiserFS nicht, welches auf dem
Server liegt. Immerhin ist dieses ja gar kein "echtes Unixisches"
Filesystem und benutzt eigentlich gar keine inodes. Die werden wohl nur
mitgeschleppt, um mit dem Unix-VFS-Ansatz kompatibel zu sein. Eventuell
liegt da der Hund begraben, wenn naemlich die inode-"Emulation" bei
Hardlinks durcheinander kommt. Der inode ist meistens ziemlich egal, wenn
aber ein NFS-Filehandle darueber gebildet wird, geht das schief.

Die Generierung von Filehandles ueber Devicenumbers der Filesysteme und
inode-Nummer ist zumindest bei Sun und BSD-Systemen der Fall, bei Linux
denke ich eher nein, bin aber nicht ganz sicher.

Deshalb die Frage.

Es gruesst
Peter





Mehr Informationen über die Mailingliste linux-l