Portál AbcLinuxu, 25. dubna 2024 13:52

Jaderné noviny – 24. 3. 2011: Trvalé úložiště pro poslední slova jádra

4. 4. 2011 | Jirka Bourek
Články - Jaderné noviny – 24. 3. 2011: Trvalé úložiště pro poslední slova jádra  

Aktuální verze jádra: 2.6.38.1. Citáty týdne: Alan Cox, Steven Rostedt, Linus Torvalds, Russel King, Julia Lawall. Konverze řetězců na čísla. Začleňovací okno 2.6.39, část druhá. Trvalé úložiště pro poslední slova jádra.

Obsah

Aktuální verze jádra: 2.6.38.1

link

Začleňovací okno 2.6.39 je v době psaní tohoto článku stále otevřené; níže vizte samostatný článek o tom, co bylo za tento týden začleněno.

Stabilní aktualizace: stabilní aktualizace 2.6.32.34, 2.6.37.5 a 2.6.38.1 byly vydány 23. března; každá obsahuje mnoho důležitých oprav.

21. března vyšlo 2.6.33.8; toto jádro původně již nemělo být dále udržováno, ale Greg Kroah-Hartman jeho aktualizace obnovil, protože sada patchů realtime preempce se na tomto vydání zasekla.

Citáty týdne: Alan Cox, Steven Rostedt, Linus Torvalds, Russel King, Julia Lawall

link

Kód pro embedded zařízení specifický pro architekturu většinou beru jako velmi pochybné večírky. Co se děje u někoho doma za zdí, do toho mi nic není.

8250 je nicméně základní kód, takže by měl zůstat oblečený a chovat se tak, jak se od kódu v jeho postavení očekává.

-- Alan Cox

Také věřím, že Greg tráví mnoho osamělých nocí koukáním do git commitů, pitím oblíbeného Latte a proklínáním všech patchů, které opravují chybu, ale nemají značku pro Cc do stable. Než se začal starat o stabilní jádra, měl na hlavě obrovskou hřívu.

-- Steven Rostedt vysvětluje, jak fungují stabilní jádra

Jestli je to něčí zoufalý pokus, jak přilákat pozornost, tak bych si přál, aby se tihle lidé raději natáčeli při sexu nebo něco a netahali linuxové jádro do svého špinavého světa.

-- Linus Torvalds

Začínám mít pocit, že jsi extrémně nespokojený s tím, jak fungují věci okolo ARMu, a já nemám tušení, jak to napravit. Myslím si, že většina z toho je jenom záležitost vnímání a ne něčeho hmatatelného.

Možná je pro ARM jediným řešením vytvořit fork jádra, což je něco, což opravdu dělat nechci – ale z toho, co vidím, je to jediné řešení, které by tě mohlo alespoň trochu potěšit.

-- Russel King

To se diskutovalo již dříve a vyskytovaly se názory, že 75000 řádků kódu v ocamlu do stromu zdrojových kódu Linuxu úplně nepatří.

-- Julia Lawall

Konverze řetězců na čísla

link

napsal Jonathan Corbet, 23. března 2011

Vývojáři jádra si oprávněně můžou stěžovat na to, že mají zmatek v tom, které funkce mají být používány k převodu řetězců na číselné typy. Staré funkce jako simple_strtoul() budou tiše ignorovat bordel na konci řetězce, takže „100xx“ se úspěšně převede na bezeznaménkové celé číslo. Bylo doporučováno používat alternativy jako strict_strtoul(), ale ty mají také problémy, mezi něž patří chybějící kontroly na přetečení. Co má tedy hacker jádra dělat?

Od 2.6.39 je tu nová sada funkcí pro konverzi řetězců na čísla, která má být preferována před všemi ostatními.

Všechny tyto funkce jsou označeny __must_check, od volajících se tedy očekává, že zkontrolují, že konverze proběhla úspěšně. Starší funkce byly označeny jako zastaralé a dříve či později budou odstraněny. Nové funkce kstrto*() jsou nyní Oficiálně nejlepším způsobem, jak převádět řetězce, takže vývojáři už nemusí tápat.

Začleňovací okno 2.6.39, část druhá

link

napsal Jonathan Corbet, 23. března 2011

V době psaní tohoto článku bylo od shrnutí z minulého týdne do hlavní řady začleněno nějakých 5 500 neslučovacích sad změn. Do jádra přibyla široká škála nových vlastností, pročištění a výkonnostních zlepšení. Některé z těch významnějších jsou:

