Počítače

Třem diskům Western Digital vypnul Linux úspory na lince SATA, aby nemizely

Jádro Linuxu nově zakazuje úsporný režim linky SATA třem diskům Western Digital. Dvěma z nich kvůli hlášení, ve kterém se devět měsíců střídaly slepé uličky: podezření padlo na dopředné čtení, na jednotku IOMMU i na velikost přenosů. Až letos v červenci se ukázalo, že za odpojováním stojí uspávání linky.

· 15 zhlédnutí

Do hlavní vývojové větve jádra Linuxu se krátce po půlnoci na sobotu 1. srpna dostala dávka oprav rozhraní ATA označená pro nadcházející 7.2-rc6. Deset commitů, tři z nich se točí kolem jedné funkce: úsporného režimu linky mezi diskem a řadičem. Dva disky Western Digital a jedno SSD téže značky se do jádra zapisují jako zařízení, kterým se ta úspora povolit nesmí.

Pevný disk položený na boku, v popředí datový a napájecí konektor SATA
Zadní hrana pevného disku s datovým a napájecím konektorem SATA. Foto: JulianVilla26, Wikimedia Commons (CC BY-SA 4.0)

Co je LPM a proč se vypíná

Link Power Management, zkratkou LPM, uspává samotné spojení mezi řadičem a diskem, když se po něm chvíli nic nepřenáší. Nejde o zaparkování hlaviček ani o zastavení ploten, jen o tu linku. Jádro pro ni zná šest pojmenovaných nastavení: max_performance linku neuspí vůbec, min_power spí nejvíc. Michael Larabel na Phoronixu uvádí, že vypnutím LPM přijde uživatel o 0,5 až 1,5 W na disk; odkud to číslo pochází, u něj nestojí a v samotných záplatách není.

Když se ale disk z uspané linky neprobere správně, systém ho ztratí. Přesně to hlásili uživatelé v záznamu 220693 v Bugzille jádra, založeném 22. října 2025 pod názvem, který popisuje příznak a nic víc: sběrnice SATA po chvíli zmizí. Za devět měsíců se pod ním sešlo devětapadesát komentářů.

Tři slepé uličky

První stopa vypadala přesvědčivě. Bisekce jednoho z hlásících ukázala na commit block: Improve read ahead size for rotational devices, který od jádra 6.17 zvětšil dopředné čtení u točivých disků. Damien Le Moal, správce libaty a shodou okolností i autor toho commitu, na to odpověděl, že pokud je spouštěčem opravdu on, chyba nebude v blokové vrstvě, ale v hardwaru, který si neporadí s velkými požadavky.

Druhá stopa přišla od dvou dalších lidí: problém jim zmizel, když vypnuli jednotku IOMMU. Třetí byla velikost přenosů. Niklas Cassel poslal do vlákna skript, který postupně zvyšuje maximální velikost požadavku a hledá, kde disk selže. U jednoho z hlásících skončil test na 4 MiB tak, že se celý stroj zasekl. U dalšího prošly všechny velikosti bez chyby, a přitom disky mizely dál.

Rozuzlení začalo komentářem z 8. prosince 2025. Uživatel v něm napsal, že za jeho výpadky může LPM, konkrétně u disku Seagate ST2000DM008, a že mu od té doby všechno běží s parametrem libata.force=6:nolpm. Cassel totéž o pět měsíců později doporučil majiteli dvou postižených WD. Ten se 24. července ozval, že po zákazu LPM oba disky fungují bez problémů, a zeptal se, co dál. Odpověď přišla za čtyři dny i s odkazem na hotové záplaty.

Které disky to jsou

Commit Disable LPM on some WD drives přidává do tabulky výjimek modely WDC WD100EFGX-68CPLN0 a WDC WD102KFBX-68M95N0. Podle produktových listů výrobce jde o desetiterabajtové disky pro síťová úložiště, první z řady WD Red Plus, druhý z WD Red Pro. Phoronix ten druhý popsal jako Red Plus Pro, což je spojení názvů dvou různých řad.

Druhý commit, Disable LPM on WD Green 2.5 480GB, stojí na samostatném hlášení. Ronald Garcia Vazquez napsal 21. července do konference linux-ide, že se mu SSD v notebooku Dell Latitude 3420 odpojuje po dvou až třech minutách běžné práce. Ve výpisu jádra, který přiložil, jsou tři řádky za sebou: vypršel časový limit příkazu, nepodařilo se vypnout DIPM, nepodařilo se vypnout DEVSLP. Pak už jen zhasla linka a disk se odpojil. S parametrem libata.force=nolpm problém nenastal.

Tabulka, která roste od roku 2013

Výjimky pro konkrétní modely drží libata v jednom poli ve zdrojovém souboru drivers/ata/libata-core.c. K dnešnímu dni má sto čtyřicet záznamů a třiadvacet z nich nese příznak ATA_QUIRK_NOLPM. Jsou mezi nimi SSD Samsungu, Crucialu, Apaceru a PNY, tři disky Seagate i dvě vypalovačky Pioneer.

Western Digital v tom seznamu není poprvé. Sedm starších záznamů dostalo vlastní příznak ATA_QUIRK_WD_BROKEN_LPM a komentář nad nimi odkazuje na hlášení z dubna 2013: některé disky WD s rozhraním SATA-I se po uspání linky roztáčely a zastavovaly nepravidelně. Ten příznak se ale uplatní jen na zařízení, které hlásí podporu první generace SATA a žádné vyšší. Nové disky se tím pádem musely do tabulky přidat zvlášť, což si vývojáři poznamenali i do komentáře v kódu.

Oprava, která ležela v jádře přesně rok

Ve stejné dávce je i jednořádková oprava funkce ata_scsi_lpm_supported(). Ta zjišťuje, jestli port a připojená zařízení úsporný režim zvládají, a podle toho jádro pouští, nebo nepouští uživatele k přenastavení politiky přes sysfs. Vnitřní smyčka v ní procházela pořád dokola zařízení hlavní linky místo té, kterou zrovna probírala. Na sestavách s rozbočovačem portů mohla proto zbytečně odepřít změnu.

Chyba se do jádra dostala s commitem, který ten dotaz zavedl, a ten je datovaný 28. července 2025. Oprava nese datum 28. července 2026, tedy na den přesně o rok později. V poli Reported-by stojí Sashiko s adresou sashiko-bot@kernel.org, tedy strojový hlásič. Cassel opravu poslal se značkou pro stabilní řady, takže se dostane i do starších podporovaných jader.

Co s tím uživatel

Kdo má některý ze tří modelů a nechce čekat na nové jádro, nastartuje s parametrem libata.force=nolpm. Zákaz jde omezit na jediný port číslem před dvojtečkou, takže ostatní disky o úsporu nepřijdou. Vypnutí LPM je taky první věc, kterou má smysl zkusit, když se disk odpojuje bez zjevné příčiny; tenhle záznam v Bugzille ukazuje, jak snadno se místo toho hledá chyba jinde.

Podle nás je na celém případu nejzajímavější, že hardwarová vada se skoro rok schovávala za tři různá softwarová podezření, z nichž každé bylo samo o sobě rozumné. Opravy jsou v 7.2-rc6; stabilní jádro 7.2 má podle Phoronixu vyjít v srpnu. Ve stejné fázi vývoje přišlo do zvukové části jádra 53 záplat, tedy třikrát víc než o vydání dřív.

Zdroje

Počítače

Diskuse

Zatím tu nikdo nediskutuje.

Diskutovat mohou přihlášení čtenáři – přihlaste se nebo si založte účet.

← zpět na výpis