hadr link na adresar

AdaMcPetr petr.adamek na antek.cz
Pondělí Prosinec 18 11:17:12 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).
Hm, tohle beru, s '..' adresarem by byl logicky problem, to jsem si 
neuvedomil. No ale teda jak by to vypadalo na systemu, ktery tohle 
umoznuje, jak definujete pojem "jak se k adresari doslo" to by 
znamenalo si to pamatovat per process, ne? Pak by ale asi  dost 
veci prestalo fungovat, ne? Se symlimkama  X/symlink/.. != X, ale 
aspon pro vsechny procesy, u hardlinku by X/abc/.. != X jen pro 
nektere procesy, pro jine ne, lepe receno X/abc/.. == X/abc/.. jen 
nekdy (podle toho jak jednotlive procesy k tomu adresari dosly). 
Cim vic nad tim premyslim, tak mi pripada, ze by to nejen nic 
neprineslo, ale i neco odneslo:-)


AdaMcPetr
petr.adamek na antek.cz
http://www.antek.cz


Další informace o konferenci Linux