Mezi změny viditelné pro jaderné vývojáře patří:

Pokud vydrží obvykle pravidlo o dvou týdnech, začleňovací okno 2.6.39 by se mělo uzavřít 28. března. Za týden zde najdete shrnutí závěrečných změn začleněných v tomto vývojovém cyklu.

Trvalé úložiště pro poslední slova jádra

link

napsal Jake Edge, 23. března 2011

Když linuxový systém spadne, lze různými způsoby zjistit, co se pokazilo, ale tyto způsoby obvykle závisí na zápisu dat do logů na disku. U některých systémů disk v takové situaci nemusí být k dispozici nebo mu nelze věřit, takže by bylo užitečné mít místo specifické pro platformu, kam by se dala našťouchat data užitečná pro příští boot. To přesně zajišťuje souborový systém pstore začleněný do 2.6.39.

Nápad vytvořit pstore vzešel z rozhovoru Tonyho Lucka a Thomase Gleixnera na loňské Linux Plumbers Conference. Tony chtěl použít serializovanou tabulku záznamů ACPI chyb [error record serialization table, ERST] a ukládat do ní informace o pádu. ERST je mechanismus popsaný ve specifikaci ACPI [PDF] (sekce 17.4, stránka 519), umožňuje ukládat a získávat informace o hardwarových chybách z trvalého úložiště (jako je flash disk.)

Místo toho, aby vytvářel něco specifického pro architekturu x86, se nakonec rozhodl vytvořit obecnější framework, který by mohly použít i ostatní platformy, ať už mají k dispozici jakékoliv trvalé úložiště. Tony jej popsal jako obecnou vrstvu pro trvalé úložiště, které bude schopné předat desítky nebo stovky kilobytů dat posledních slov jádra svému nástupci.

Od prvního zaslání ke komentářům v listopadu kód prošel několika iteracemi. Po doporučení Alana Coxe se pstore změnil z ovladače firmware se sysfs rozhraním na přímočařejší implementaci založenou na souborovém systému.

Základem je, že platforma si může zaregistrovat dostupnost trvalého úložiště a jeho umístění voláním pstore_register(), kam se předá ukazatel na struct pstore_info, která vypadá takto:

struct pstore_info {
        struct module   *owner;
        char            *name;
        struct mutex    buf_mutex;      /* serialize access to 'buf' */
        char            *buf;
        size_t          bufsize;
        size_t          (*read)(u64 *id, enum pstore_type_id *type,
                        struct timespec *time);
        u64             (*write)(enum pstore_type_id type, size_t size);
        int             (*erase)(u64 id);
};

Ovladač pro platformu musí poskytnout tři I/O rutiny a buffer. Také je přítomen mutex, který má chránit před simultánním přístupem k bufferu. S tím pstore implementuje souborový systém, ke kterému lze přistupovat z jádra nebo i z uživatelského prostoru, když bude připojen. ERST úložiště je založené na záznamech a Tony předpokládá, že úložiště pro ostatní platformy budou také, takže I/O rozhraní je také založené na záznamech.

Společně s frameworkem pstore byl ovladač ERST změněn tak, aby pstore využíval; i tato změna byla začleněna, takže pstore má uživatele v jádře. Buffer pstore_info je alokován a spravován v drivers/acpi/apei/erst.c a je větší než bufsize kvůli hlavičkám záznamů a sekcí, které potřebuje ERST. Uživatelé I/O rozhraní vyplní buffer před voláním pstore_info.write() a po pstore_info.read() si z něj přečtou data.

Každá položka se ukládá s typem, kterým je PSTORE_TYPE_DMESG pro zprávy logu (pravděpodobně výstup oops), PSTORE_TYPE_MCE pro chyby hardwaru a PSTORE_TYPE_UNKNOWN pro ostatní nedefinované typy. Když se ukládá, je ke každé položce přiřazeno ID záznamu, které je také návratovou hodnotou pstore_info.write(). Toto ID lze použít v operacích read() a erase(), ale také se objevuje ve jménech souborů v souborovém systému.

Souborový systém lze připojit takto:

# mount -t pstore - /dev/pstore

Jména souborů, která se v něm zobrazí, jsou odvozena z typu, jména ovladače úložiště a id, takže první záznam dmesg bude v ERST /dev/pstore/dmesg-erst-1. Typickým způsobem použití bude připojení souborového systému při bootu, pak se nějaký proces v uživatelském prostoru podívá, jestli tam nejsou nějaké soubory, zkopíruje je na trvalejší úložiště a smaže je pomocí rm. To umožní ovladači úložiště znovu využít místo a zapsat tam další informace o pádech a chybách.

