Swap na disku s vadnym sektorem - co Vy na to ?

Jirka Kosina jikos na jikos.cz
Pátek Leden 18 23:18:01 CET 2002


On Fri, 18 Jan 2002, Jirka Kosina wrote:

> Ve strukture struct swap_header_v1 je unsigned int badpages[1] (nekde 
> kolem je definovano makro MAX_BADPAGES na neco, co je podle mne vetsi nez 
> 1).
> Pole badpages, alespon jak jsem to z toho zdrojaku pochopil, ma slouzt k 
> indexaci vadnych stranek (ta struktura se uklada do "informacni" oblasti 
> toho swapu) - tomu take nasvedcuji ruzne konstrukce ve zdrojaku:
> static void page_bad(int page) {
> 	/* ... */
> 	if (badpages == MAX_BADPAGES)
> 		die(_("too many bad pages"));
> 	p->badpages[badpages] = page;
> 	badpages++;
> }
> Tak jsem z toho jelen - proc je to pole velikosti 1, kdyz se evidentne 
> muze stat, ze se bude indexovat nejakym vetsim indexem?
> Ale asi jsem uz unaveny a neco jsem prehledl, diky za pripadne vyvedeni ze 
> tmy ;)

Ze tmy se vyvedu sam - p je ukazatel na strukturu typu swap_header_v1, coz 
je datova struktura, ktera sidli v "signature page" - tedy ve vyhrazene 
strance swapu, ktera o tom swapu drzi ruzne udaje (mimo jine i pocet 
stranek). Posledni polozka te struktury je ono jednoprovkove pole - a je 
tedy zrejme, ze pokud se nebude toto pole brat jako jednoprvkove, ale bude 
se klidne psat i za jeho hranici, a pouze se bude hlidat, aby se 
neprelezla hranice stranky (kvuli tomu je definovana MAX_BADPAGES tak jak 
je definovana ;) ), tak nehrozi, ze by se neco pokropilo.

To ze je stranka vadna se pozna podle toho, ze read() na zarizeni, na 
kterem se vytvari swap, nenacte celou stranku (pagesize bajtu), prestoze 
to je od nej pozadovano, a stranka je oznacena jako bad, a swapper ji 
nebude pouzivat.

Cili na puvodni dotaz pana Simka je odpoved kladna - skutecne lze takovy 
swap pouzivat. Ale jak jsem psal - radeji bych se tomu vyhnul, protoze 
rozrustani badblocku docela hrozi, a nevim, jak by se s tim za behu kernel 
swapper vyporadal (i kdyz si dovedu predstavit, ze dost obdobne, jako 
mkswap, ale zatim jsem do zdrojaku nekoukal).

-- 
JiKos.




Další informace o konferenci Linux