Stefan H. schrieb:
> wenn ich auf einem COW-fähigen Dateisystem Die Datei A habe und davon
> die COW-kopien B und C erstelle, was passiert dann, wenn ich A
> überschreibe/lösche?
COW läßt sich am einfachsten verstehen, wenn jeder Datenblock einen
Zähler (Link-Counter; LC) bekommt, der anzeigt von wievielen Stellen aus
er verwendet wird.
Beim Kopieren eines Blocks wird der LC einfach erhöht. In der Ausgangs-
situation ist also jeder Datenblock von A/B/C mit LC=3 markiert. Wenn du
eine der 3 Dateien (egal welche) löschst, dann verringert sich der LC
jeweils auf 2. Wenn du auf eine der 3 Dateien (wieder egal welche)
schreibst, dann werden für den beschriebenen Teil neue Datenblöcke
alloziert, mit LC=1 und für die bisher verwendeten Blöcke wird der LC
auf 2 reduziert.
Ganz allgemein gilt das: wenn du auf einen Block schreibst, der LC>1
hat, dann wird in diesem Moment eine private Kopie des Blocks gemacht
und beschrieben. Deswegen "copy on write".