Ve výchozím nastavení si pstore zaregistruje obsluhu výpisu v kmsg_dump a zapíše do zařízení pstore posledních 10 kB dat z jaderného logu, když dojde k oops nebo panice. Množství dat, která se mají ukládat, lze nastavit parametrem kmsg_bytes při bootu.

Tony také sestavil RFC patch zakazující vypisování informací do pstore pro některé z důvodů kmsg_dump (například KMSG_DUMP_HALT či KMSG_DUMP_RESTART), ale různí další vývojáři si nebyli tak jisti, jestli je to dobrý nápad. Seiji Aguchi upozornil na dva případy (1, 2), kde v takových případech potřeboval někam uložit poslední zprávy v jaderném logu. A Artem Bityutskiy navíc upozornil na to, že když bude pstore rozhodovat, které důvody pro kmsg_dump ukládat a které ne, smrdí to politikou v jádře. Rozhodně je možné přidat další volby, které budou chování nastavovat, ale Tony chce podle všeho chvíli počkat, než bude něco měnit.

Pro jaderné zprávy jsou další metody, jak je dostat na trvalé úložiště, mezi hlavními můžeme zmínit devices/mtd/mtdoops.c a devices/char/ramoops.c. Ty se ale zaměřují na embedded zařízení, kde převažují NVRAM paměti, a na platformy, kde lze rezervovat část RAM, která se při přebootu nevynuluje. Pstore je flexibilnější a může ukládat více než jenom jaderné logy, zatímco obě *oops zařízení jsou zadrátována tak, že mohou ukládat pouze výstup kmsg_dump.

Když bylo pstore začleněno, začnou ho pravděpodobně používat i další architektury. David Miller již řekl, že ho použije pro sparc64, kde lze nastavit, aby část paměti zůstala zachována mezi rebooty. Dá se předpokládat, že další architektury, které mají hardwarovou podporu pro podobné mechanismy, budou následovat.

Odkazy a zdroje

Kernel coverage at LWN.net: March 24, 2011

Další články z této rubriky

Jaderné noviny – přehled za březen 2024
Jaderné noviny – přehled za únor 2024
Jaderné noviny – přehled za leden 2024
Jaderné noviny – přehled za prosinec 2023
Jaderné noviny – přehled za listopad 2023

Diskuse k tomuto článku

atan avatar 4.4.2011 08:26 atan | skóre: 21 | Liberec
Rozbalit Rozbalit vše Re: Jaderné noviny – 24. 3. 2011: Trvalé úložiště pro poslední slova jádra
Odpovědět | Sbalit | Link | Blokovat | Admin
Aktuální verze jádra: 2.6.33.8?
Luboš Doležel (Doli) avatar 4.4.2011 11:41 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Jaderné noviny – 24. 3. 2011: Trvalé úložiště pro poslední slova jádra
Díky, opraveno, nějak mě ta hromada verzí zmátla.
4.4.2011 09:08 xxx
Rozbalit Rozbalit vše Re: Jaderné noviny – 24. 3. 2011: Trvalé úložiště pro poslední slova jádra
Odpovědět | Sbalit | Link | Blokovat | Admin
„posledních slov jádra jeho nástupci.“ -- svému zástupci!
4.4.2011 10:27 hnidopich
Rozbalit Rozbalit vše Muphryho zákon opět udeřil
svému nástupci
4.4.2011 15:46 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Jaderné noviny – 24. 3. 2011: Trvalé úložiště pro poslední slova jádra
Odpovědět | Sbalit | Link | Blokovat | Admin

Je tam maly preklep na konci sekcie  "Konverze řetězců na čísla" :

... Straší funkce byly označeny jako zastaralé a dříve či později budou odstraněny. ...

 

Ale inak som velice vdacny za kazdy preklad. ;)

Luk avatar 4.4.2011 16:52 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: Jaderné noviny – 24. 3. 2011: Trvalé úložiště pro poslední slova jádra
Starší funkce, co tam ještě straší ;-)
Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
4.4.2011 19:06 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Jaderné noviny – 24. 3. 2011: Trvalé úložiště pro poslední slova jádra

Pekne vystihnute. :D

13.12.2021 07:00 geebranz
Rozbalit Rozbalit vše Re: Jaderné noviny – 24. 3. 2011: Trvalé úložiště pro poslední slova jádra
Odpovědět | Sbalit | Link | Blokovat | Admin
Only solution

Reap

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.