hadr link na adresar

Jan Kara jack na ucw.cz
Čtvrtek Prosinec 21 18:59:56 CET 2000


  Ahoj.

> 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).
  Jeste bych si dovolil pridat jeden duvod, ktery mi pripada take dost
podstatny :). Jde o to, ze dosud tvori adresarova struktura acyklicky
graf (symlinky se nepocitaji... Ve vetsine ohledu se chovaji jako
normalni soubory). Kdyz by se povolily hardlinky na adresare, tak
mohou vznika cykly. A pak zacina teprve ta zabava, jak zjistit, kdy
je skutecne nejaky adresar nedostupny (podle poctu odkazu to nejde,
protoze proste mohou vznikat izolovane cykly, ke kterym se z / nedostanete).
Proste kernel by musel implementovat nefalsovany garbage collector
nad celou adresarovou strukturou :-). Ja se tedy radeji spokojim se
symlinky :-))

						Honza


Další informace o konferenci Linux