hadr link na adresar

Miloslav Trmac mirek na linux.localhost
Sobota Prosinec 16 13:50:15 CET 2000


On 16 Dec 2000 04:23:15 +0100, Milan Kerslager wrote:
>V adresari by musela by definovana polozka 'pocet odkazu', jako je tomu v
>i-nodech. Pri ruseni adresare by se musel sledovat pocet zbyvajicich
>odkazu a pripadne adresar jeste ponechat.
Ale kazdy adresar *ma* svuj i-node (v nejstarsich unixech jste mohl
napr. 'cat /' jako by to byl normalni soubor) a pocitani odkazu problem neni. 

>Fsck by muselo kontrolovat
>konzistenci teto polozky a skutecneho stavu.
Stejne jako to dela u hard linku na normalni soubory.

>Protoze byste na prvni pohled
>nerozeznal, ze to je pevna linka, prinaselo by to dost doplnujicich
>zmatku. Platilo by stejne omezeni, jako pro pevne odkazy na soubory -
>nemohl byste prekrocit hranici oddilu (partition, resp. prislusneho
>filesystemu, pokud oddily nepouzivate). Prava by byla stejna jako u
>ciloveho adresare (analogie pevne linky).
Dusledek hard linku je, ze neni zadny "cilovy" adresar - vsechny linky
na i-node jsou stejne "puvodni". Skutecny problem je v adresarove
polozce '..'. Kdyz mate adresar X linkovan pod jmeny /foo a /bar/baz,
ma .. ukazovat na / nebo na /bar? "Spravne" reseni je / pro pristup
pres /foo and /bar pro pristup pres /bar/baz, ale to znamena, ze '..'
nemuze v adresari byt fyzicky obsazena a musi byt simulovana kernelem
(ktery by musel pro kazdy adresar nejak udrzovat plnou cestu, jak se
k nemu doslo; BTW myslim, ze Linux to ve sve dentry cache dela...).

>Celkove by to tedy neprineslo nic navic, jen problemy. Nedalo by se to
>pouzit treba jako u souboru pro zmenu chovani programu nebo pro usporu
>mista (evidentne spocitatelnou a viditelnou). Stejneho efektu dosahnete
>pomoci symbolicke linky. Dokonce lepsiho (zejmena nekonzistence muzete
>resit sam, nepotrebujete fsck), proto to neni potreba.
Prave se symlinky je ten samy problem: je-li /foo symlink na /bar/baz,
je /foo/.. doslova /bar/baz/.., tedy /bar. Jinymi slovy, X/symlink/.. != X.
Pravda je, ze to vetsinou tak moc nevadi.

Pokud by kernel povolil hard linky, musel by tento problem nejak resit.
Takze se problem neresi, aplikace maji k dispozici podobne funkce pomoci
symlinku a musi ho resit samy (jako to dela napr. mc).
	Mirek


Další informace o konferenci Linux