Jenom taková úvaha. Zajímalo by mě, jaký je přínos změn, které způsobují tyto i jiné chyby. Nepamatuji si jedinou chybu, u které bych si říkal: "ok, změna byla velmi přínosná a chyby se prostě stávají". Naopak si pamatuju spoustu chyb, které vznikly na základě toho, že autoři chtěli řešit něco, co jsem za chybu buď nepovažoval a nebo měla být vyřešena na zcela jiné vrstvě nebo produktu. Například známá heuristika u ext4, která měla zjišťovat, zda program nezneužívá vlastnost journálování u ext3. Tam se prostě měly opravit všechny špatně napsané programy a nemělo se to zakrývat.
Odkaz nemám, probíralo se to hodně i tady na rootu. Šlo o to, že defaultní režim journálování u ext3 byl ordered. Což znamenalo, že data souboru se uložila před změnou metadat. Současně u ext3 byl velmi pomalý fdatasync. A některé programy tohoto zneužívaly, uložily data do soubory a následně jej třeba přejmenovaly. A data byla bezpečně na disku bez nutnosti volat f(data)sync.
Jenže tohle řešení fungovalo pouze na ext3 s ordered módem. Nefungovalo na žádném jiném fs.
Ext4 k sobě přidal heuristiku, jak tohle zachovat. Opět, nic to neopravovalo a na ostatních fs ten program byl stále rozbitý.
Nejedná se tedy o chyby ext3 ani ext4. Jen byla snaha najít náplast na vadné programy. A tohle mi vadí.
Jenze takhle se aplikace delaji vis?
Mockrat sem zazil, ze dodavatel se pokusil opravit nejake treba i objektivne vadne chovani. Jenze to vzdy narazi na to, ze aplikace s tim chovanim pocitaji.
Jedina spravna varianta je totiz tak, ze udelas novou verzi, ktere treba prejmenujes prislusna volani nebo pozadujes uvedeni verze ... a pak nove aplikace budou pouzivat tu opravenou funkcnost. Ale stejne budes muset nejspis desitky let zachovat i tu puvodni.
Specielne u FS pak menit jeho chovani je naprosto dokonala cesta do pekel. Pak totiz jaksi nemuzes tvrdit, ze je kompatabilni, protoze proste neni.
Ono je to docela problem, "tam se prostě měly opravit všechny špatně napsané programy".
Totiz ono ked sa aj vsetky programy opravia, vzdy sa najde nejaky vykuk, ktory pouzije staru verziu a problem aj tak sposobi. Koniec koncov distribucie ako Debian a RHEL spolu s klonmi na tomto priamo stavaju.
Preto kazda oprava, ktora zavadza nove spravanie, musi osetrit aj stare spravanie. Ako dlho musi podporovat stare spravanie je potom vecou zistovania, ci to este niekto niekde nahodou nepouziva, a az ked nie, este sa pre istotru s tym par rokov pocka a az potom sup s tym prec (a potom citaj na roote diskusie, ze preco sa odstranuju drivery pre historicke zelezo, ved to nikomu nezavadza, apod).
To je aj dovod, preco niektore zmeny vo svete Linuxu trvaju tak ukrutne pomaly. Microsoft alebo Apple si jednoducho vydaju novy release, kde spolu vsetky komponenty navzahom hraju; nikto nebude brat jeden komponent zo stareho releasu, druhy z noveho, robit z toho distribuciu a cudovat sa, ze to nefunguje. Vo svete linuxovych distribucii je to uplne bezne (preto dodnes nemame napr. explicit sync pre gpu).