On 09/10/10 11:17, Miroslav Lachman:
Je to uz nekolik let, co jsem do kodu GLABEL koukal - a pokud si to
vybavuju spatne, tak on je GLABEL docela mrska. Nektere datove
struktury, ktere pojmenovava, proste originalne zadny prostor pro text
jmena nemaji. A tak si je strka "nakonec".

Je to ale tak trochu "divoka skladka"

Je to porad tak, ze se metadata zapisuji nakonec

Metadata na konec providera uklada kazdy GEOM modul, ktery si
neco musi ulozit

Jen pro poradek - zdaleka ne kazdy. Takovy geom_part_mbr si nic na konec neuklada. A dokonce i ten, ktery ani, tak ne vzdy. Coz je pripad zrovan napriklad glabel U "znamych typu partition", ktere uz samy o sobe nejaky label maji to glabel uklada tam.

> ale zaroven by pak mel vzhledem k dalsim GEOM modulum
exportovat mensi velikost toho "zarizeni", takze dalsi metadata by se
mela zapsat o sektor drive atd. A vetsinou to tak i funguje, ale zrovna
v tomhle pripade dochazi k nejake kolizi a jelikoz ja si to ze zdrojaku
neprectu, tak nevim, jestli je na vine glabel, nebo gpart a jestli
skutecne dojde k prepsani tech metadat, nebo dojde k chybnemu cteni
metadat (zacne se cist jinde, nez na uplnem konci?)

Na vine je glabel - jenze - neni to bug, ale feature. Tedy - ona to chyba je - ale chyba v prvotni myslence, nikoliv v jeji implementaci..

Uvedom si, co glabel ma delat - on ma pracovat s textovym oznacenim nejaek partition. Kdyby (logicky a bezpecne) delal to, co popisujes ty, byl by vysledek jeho cinnosti neco uplne jineho.

Konkretne:

da0 zadne jmeno nema. Takze zavolame glabel, ktery si z da0 ukousne posledni sektor, do ktereho da jmeno a soucasne vytvori pododdil o sektor mensi. Tim jsme ziskali:

da0, ktery je stale bezejmenny

da0.withlabel - ktery ma jmeno. V nem bys pri[padne mohl delat dalsi kouzla (jako rozdelit na slice a podobne). Vznikala by tak jmena jako "da0.withlabels1a" a dalsi podobna. Ale da0 - to by bylo stale nepojmenovane ...

"Vsezahrnujici" zamereni glabel, ktere si jako cil vytycilo "pojmenujeme i to, co s zadnym jmenem proste nepocitalo" je proste spatne zadani - a nelze ho implementovat ciste.

glabel mel byt "centralnim mistem pro spravu jmen" - ale mel by s eomezit na spravu jmen tech partition, ktere pojem "jmena" maji a nepokouset se pojmenovat i objekty, ktere k tomu nejsou uzpusobeny bud' bubec, nebo, pripadne, koncept jmena sice maji, ale nikoliv jmena uzivatelsky volne volitelneho.

glabelu budiz utechou, ze neni jedinny, kdo ma "maslo na hlave".

Trochu podobna instance stejne chyby v uvaze se vaze k gmirroru. Je celkem bezne, i kdyz zcela nespravne, ze lidi delaji "mirror" z jiz zivych disku. Proste maji disk s funkcnim filesystemem, tak vezmou druhy disk a udelaji "mirror". je prakvapive, ze jim to system dovoli a nutne se vnucuje otazka - kam si napsali sva data. No jasne - napsali si je do posledniho sektoru. To je v poradku. Jenze by meli o ten sektor zmensit prostor - coz take udela. Hacek je, ze UFS (pokdu ej tam UFS) najednou sidli v prostoru o sektor mensim. Mozna jsme prave prisli o jeden sektor a protoze prostor se spravuje po alokacnich blocich, tak o cely alokacni blok. Mozna jsme tak prave prisli o obsah jednoho souboru. A system pritom bezi jako by se nechumelilo. Jedine v pripade, ze jsme takto zmirorovali GPT disk trosicku nadava - tim zkracenim o sektor jsme ho pripravili o zalozni kopii GPT a o tom se on smutne zmini - ale stejne bezi. Pritom by ruzne geomy v ramci "ochutnavani" partition meli zjistit, jestli to je regulerni partition, nebo jen nahodne zabloudily sektor, ktery nahodou vypada jako by partition definoval. Test na to, zda udavana delka partition je vubec k dispozici je to minimum, ktere by se melo udelat. Vetsina modulu ale nic takoveho nedela a klidne se rozjede i kdyz vi (mohla a mela by vedet) ze na svem konci ma par virtualnich sektoru, ktere ve skutecnosti neexistuji.

Dusledkem je pak to, ze obcas, kdyz chcete nejaky jiz pouzivany disk kompletne predelat, tak vam nezbyva nez vzit 'dd' a zacatek prepsat nulami - protoze prilis liny GEOM vam po predelani nachazi na disku jeste zbytky puvodniho deleni a protoze si neoveri, ze uz nemohou byt platne, tak vam vytvari naprosto nesmylna jmena zarizeni, ktera nelze ani pouzit ani zrusit.

No, to jsem se trosku rozcilil. Proste - na to, ze geom je kriticka cast systemu je docela zparchantely. Neco jsou napravitelne chyby implementacni, neco jsou bohuzel, tezko odstranitelne chyby v samotnem navrhu ...

Jelikoz se jedna o iSCSI a muze mit libovolne cislo v zavislosti na tom, kdy se 
pripoji, chtel jsem pouzit "jmeno
zarizeni" udelane glabelem. No nevyslo to...

Tohle je skutecne treba vyresit. Ale glabel v soucasne podobe dobre reseni neni. Je potreba prestat cpat jmena kde nativne nejsou a neni je kam ulozit a zacit pouzivat ta oznaceni, ktera k dispozici jsou. Fyzicke disky maji napriklad seriove cislo. PCI zarizeni se zas daji identifikovat polohou ve sbernici. Ano - prisli bychom o vlastnost "muzu to rozkopat na soucastky, nahodne slozit a ono to stejne bdue fungovat". Kterou stejne nemame, protoze to nefunguje spolehlive. U zasahu do hadrwaru by se proste obcas muselo prekonfigurovat i neco softwaroveho. No boze - zasahy do hardware snad nedela zadny "pojidac kolacu" a my jsme profesionalni spravci.

Zato v soucasnem stavu to poradne nefunguje vubec nikomu ...

Jo, GEOM, ten mi fakt pije krev ;-)

                                                Dan


--
FreeBSD mailing list (users-l@freebsd.cz)
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem