Kernel Traffic
Latest | Archives | People | Topics
Wine
Latest | Archives | People | Topics
GNUe
Latest | Archives | People | Topics
Czech
Home | News | RSS Feeds | Mailing Lists | Authors Info | Mirrors | Stalled Traffic
 

Kernel Traffic #183 For 2002/09/09

By Zack Brown

Translated By:  Maja Królikowska

Table Of Contents

Mailing List Stats For This Week

We looked at 1469 posts in 7526K.

There were 420 different contributors. 219 posted more than once. 167 posted last week too.

The top posters of the week were:

1. Równoważenie przerwań dla różnych systemów

13 Aug 2002 - 29 Aug 2002 (42 posts) Subject: "[PATCH] NUMA-Q disable irqbalance"

People: Martin J. BlighLinus Torvalds

Martin J. Bligh podesłał łatkę i wyjaśnił: "Łatka ta pochodzi od Matta Dobsona. Wyłącza ona irq_balance dla NUMA-Q i robi z tego opcję konfiguracyjną dla wszystkich innych możliwości. To jest niezbędne do działania NUMA-Q, jako że kod irq_balance zakłada płaski tryb adresowania apic, co nie w każdym przypadku jest prawdą. Stworzyliśmy opcję konfiguracyjną, poniewż irq_balance sprawia, że wyraźnie spada wydajność dla niektórych obciążeń. Łatka jest dla 2.5.25, ale daje się nałożyć i działa dla 2.5.31" Linusowi Torvaldsowi nie podobała się negatywna opcja konfiguracyjna, przy której pytano, czy coś wyłączyć zamiast pytać, czy to włączyć. Dodał: "ponieważ równoważenie przerwań jest w zasadzie wymagane na P4-SMP, nie sądzę, żeby opcja w CONFIGu działała dobrze. Musi być ona włączona dla każdego jądra, które spodziewa się używania P4 w konfiguracji SMP." Martinowi wydało się, że to nie będzie działało, bo trudno by było spowodować, by jądro działało właściwie na wszystkich systemach z P4. W późniejszej wiadomości dodał: "Wymuszanie tego dla każdej maszyny tylko dlatego, że tak jest w P4 nie brzmi dobrze" [...] "naprawdę musimy móc to wyłączyć dla wielu maszyn. Pozbycie się negatywnej opcji konfiguracyjnej jest jednak łatwe." Linus się jednak z tym nie zgodził, pisząc, że wymaganie równoważenia przerwań powinno być determinowane dynamicznie w trakcie działania systemu, a nie powinno być opcją. Martin odpowiedział: "Ale to jest dobre dla P4, ale złe dla P3 (przynajmniej dla niektórych obciążeń), co z pewnością prowadzi do wniosku, że powinna to być opcja konfiguracyjna (być może domyślnie włączona)? Jeśli widzisz inne rozwiązanie tej zagadki.... " , a Linus odpowiedział:

Ale to są dokładnie te rodzaje przypadków, w których opcje konfiguracyjne _nie_ działają dobrze.

Są tony powodów dla których chce się uruchamiać to samo jądro na wielu maszynach, nawet pomijając problemy takie jak instalatory itp.

Mieliśmy to chore CONFIG_xxxx gdy przyszło do SSE, mieliśmy to z TSC itp. I w każdym przypadku okazywało się, że to jest źle, po prostu dlatego, że to nie jest właściwy interfejs dla _użytkowników_.

Dlatego właśnie myślę, że kod równoważenia IRQ powinien tam być, niezależnie od wszystkiego, i być dynamicznie włączony wtedy, gdy jest potrzebny (albo wyłączany tam, gdzie przeszkadza, wszystko jedno). Ale _nie_ powinien być opcją konfiguracyjną.

Martin podesłał bardzo króciutką łatkę i napisał: "W porządku ... masz rację ;-) Tak jest źle, w szczególności dla jąder dystrybucyjnych. Potrzebowałem tylko czegoś, co zapobiega wywalaniu się NUMA-Q. Czy może być to, co w załączniku? Proszę, proszę, proszę? ;-) To tylko dodaje if-a do irq_balance, co i tak jest optymalizowane przez kompilator. Nie żadne zawirowanie opcji konfiguracyjnej. Testowane dla 2.5.31."

2. Stan IPv6

18 Aug 2002 - 29 Aug 2002 (37 posts) Subject: "2.4 and full ipv6 - will it happen?"

People: Tomasz TorczDavid S. Miller

Tomasz Torcz zauważył: "Jakiś czas temu Linux był pierwszym systemem operacyjnym, który miał stos IPv4 w pełni zgodny z RFC. Linux ciągle wygrywa w kwestii obsługi sieci, ale protokołem przyszłości jest IPv6. Stos IPv6 w głównej linii jądra jest ciągle daleki od perfekcji. Jest jednak nadzieja. Pełny stos IPv6 jest utrzymywany przez projekt USAGI. Jasne jest, że projekt USAGI zostanie zintegrowany z głownym jądrem. Martwi mnie, że jest to w planach w wersji 2.7, czyli _ŹLE_ i późno. Moim zdaniem może być włączony w każdej chwili. Im szybciej, tym lepiej. Marcelo - czy włączyłbyś pełną implementację stosu IPv6 do 2.4.20, jeśli dostałbyś łatki? Proszę - to ważne, żeby w przyszłości Linux był najlepszy jeśli chodzi o obsługę sieci. Przy obecnej implementacji IPv6 to chyba słabo możliwe." David S. Miller odpowiedział:

mając na uwadze poprzednie próby włączenia ich pracy do głównego jądra, sądzimy, że w tym momencie oni naprawdę wolą być osobnym projektem i niewłączanie ich całej pracy do jądra im sprzyja.

USAGI może tylko zaakceptować ten komentarz, a jedyny sposób, w który mogą temu zaprzeczyć jest włączenie ich kodu do naszego jądra, o co są bez przerwy proszeni.

Moim zdaniem USAGI dostało więcej niż wystarczającą liczbę możliwości włączenia całej ich pracy do głównego jądra. Aleksiej Kuźniecow przez lata ciągle ich prosi o połączenie kodu i nigdy im się to nie udało. Czasem udaje się włączyć jedną albo dwie poprawki błędów, ale na tym kończą się wspólne wysiłki.

Zgłaszają, że bardzo by chcieli się połączyć, ale działają w zupełnie przeciwny sposób. To jest prawie haniebne i mam już dość tej publicznej propagandy, która sprawia, że wygląda na to, że to wina moja i Aleksieja.

Tomasz odpowiedział, że wydawało mu się, że Aleksiej Kuźniecow i USAGI współpracowali ze sobą, ale David krótko odpowiedział: "Aleksiej prosi gości z USAGI o łatki, a oni nie odpowiadają."

W innym miejscu ktoś napisał, że kod IPv6 działa na jego/jej systemie od lat. David odparł:

Słowem kluczowym jest tu słowo ,,ty'', używasz go lokalnie, na swojej maszynie.

Nie istnieją szkieletowe rutery ipv6, wszyscy ciągle używają tuneli albo mają sieci zbudowane dla własnego użytku.

Parę osób zwróciło uwagę, że jednak jest w użyciu trochę szkieletowych ruterów IPv6; dyskusja zeszła na różne możliwe sytuacje w przyszłości, na to, czy IPv6 stanie się popularne, czy są inne możliwości, które opóźnią sprawę. W sumie wydaje się, że nikt nie wie, ale wszyscy preferują IPv6.

3. Dodanie 'localconfig' w celu automatyzacji tworzenia .config

24 Aug 2002 - 2 Sep 2002 (17 posts) Subject: "[RFC] make localconfig"

People: Andrew RodlandZwane MwaikamboGiacomo Catenazzi

Ktoś zaproponował nowy cel dla Makefile, 'localconfig', który analizowałby działający system i próbował wyprodukować plik .config możliwie dokładnie odpowiadajacy obecnemu sprzętowi. Dodał(a), że w takim wypadku rekomendowanoby uruchomienie 'make menuconfig' w celu potwierdzenia odpowiedniości .config. Andrew Rodland odpowiedział: "Okazuje się, że skrypt autoconfigure w CML2 jest adaptacją kautoconfigure (Giacomo Catenazzi <cate@debian.org>, http://sf.net/projects/kautoconfigure), przerobioną trochę tak, by używało CML2 i pythona... trochę starsza wersja, która używa sh (no dobra, basha) jest ciągle dostępna. Zestaw reguł ma już teraz coś około 8 miesięcy, ale rzeczy które udostępnia są naprawdę całkiem fajne. Używałem tego raz i zadziałało bardzo fajnie. Nie wiem, czy to, hm, upadek CML2 zabił ten projekt, ale nie przeszkadzałoby mi, gdyby powrócił."

W innym miejscu Zwane Mwaikambo zauważył: "Przy takich rzeczach przemawia tylko kod. W przeciwnym wypadku nikt się tym nie zainteresuje." Parę wiadomości dalej odpowiedział Giacomo Catenazzi: "Mam kod w bashu (sondujący sprzęt), bazę danych sprzętu i sterowników i skrypt w pythonie częściowo generujący bazę prosto ze źródeł jądra. Powinno to być pod adresem: http://people.debian.org/~cate/files/kautoconfigure oraz: http://people.debian.org/~cate/files/gnome-os"

4. Porównanie podsystemów pamięci wirtualnej w 2.4 z VM Regress

25 Aug 2002 - 29 Aug 2002 (5 posts) Subject: "2.4.19 Vs 2.4.19-rmap14a with anonymous mmaped memory"

People: Mel GormanDaniel Phillips

Mel Gorman zgłosił:

Uruchomiłem parę szybkich serii testów na małej maszynce. Intencją tego działania było zobaczenie, jakie liczby i jakie wnioski pokazuje VM Regress w najnowszej, publicznie dostępnej wersji. VM Regress to projekt będący początkiem narzędzia, którego podstawowym celem jest odpowiedź na pytania dotyczące VM przy pomocy testowania i porównywania poszczególnych części podsystemu. Zarysowane tu wnioski są wnioskami zupełnie ad-hoc, zatem nie traktowałbym ich zbyt poważnie.

Uruchomiono 4 testy na każdej maszynie, każdy odnosił się do anonimowej pamięci używanej w mmapowanym regionie. Zostały użyte dwa wzorce odwołań, smooth_sin i smooth_sin-random. Oba zbiory pokazują krzywę sinusoidalną, na której narysowano ile razy następuje odwołanie do każdej strony (patrz: zielona linia na rysunku stron w pamięci i wyrzuconych na dysk). Przy smooth_sin, odwołania do stron odbywają się po kolei. Przy smooth_sin-random, odwołania odbywają się w losowej kolejności, ale zachowywana jest liczba odwołań.

W trakcie testów obu schematów dokonywanych jest 2.000.000 odwołań do zmmapowanego regionu. Pierwszy region zawiera 25000 stron, ma w przybliżeniu taką wielkość, jak fizyczna pamięć maszyny. Drugi ma 50000. Niestety, niedostępne są szczegółowe informacje statystyczne, można jednak wyciągnąć jakieś wnioski. Dostarczanie informacji statystycznej jest w planach wersji 0.9.

Test 1 - smooth-sin_25000
http://www.csn.ul.ie/~mel/vmr/2.4.19/smooth_sin_25000/mapanon.html
http://www.csn.ul.ie/~mel/vmr/2.4.19-rmap14a/smooth_sin_25000/mapanon.html

Zachowanie jest dość porównywalne. Średni czas dostępu do strony wygląda mniej więcej tak samo, więc w końcu wydajność jest podobna. rmap14a działa lepiej, ale test nie trwał wystarczająco długo, żeby to potwierdzić. Podsumowując, gdy dostępne jest wystarczająco dużo fizycznej pamięci, rmap14a i ,,oficjalna'' pamięć mają mniej więcej tę samą wydajność przy liniowym odwoływaniu i pamięci nie brakuje.

Test 2 - smooth-sin-random_25000
http://www.csn.ul.ie/~mel/vmr/2.4.19/smooth_sin-random_25000/mapanon.html
http://www.csn.ul.ie/~mel/vmr/2.4.19-rmap14a/smooth_sin-random_25000/mapanon.html

tutaj średnia wydajność zostaje mniej więcej taka sama. Interesujące jest to, że rmap14a ma okresowo długi czas dostępu do stron. Mimo to rmap14a szybciej zakończył test. Znowu zatem, jeśli tylko nie brakuje pamięci, wydajność pozostaje mniej więcej taka sama, nawet przy relatywnie losowym wzorze odwoływania się do stron.

Test 3 - smooth_sin_50000
http://www.csn.ul.ie/~mel/vmr/2.4.19/smooth_sin_50000/mapanon.html
http://www.csn.ul.ie/~mel/vmr/2.4.19-rmap14a/smooth_sin_50000/mapanon.html

Ten test jest interesujący. Pamiętajcie, że odwołania są liniowe w pamięci. Przy około 1,000,000 odwołań do stron wyczerpuje się fizyczna pamięć. Oba testy skończyły się z takim samym czasem, zatem patrząc na ,,surową wydajność'' wydają się być takie same, ale tak nie jest. Wykres czasu dostępu pokazuje, że przez większość testu rmap14a dawał średnio lepsze wyniki, ale co pewien czas miał skoki. W końcu szybko to się zmniejsza, ale dostęp do strony jest ciągle szybszy niż w VM z oficjalnego jądra o około 300000 mikrosekund. Pokazuje to nieskalowany wykres.

http://www.csn.ul.ie/~mel/vmr/2.4.19/smooth_sin_50000/mapanon-time-unscaled.png
http://www.csn.ul.ie/~mel/vmr/2.4.19-rmap14a/smooth_sin_50000/mapanon-time-unscaled.png

To wydaje się zgodne z raportami mówiącymi, że dla normalnego jądra spada to powoli, poczas, gdy rmap wydaje się odbiegać bardzo szybko w niektórych sytuacjach.

Podejrzewa się, że duże, okresowe ,,zęby'' na wykresie pojawiają się wtedy, gdy znajdowana jest odpowiednia strona, ale to jest tylko zgadywanie a VM Regress nie znajduje się na tym etapie, na którym może być dokładniej wyśledzone.

Drugą rzeczą do zauważenia są obecne w pamięci strony na końcu testu. Normalne VM nie próbuje nawet trzymać pewnych stron w pamięci. Gdy pamięć fizyczna się kończy, to na dysk zrzucane są bezwarunkowo. rmap14a próbuje zatrzymać w pamięci odpowiednie strony, co pokazuje wykres odwołań do stron w stosunku do obecności stron w pamięci. normalne jądro ma duży blok stron w pamięci, rmap14a wyrzuciło z pamięci niektóre strony na początku testu.

W tym przypadku, VM z jądra udało się poprawnie wyrzucać strony, bo usuwane strony nie zamierzały być użyte w tym szczególnym przypadku.

Test 4 - smooth_sin-random
http://www.csn.ul.ie/~mel/vmr/2.4.19/smooth_sin-random_50000/mapanon.html
http://www.csn.ul.ie/~mel/vmr/2.4.19-rmap14a/smooth_sin-random_50000/mapanon.html

W tym teście porządek odwołań do strony jest losowy, więc określenie tego, którą stronę usunąć jest znacznie trudniejsze. rmap14a zakończył ten test prawie 10 minut wcześniej niż VM z normalnego jądra.

Średni czas dla VM z jądra jest ciągle zły. Podejrzewam, że tak się dzieje, bo jądro ciągle wyrzuca cały proces. rmap ma okresy szybkiego dostępu z, niestety, dużymi skokami, bo próbuje ono trzymać odpowiednie strony w pamięci, a ich znalezienie zabiera dużo czasu. Ta cecha powoduje, że takie rozwiązanie jest lepsze od tego z jądra, które nigdy nie ma właściwych stron w pamięci.

Wnioski

Trudno wyciągnąć słuszne wnioski, bo ciągle nie mamy pełnych danych, ale coś tam można powiedzieć. Jestem pewien, że doświadczony deweloper VM będzie umiał wyciągnąć wnioski, na których będzie można bardziej polegać :-)

Po pierwsze, jeśli dostępna jest wystarczająca ilość pamięci fizycznej, to rmap i VM z jądra zachowują się mniej więcej tak samo, nie jest wprowadzany żaden zauważalny narzut dla normalnego, anonimowego użycia pamięci.

Po drugie, gdy pamięć jest zapełniona, na całość wydajności odwołań wpłynie zachowanie pojedynczego typu odwołania. Przy dokładnie liniowym wzorze odwołań, vm z jądra będzie miał lepszą wydajność, bo po prostu naraz zrzuca wszystkie stare strony. Szczerze wątpię, że takie odwołania często się zdarzają.

Dla innych wzorów odwołań z dużym anonimowym użyciem stron, rmap ma większe szanse być bardziej wydajny, bo stara się trzymać anonimowe strony w pamięci. Nawet przy kompletnie losowych odwołaniach będzie miał sensowną wydajność.

W końcu, z testów w oczywisty sposób wynika, że przy decyzji, którą stronę przesunąć na partycję wymiany ważniejszy jest wiek tej strony, a nie częstość odwołań do niej, ale to już wiadomo. Wykresy wieku stron już są robione i będą dostępne w VM Regress 0.7.

Daniel Phillips zapytał: "Czy mógłbyś, proszę, dostarczyć pseudokod, który dokładniej specyfikowałby te wzory odwołań?" Mel odparł:

Zamiast pisać pseudokod, podam odnośnik do funkcji generującej odwołania smooth_sin:

http://www.csn.ul.ie/~mel/vmr/smooth_sin.html

To jest naprawdę surowe i napisane do generacji każdego typu danych i tak będzie, dopóki nie znajdę czasu na generowanie bardziej realistycznych danych, co jest projektem samym w sobie. Każdy, kto chciałby wygenerować lepsze dane musi tylko wyedytować sobie plik References.pm.

Na wejściu bierze trzy rzeczy:

odwołania - liczbę odwołań do generacji zasięgu - rozmiar regionu w stronach dla wyjścia odwołań - nazwę pliku z wyjściem

funkcja ma trzy części:

część 1: Rysowanie sinusoidy takiej, żeby suma wszystkich wartości całkowitych każdej części wygenerowała wystarczająco dużo odwołań, żeby spełnić warunek mówiący, że ma być to conajmniej połowa żądanej liczby
część 2: Zaczynanie od początku zasięgu, odwołanie do każdej strony w porządku liniowym dopóki nie zostaną wygenerowane wszystkie pożądane odwołania
część 3: Zrzucenie na dysk wszystkich odwołań

teraz gdy o tym myślę, to bardziej sensowne byłoby najpierw zastosować liniowy wzór odwołań, a potem wygenerować krzywą sinusoidalną, ale wiedząc, że ten wzór w ogóle nie przypomnia niczego, co może zdarzyć się naprawdę, nie martwiłem się o to zbytnio. To pewnie coś, co powinienem zmienić, jako że to lepiej zilustrowałoby, które strony są trzymane w pamięci.

smooth_sin-random
http://www.csn.ul.ie/~mel/vmr/randomize_references.txt

To jest skrypt perlowy do losowego przekształcania pliku wejściowego. Na wejściu bierze plik wygenerowany przez funkcję smooth_sin, a na wyjściu daje plik z losowymi odwołaniami. Jest bardzo prościutki

  1. Dla każdego odwołania na wejściu dostaje losową liczbę między 0 a zasięgiem a następnie odwołanie wejściowe
  2. Sortuje plik numerycznie przy użyciu sort. To pozwala dać losowość wejścia
  3. Tak przetworzone wejście jest czytane na nowo i usuwane są losowo wygenerowane elementy

Daniel odpowiedział: "Skrypt w perlu, który zapisuje tablice nie niesie ze sobą zbyt wiele informacji, jeśli nie wiadomo jak te tablice są używane. Pseduokod, który dokładnie mówi jak wygląda ostateczny wzorzec odwołań byłby dużo bardziej użyteczny. Opuść część dotyczącą generowania tablic i wyraź to tak, jakbyś wyliczał rozkład w tej samej chwili, w której generujesz odwołania, no chyba że zrobienie tego jest zupełnie niemożliwe. Nie sądzę, żeby było niemożliwe zrobienie tego w tym przypadku." Mel powiedział:

Wpadłem na to, jak trochę pomyślałem i przerobiłem algorytm w 0.7. Żeby ułatwić całość, dodałem nowy wykres do raportów, który w 0.7 nazwałem ,,Indeks odwołań do stron w czasie''

patrz

http://www.csn.ul.ie/~mel/projects/vmregress/output_sample/mmap/read/25000/mapanon.html

To ten drugi wykres. Na początku jest on na zerowej stronie i przesuwa się po przestrzeni adresowej w czasie. Zupełnie losowy wzór spowodowałby, że wykres wyglądałby jak wykres szumu. Wykres ten powinien dać dobry obraz tego, jak odbywają się odwołania do pamięci.

W 0.6 przy tych testach, byłaby to podobna krzywa, z wyjątkiem tego, że do ostatniej strony odwołowanoby się około 40000 razy przez końcem testu. Oprócz tego, odwołania do stron odbywały się według wzorca liniowego, co było błędem znalezionym po przejrzeniu kodu.

Jeśli ktoś wciąż jest zainteresowany, uruchomię ponownie pełny zbiór testów na 2.4.19 i 2.4.19-rmap14a z 0.7 i ostateczne wyniki wraz z informacją o odwołaniach do stron, więc tym razem nie będziecie musieli zgadywać. Puszczenie całej serii zajmuje mniej więcej cały dzień. Ktoś chętny?

5. Rozszerzenie API jądra w celu obsługi wartości 64-bitowych

27 Aug 2002 - 29 Aug 2002 (9 posts) Subject: "atomic64_t proposal"

People: Dean Nelson

Dean Nelson zaproponował stworzenie zmiennej 'atomic64_t', która miałaby być 64-bitową wersją istniejącej zmiennej 'atomic_t' i włączenie do jądra różnych makr, które pozwoliłyby działać na obydwu zmiennych. Andi Kleen sądził, że dużo ładniejszym rozwiązaniem byłoby dostarczenie wspólnego API jądra dla wszystkich architektur przez dodanie nowych makr, które bezpośrednio radziłyby sobie z 64-bitowymi wartościami. Davidowi S. Millerowi także nie podobało się rozwiązanie z przezroczystą obsługą tych typów danych. Dean odpowiedział: "Twoja uwaga o wspólnym api jądra (dla wszystkich architektur) jest słuszna i dzięki niej przemyślałem jeszcze raz użycie wspólnych makr dla dwóch typów atomowych. Sądzę więc, że skłonię się raczej ku wskazanemu przez Ciebie rozwiązaniu z oddzielnymi makrami (atomic64_add/sub/read itp.) dla typu atomic64_t." Dodał jednak: "Nie mam żadnych planów implementacji tego dla jakiejkolwiek architektury poza IA-64. Ale to api powinno być przedyskutowane i zaaprobowane (albo nie) na tej liście. Implementacje dla innych platform mogą się pojawić, gdy inni poczują, że chcą je zrobić."

6. Ogłoszenie jądra 2.5.32; Popsute IDE; Błąd dźwięków klawiatury

27 Aug 2002 - 31 Aug 2002 (36 posts) Subject: "Linux v2.5.32"

People: Linus TorvaldsUdo A. SteinbergAlexander ViroAndre HedrickVojtech PavlikGerhard MackJos Hulzink

Linus Torvalds ogłosił 2.5.32 (patrz na ChangeLog) i wyjaśnił::

Opóźnione przez różne problemy (włączająć w to błąd MTRR występujący tylko przy HT, który Ingo w końcu znalazł, a który chodził za mną wiele dni). W rezultacie plik jest całkiem spory.

Najbardziej zauważalna jest (już dyskutowana) zmiana IDE i uaktualnienia wątków. Zmiany w warstwie wejścia mogą okazać się trochę bolesne przez chwilę, bo nie tylko dodano dużo opcji konfiguracyjnych, które trzeba dobrze ustawić, by mieć działającą klawiaturę i myszkę (poprawimy ten koszmar użyteczności), ale też same sterowniki są inne i bardziej podobne do urządzeń, które zależały od różnych przyzwyczajeń.

Został włączony główny kod AIO od Bena, Al pracował nad uporządkowaniem rzeczy związanych z gendisk dla wielu sterowników, co zostało ostatnio opuszczone. Do tego dochodzą jak zwykle aktualizacje USB..

A, i różne aktualizacje architektur (sparc64, ppc64, ia-64).

Udo A. Steinberg spojrzał na to i zgłosił: "Wygląda na to, że jądro próbuje przeczytać tablicę partycji na cdromie IDE w trybie emulacji SCSI i mu się to nie udaje." Andre Hedrick napisał, że dojdzie do tego niedługo, jak tylko on i Alan Cox skończą pracę, którą wykonują dla jądra 2.4. Alexander Viro napisał zaś, że włączenie IDE do 2.5 nie działa przy partycjonowaniu. Podał zestaw łat naprawiających tę sytuację, ale czekał na informację od Alana. Alan odpowiedział, że był zbyt zajęty pracą nad Red Hatem beta, by pracować nad rzeczami z 2.5 w ostatnich dniach, ale spojrzy na to. Alexander odparł:

W porządku. Oto zawartość zbioru łat, łatki przyjdą w następnych listach (nie będą przesyłane na l-k)

  1. przesunięcie rzeczy z ide_register_subdriver() (łączące napęd z wyskopoziomowym sterownikiem) do ide-probe.c, zatem pozostałe rzeczy mogą być bezpiecznie równolegle wołane z wejściem na innych napędach [Andre]
  2. koniec wprowadzania ->reinit() - Jens opuścił MOD_DEC_USE_COUNT w paru wyjściach z ide-cd i zapomniał usunąć pętli z ide-floppy, ide-tape i ide-scsi ;-) (->reinit() jest ciałem pętli w róznych ->init(), które powinno być robione dla jednego napędu; w 2.5.32 ide-disk jest w porządku, ide-cd jest w porządku, pomijając mniejsze błędy, a reszta jest kopią ->init())
  3. umieszczenie napędów na listach cyklicznych - per-driver dla tych napędów, które zostały użyte przez sterowniki wysokiego poziomu i ata_unused dla nieużywanych. Umieszczamy napędy na ata_unused na samym końcu ideprobe_init(), a potem przesuwa je na listy sterowników, gdy są używane.
  4. przesunięcie sprawdzenia typu medium, ->driver_req itp. z ide_scan_devices() do ->reinit(). ide_scan_devices() straciło pierwsze dwa argumenty (później całkiem zniknie).
  5. podwójne wołania ide_cdrom_init(), idedisk_init(), itp. zostały usunięte z ide_init_builtin_drivers() (oba były stamtąd wołane (to znaczy z ide_init()) a potem w module_init() dla wysokopoziomych sterowników).
  6. pętle w ide_cdrom_init()/ide_cdrom_exit(), itp. są wyciągnięte odpowiednio do ide_register_module()/ide_unregister_module().
  7. dodanie ->owner do ide_driver_t. MOD_INC_USE_COUNT/MOD_DEC_USE_COUNT usunięte z ->reinit(). ide_reinit_drive() zmieniło się w ,,wołanie ->reinit() dla wszystkich wysokopoziomowych sterowników, które zostały zarejestrowane zanim ktoś zażądał napędu'' (zamiast wariantu, który pojawił się w 2.5.32; ładniejsze i działa poprawnie dla sterowników w modułach).
  8. Oto centralna część serii:

    • ide_reinit_drive() zamieniło się w ata_attach(). Powiedzmy, że jakaś bestia bierze sobie napęd, stara się go dostarczyć wyskopoziomowym sterownikom, a potem wrzuca go do ata_unused, jeśli nic cholernika nie chce. Innymi słowy, to jest to, co robiło ide_register_module(), ale dla pojedynczego napędu.
    • ideprobe_init() woła ata_attach() zamiast dodawać do ata_unused.
    • eliminacja ide_register_module(). Niektóre funkcje wołające już tego nie potrzebują, a niektóre wystąpienia (ide_replace_subdriver()) tak naprawdę chcą ata_attach(drive).
    • ide_scan_devices() zniknęło. Zostały dwie funkcje wołające. To ide_register_module() i ide_unregister_module(). W pierwszym przypadku zmieniono to na ,,umieść sterownik na liście, wyczyść ata_unused przesuwając ją na tymczasową listę i zawołaj ata_attach() dla wszystkich napędów na niej''. W drugim przypadku jest to ,,usuń sterownik z listy, zawołaj ->cleanup() i ata_attach() dla wszystkich napędów'' (->cleanup() porzuca napęd, ata_attach() daje pozostałym sterownikom znać o tym napędzie; jeśli nikt go nie chce, jest umieszczany na liście ata_unused).

  9. ->init() dla wysokopoziomowych sterowników nie jest nigdy wołane (to co innego niż module_init(), gdy są inicjalizowane). Metoda została usunięta, a wszystkie instancje wyczyszczone.
  10. zamiast robienia bałaganu w ide_module_t, kładziemy samo ide_driver_t na liście (cyklicznej) - lista ta jest używane tylko przez ide_module_t dla wysokopoziomowych sterowników. ide_register_module()/ide_unregister_module() bierze teraz ide_driver_t (którego nazwa zmieniła się na ide_register_driver()). /proc/ide/drivers zmieniło się, tak by używać tej listy cyklicznej, używa też seq_file zamiast dawnego domorosłego kodu.
  11. kawałki z 2.5:

    • add_gendisk()/del_gendisk() przesunęło się do into ->reinit() i ->cleanup() ide-{disk,cd,floppy} - to znaczy do momentów, w których wysokopoziomowy sterownik żąda/oddaje napęd.
    • register_disk() też przsunięte do into ->reinit().
    • konsekwentnie, revalidate_drives() zniknęło (wykonywało jakieś pokręcone opóźnione ponowne odczytywanie tablic partycji; już niepotrzebne). Tak samo z ide_geninit().
    • zmiany zgodności z 2.5 w ->revalidate() i obsłudze BLKRRPART - to samo co dla wszystkich innych urządzeń blokowych.

Powodem, dla którego nie mogliśmy zrobić po prostu #11 i prosto tego zakończyć były nieprzyjazne wysokopoziomowe sterowniki, które uważały, że napędy grają fair, jak tylko zostały wysondowane. To jest *źle* - praca z interfejsem (lub związanymi interfejsami) nadal może być ,,niebezpieczna'' i w takim momencie każde normalne WE/WY jest Złą Rzeczą(tm). W wyniku tego, musieliśmy używać bardzo starych sposobów obsługi partycji, rejestrowania, itp.

Nowy wariant pozwala sondującemu kodowi decydować, kiedy bezpiecznie jest wprowadzać ,,w obieg'' napędy - żaden wysokopoziomowy sterownik nie zobaczy napędu zanim nie zostanie zawołane ata_attach(). To przesuwa wiedzę o kolejności między konfiguracją, a normalne WE/WY kodu sondującego, tam gdzie to powinno być. Sterowniki wyskopoziomowe już nie muszą o tym nic wiedzieć - gdy tylko dostaną napęd, to wykonywanie na nich WE/WY jest już bezpieczne.

Problemy z kolejnością konfiguracji różnych interfejsów itp. ciągle zostały tam gdzie były - to zupełnie inna historia i to jest problem poprawek w niskopoziomowych sterownikach. Co więcej, miejsce, w którym wołamy ata_attach() jest bardzo konserwatywne - wykonujemy _całą_ konfigurację interfejsów, a potem wołamy ata_attach() dla wszystiego, co uda się znaleźć. W końcu, kiedyś sterowniki niskopoziomowe powinny umieć zrobić coś takiego: ,,skonfiguruj naszą grupę interfejsów, potem zawołaj ata_attach() dla ich napędów'', ale to znowu jest inna historia, którą z przyjemnością zostawię ludkom, którzy poprawiają sterowniki niskopoziomowe. Wszystkie problemy z szeregowaniem sterowników wysokopoziomowych zostały zredukowane do jednej zasady: nie wołaj ata_attach() dla napędu, zanim nie będzie bezpieczne uzyskanie WE/WY dla niego.

Zbiór łatek nie naprawia wszystkich problemów z tym sterownikiem - kod, który wszedł do 2.5 pochodzi z 2.4.19 i kilka megabajtów zmian weszło od tamtego czasu do 2.4.20-ac. Jednakże te zmiany są głównie w sterownikach niskiego poziomu, więc ich przeniesienie nie powinno spowodować problemów. Zostawię tę radochę Jensowi, żeby to zrobił jak wróci.

Randy Hron zgłosił, że z tym zestawem łatek nic się już nie psuje, a Andre dodał: "Yhy, było to sprawdzone i nie potrzeba już żadnych rozszerzeń dla obsługi wszystkich architektur. Prześlę to najpierw Alowi i Alanowi, a potem tutaj. Taką mam nadzieję."

W innym miejscu Mikael Pettersson zgłosił, że w 2.5.32 przy CONFIG_KEYBOARD_ATKBD=y klawiatura nie beepa. Vojtech Pavlik odpowiedział: "2.5.32 wciąż ma dość złożone opcje konfiguracyjne wejścia - przepraszam, to moja wina, poprawię to wkrótce. Musisz włączyć CONFIG_INPUT_MISC i CONFIG_INPUT_PCSPKR." Mikael potwierdził, że to zadziałało, a Gerhard Mack zapytał: "To aż prosi się o pytanie: Jak posługiwać się wejściem używając PC speakera?" Jos Hulzink odparł: "Łatwo :) Głośniczek jest także mikrofonem. 2.5.32 przejdzie do historii, jako jądro, w którym zaimplementowano rozpoznawanie głosu dla wszystkich komputerów klasy AT... "

7. Interakcje między deweloperami IDE

27 Aug 2002 - 30 Aug 2002 (19 posts) Subject: "ide-2.4.20-pre4-ac2.patch"

People: Andre HedrickAlan Cox

Andre Hedrick ogłosił:

Gotowe i przesłane AC do przejrzenia.

Joel Becker
Nick Bellinger
Alan Cox
Peter Denison
Jeff Garzik
Benjamin Herrensch
Roman Zippel
Alexander Viro

Inni pomogli dostarczając pomysłów.

Powinno działać dla wszystkich architektur z IDE, mogą pojawić się inne problemy powodujące błędy kompilacji, ale nie powinny być związane z IDE.

http://www.kernel.org/pub/linux/kernel/people/hedrick/ide-2.4.20/ide-2.4.20-pre4-ac2.patch.bz2
http://www.kernel.org/pub/linux/kernel/people/hedrick/ide-2.4.20/ide-2.4.20-pre4-ac2.patch.gz
http://www.linuxdiskcert.org/ide-2.4.20-pre4-ac2.patch.bz2

http://www.kernel.org/pub/linux/kernel/people/hedrick/ide-2.5.32/

To powinno coś dać wkrótce, bo przeglądam różne kawałki, które możnaby wziąć i dostać się jeszcze do 2.5 przed DNIEM OSTATECZNYM, który nastąpi w Halloween.

Alan Cox odpowiedział:

Odrzucone. Znalazłem kilka błędów, trochę dziwnych zmian, a niektóre pliki zostały przesunięte w ewidentnie złe miejsca. Pomieszane tam też jest wiele niezależnych zmian.

Andre, żeby to się udało, potrzebuję

Na przykład, mam pliki, które przesunąłeś lub zmieniłeś; oglądanie tego w diff jest straszne. Mam wielkiego diffa z błędami w środku (np. gayle w ppc) i jestem pewien, że mogę część spokojnie usunąć.

Zacznijmy od przesuwania plików. Prześlij mi diffa dla Config/Makefile i listę plików, które należy przesunąć wraz z informacją gdzie przesunąć. Wydaje mi się, że gayle powinno być w m68k, a nie w ppc (w sumie to jestem tego pewien), CMD640 to PCI, dlaczego więc ten plik jest w ,,legacy''. Przez ,,legacy'' rozumiałem coś przed PCI, a nie ,,myślę, że to śmieć'' 8)

Andre napisał:

Stoi, cofam te przesunięcia.

Przerabiam wszystkie rzeczy do przesłania. Potem resztę.

Daj mi chwilkę na uporanie się z Twoimi prośbami, Viro próbuje się nauczyć jak być szalonym łataczem, a nie bombardować łatkami.

8. Problemy z ATI framebuffer w 2.5.31

28 Aug 2002 - 30 Aug 2002 (5 posts) Subject: "still ati fb errors with 2.5.31, thought patch applied"

People: Paul Mackerras

Clemens Schwaighofer zgłosił problemy z kompilacją 2.5.31, w chwili, gdy kompilator dochodzi do kodu sterownika aty128fb. James Simmons odparł, że ten sterownik nie został przeniesiony do nowego API i musi zostać przeniesiony zanim znowu zacznie działać. Paul Mackerras napisał, że podesłałby łatkę, która powinna już być włączona, ale potem odpowiedział sam sobie: "Ale oczywiście te informacje o błędach dotyczyły kodu *z* nałożoną moją łatką. Skompilowałem jądro dla i386 i dostałem te same błędy. Oto łatka, którą należy nałożyć na moją poprzednią łatkę. Powinna ona naprawić wszystko, jednakże nie wypróbowywałem jej jeszcze na maszynie z x86." Clemens odpowiedział, że nowa łatka Paula pozwoliła na kompilację i start jądra, ale są z nią inne problemy, takie jak dziwne kolory czcionek. Dyskusja jednak zakończyła się w tym miejscu.

9. Obsługa anycast dla IPv6

28 Aug 2002 - 30 Aug 2002 (4 posts) Subject: "[PATCH] anycast support for IPv6, linux-2.5.31"

People: David Stevens

David Stevens z IBM ogłosił:

Poniżej załączam łatkę odnoszącą się do 2.5.31 w głównej linii, implementującą obsługę anycast dla IPv6. Ten kod był przesłany i zaakceptowany przez projekt USAGI zeszłej jesieni. Poniżej przedstawiam wysokopoziomowy opis tej implementacji:

  1. API:

    Jakkolwiek RFC przyrównuje anycasting do zwykłego unicasting, to sądzę, że bardziej odpowiednie jest przywiązanie go bliżej poszczególnych aplikacji, więc wybrałem API podobne do multicastingu. Zatem, zamiast trwale przywiązywać adres anycast do komputera, poszczególne aplikacje, które używają anycastingu mogą przyłączyć się lub opuścić ,,grupy anycast'', a komputer będzie rozpoznawać adres anycast jako swój własny, gdy jedna lub więcej aplikacji dołączy do grupy.

    Zatem, na przykład ktoś używający anycastingu do wysoko wydajnego DNS może dodać przyłączenie do grupy anycast w serwerze i tak długo, jak działa serwer DNS, komputer będzie odpowiadał na adres anycast. Ale komputer nie będzie odpowiadać na anycasty gdy serwis, który ich używa nie jest dostępny, zatem zepsuta aplikacja na serwerze, która się skończyła, nie odgrodzi tego serwisu, jeśli tylko są inni działający członkowie grupy anycast na innych komputerach.

    Nie wiem czy to jest kontrowersyjne, czy nie -- dokumenty RFC są napisane bardziej z zewnętrznego punktu widzenia, ale wydają się implikować pewien model zgodny ze sposobem użycia ,,ifconfig'' do dodania adresów anycast. Wydaje mi się, że taki model nie pasuje do najlepszych użyć anycastingu, ale chciałbym dowiedzieć się, co o tym myślicie.

    Interfejs aplikacji umożliwiający przyłączenie się i opuszczenie grupy anycast zawiera 2 wołania setsockopt(): IPV6_JOIN_ANYCAST oraz IPV6_LEAVE_ANYCAST. Argumenty są takie same jak dla analogicznych operacji multicast. Jądro trzyma licznik odwołań członków grup; jeśli staje się zerem, adres anycast nie jest rozpoznawany jako adres lokalny. Gdy licznik jest różny od zera, komputer nasłuchuje na określonym węźle tego adresu, przesyła ogłoszenia w odpowiedzi na żądania (z override=0) i dostarcza wyższym warstwom pakietów przesłanych na adres typu anycast.

    Istnieje także opisany poniżej interfejs w jądrze, który jest używany na przykład przez IPv6 mobility.

  2. Model bezpieczeństwa:

    w RFC 2373 napisano:

    ,,Adres anycast nie może być przypisany do komputera IPv6, to znaczy, że może być przypisany tylko do rutera IPv6.''

    Łatka pogwałca to zdanie w 1. specjalnym przypadku i wyjaśnię dlaczego.

    a) Komputer może mieć ograniczoną możliwość użycia anycast w celu zapobieżenia sytuacji, w której ruting do adresów anycast dla pojedynczego komputera jest rozłożony pomiędzy wiele sieci fizycznych. Wydaje mi się, że aplikacje na początku będą takimi, które nie będą działały na ruterach (wysokowydajne serwery (DNS, http itp.) i mobile IPv6) i te szczególne przypadki nie będą miały problemu z wymaganiami dotyczącymi uczestnictwa w systemie rutingu. Używają one adresów anycast z prefiksem częstym dla adresów unicast w systemie, zatem normalny ruting i tak prowadzi do właściwej sieci i nie ma żadnych zewnętrznych kar na system rutingu za używanie tego typu adresów anycast. Z tego powodu za dozwolone uważam adresy, które odpowiadają istniejącym prefiksom unicast, nawet na zwykłych komputerach.

    W końcu (z przyczyn bezpieczeństwa), musiałem zdecydować, czy anycast powinno wymagać uprawnień superużytkownika. Multicasting tego nie wymaga, ale oczywiście byłby problem z przekłamaniami, jeśli aplikacja przyłączyłaby się do adresu ,,anycast'', który tak naprawdę byłby adresem unicast na innym komputerze w tej samej sieci. Z drugiej strony, wygodnie by było zwykłym użytkownikom móc mieć pożytek z anycastingu, gdzie takie użycie nie łączy się ryzykiem bezpieczeństwa.

    Poniższy kod pozwala nieuprzywilejowanym użytkownikom przyłączanie się do grup anycast, które mają prefiksy (nie wymagają specjalnej propagacji) zgodne z istniejącymi adresami unicast, wymaga jednak roota (tak naprawdę ,,CAP_NET_ADMIN'') i rutera żeby mieć inny anycast (zupełnie niedozwolone na normalnych komputerach). Sądzę, że powinno się to rozszerzyć tak, by wymagało CAP_NET_ADMIN dla wszystkich anycastów (nawet tych pierwszych), które nie są dobrze znane (żeby zapobiec oszukanym adresom unicast).

  3. Implementacja:

    Kod przechowuje listę używanych adresów anycast dla danego interfejsu. Jest on zmodyfikowaną wersją istniejącego kodu multicast z poprawionymi niektórymi rzeczami i operacjami na liście anycast, zamiast operacji na liście multicast. Ponieważ lista adresów anycast jest odseparowana od listy zwykłych adresów, to w ogólności adresy anycast nie będą wybierane jako adresy źródłowe ani dostępne w celu niewłaściwego użycia. Protokoły (takie jak ICMP ECHO), które odpowiadają za wymianę adresu źródłowego na docelowy mają oddzielne sprawdzanie anycastów i w takim przypadku ustawiają źródło na 0 - to pozwala IPv6 wybierać adresy źródłowe spoza zakresu.

    Kod zawiera interfejs setsockopt(), który pozwala łączyć i opuszczać grupy anycast, ale nie ma jeszcze zmian potrzebnych do tego, by działały z nim UDP i TCP. TCP jest problematyczne, bo mechanizm przeszukiwania PCB opiera się na adresie docelowym, co musi się zmienić -- powinno to już na początku być niedozwolone. UDP może działać ograniczone do INNADDR-ANY, ale nie zrobiłem jeszcze potrzebnych zmian. Prawdopodobnie użyję adresu anycast jako źródła, więc będę potrzebował modyfikacji podobnej do tej, którą zrobiłem z ICMP, ale powinno to dać się zrobić bezpośrednio. W końcu, myślę, że pożądana jest też możliwość przywiązywania się także do adresów anycast.

    Nasza pierwsza aplikacja to mobile IPv6, więc ta łatka nie zawiera żadnych zmian wyższej warstwy, które być może mogą być wymagane dla wsparcia wszystkich aplikacji.

    Do użycia wewnątrz jądra, aplikacje (takie jak mobile IPv6) mogą wołać funkcje join i drop dla adresów anycast i funkcję, która sprawdza, czy urządzenie jest w grupie anycast (jeśli dev == 0, sprawdza, czy jakieś urządzenie jest w tej grupie).

    Oto one (podobne do funkcji multicast):

    int ipv6_dev_ac_inc(struct net_device *dev, struct in6_addr *addr)
    - dodaje ,,addr'' jako adres anycast na ,,dev''
    int ipv6_dev_ac_dec(struct net_device *dev, struct in6_addr *addr)
    - usuwa ,,addr'' z użycia jako adres anycast na ,,dev''

    używają one liczników odwołań, zatem tylko pierwsze wołanie do ,,inc'' dla konkretnego adresu doda nowy adres i tylko wtedy, gdy wszystkie odwołania zostaną usunięte przez ,,dec'' adres zostanie usunięty jako lokalny adres.

    Funkcja:

    int ipv6_chk_acast_addr(struct net_device *dev, struct in6_addr *addr)

    zwraca ,,true'' jeśli ,,addr'' jest adresem anycast na ,,dev'', w przeciwnym wypadku zwraca ,,false''. Jeśli ,,dev'' wynosi 0, to przeszukiwane są wszystkie urządzenia.

    Te 3 funkcje dostarczają interfejsu wewnątrz jądra.

  4. Uwagi:

    Sądzę, że ip6_addr_type() powinno sprawdzać *tylko* dobrze znane anycasty, ponieważ wydaje mi się niewłaściw,e żeby ta funkcja musiała przeszukiwać listy wiązane adresów anycast. Potrzebowałaby także argumentu ,,dev'' jeśli go nie ma, jako że adresy anycast, tak samo jak adresy mulitcast i unicast, w tej implementacji są przywiązane do konkretnych urządzeń. Użycie tych adresów na innych urządzeniach nie powinno zwracać typu ANYCAST, ale powinno to robić dla urządzenia, które ma adres anycast. Zatem w większości przypadków bardziej odpowiednie będzie ipv6_chk_acast_addr(), a nie ipv6_addr_type().

    ipv6_addr_type(), z włączonymi modyfikacjami dla zarezerwowanych adresów anycast, ciągle będzie użyteczne w przypadkach, w których wiadomo, że adres *zawsze* będzie adresem anycast (na przykład, zapobieżenie ustawieniu zarezerwowanych anycastów na normalne adresy przez ,,ifconfig''), ale dla kodu wysokiego poziomu, zwykle wymagane będzie sprawdzanie urządzeń. Zatem polecam zatrzymanie obu i używanie ipv6_chk_acast_addr() żeby dowiedzieć się, czy jest to skonfigurowany adres anycast, używanie ipv6_addr_type() żeby wiedzieć, czy adres jest zarezerwowany dla anycastu (skonfigurowany, czy nie).

    Oto, do czego służy ten kod.

  5. Testowanie:

    Napisałem programy do przyłączania się i opuszczania grup anycast i sprawdziłem istnienie tych grup przez interfejs /proc/net (plik ,,anycast6''). Użyłem snifferów sieciowych do obserwacji kolejności odkrywania sąsiadów i sprawdzenia, czy bit override jest czyszczony i testowałem to z wieloma komputerami w grupie anycast ,,rozmawiający'' z niezmodyfikowaną maszyną, która pinguje adres anycast. Sprawdziłem też, że kod dobrze obsługuje ,,override=0'' (obsługuje).

    Dodatkowo, nasza grupa mobile IPv6 użyła tego kodu do przetestowania anycastingu w odkrywaniu adresów w Dynamic Home Agent z kilkoma różnymi topologiami i konfiguracjami.

    Wykonaliśmy testy na maszynie z jednym procesorem i dla jąder z SMP na wieloprocesorowych komputerach.

  6. Do zrobienia:

    Myślę, że następne kroki obejmować będą pozbycie się części UDP, tak, żeby normalne aplikacje z przestrzeni użytkownika mogły w pełni używać anycastingu.

Pekka Savola zaproponował napisanie na początku szkicu opisującego proponowane API, a David odpowiedział:

Nie jest tak, że się z tym nie zgadzam, tak żeby było jasne, ale to nie kłóci się z RFC, które oczywiście nie zawiera opisu API i nie specyfikuje żadnego interfejsu anycast.

Jednakowoż moim najważniejszym celem jest posiadanianie obsługi anycast z interfejsem wewnątrz jądra w 2.5 przed zamrożeniem kodu. :-) Do testowania użyłem API setsockopt() i zostawiłem to w łacie dla innych, żeby mogli zrobić to samo. Chociaż myślę, że to właściwe podejście, z przyczyn, które wymieniłem, wolałbym, żeby ten, być może kontrowersyjny, fragment został usunięty z łatki, niż żeby z jego powodu opóźnione zostało włączenie interfejsu wewnątrz jądra.

Jedyne obecnie użycie anycast, o którym wiem jest w IPv6 mobility, które potrzebuje interfejsu wewnątrz jądra. Interfejs poziomu użytkownika jest ważny dla przyszłych aplikacji, a interfejs setsockopt() z licznikiem odwołań nie znaczy, że nie możemy mieć także także interfejsu ip/ifoconfig dla stałych adresów anycast (wymagane adresy anycast w tej łatce są na przykład stałe). Zatem nie jest to, moim zdaniem, przywiązanie się do jednego wyboru, ale posiadanie (wkrótce) obsługi anycast w jądrze jest ważniejszym pierwszym krokiem.

10. Obsługa Prefix List w IPv6

28 Aug 2002 - 29 Aug 2002 (4 posts) Subject: "[PATCH] IPv6 Prefix List support for 2.5.31"

People: Krishna Kumar

Krishna Kumar ogłosił:

Ta łatka implementuje obsługę Prefix List w IPv6. Powody stworzenia tej łatki to:

Ten kod został przetestowany z IPv6, jak i z Mobile IPv6. Został też zintegrowany z jądrem USAGI.

11. Wygaszanie ekranu aktywowane z klawiatury

28 Aug 2002 - 29 Aug 2002 (2 posts) Subject: "Blank now key"

People: Pavel Machek

Pavel Machek podesłał łatkę i wyjaśnił: " Umożliwienie natychmiastowego wygaszenia ekranu jest bardzo ważne dla urządzeń typu handheld (gdzie ekran może zżerać więcej niż 50% ogólnej mocy) i jest po prostu fajne w innych miejscach (także oszczędza trochę mocy). Zaaplikujcie, proszę." Łatka spodobała się też komuś innemu i napisał, że dobra jest także dla systemów, które są podnoszone zwykle z wyłączonym monitorem.

12. Stan obsługi układu i845mp w 2.4

29 Aug 2002 (2 posts) Subject: "i845mp support: 82845 (Brookdale) 82801BAM/CAM"

People: Alan Cox

Andreas Kerl spytał kiedy obsługa i845mp trafi do jądra, a Alan Cox odpowiedział: "Na końcu. Muszę dać Marcelo wszystkie aktualizacje pci i parę poprawek błędów pci, zanim będę mógł go nakarmić poprawką ide pci_enable_bars. Już teraz ma trochę kawałków tego."

13. Stan e1000 w 2.4

29 Aug 2002 (5 posts) Subject: "e1000 in 2.4?"

Roy Sigurd Karlsbakk zapytał, czy ktoś pracuje nad przeniesieniem sterownika Intel e1000 z 2.5 do 2.4, a David S. Miller odpowiedział, że ten kod był już w drzewie 2.4.20-pre; Adriano Galano podrzucił odnośnik do strony projektu na Sourceforge'u.

14. Opublikowanie VM Regress 0.7

29 Aug 2002 (1 post) Subject: "VM Regress 0.7"

People: Mel Gorman

Mel Gorman ogłosił:

Strona projektu: http://www.csn.ul.ie/~mel/projects/vmregress/
Pliki do pobrania: http://www.csn.ul.ie/~mel/projects/vmregress/vmregress-0.7.tar.gz

Oto czwarta wersja VM Regress, które jest zalążkiem narzędzia do testowania regresji i do porównywania VM w Linuksie. To ostatnia wersja na jakiś czas, jako że fundusze mojego Uniwersytetu stają się coraz mniejsze. Moje się skończą za parę miesięcy i muszę niestety zmienić priorytety. Mam nadzieję, że wrócę do pracy nad tym, gdy zabezpieczę sobie zewnętrzne fundusze, by móc pracować jedynie nad zarządzaniem pamięcią wirtualną ogólnie, a w Linuksie szczególnie.

Ta wersja ma przynajmniej jedną ważniejszą poprawkę błędu. Mógłby on zostać pokazany przez maszynę SMP, która wykonywałaby testy alloc lub błędów stron. Nie miałem żadnych zgłoszeń i samemu też tego nie dostałem, ale jestem całkiem pewien, że możnaby uzyskać zakleszczenie. Projekt kompiluje się teraz dobrze z jądrem 2.5.32, które jest pierwszym jądrem 2.5 od 2.5.28 z którym to się udało. Nie udało mi się przetestować tego z jądrem 2.5.x, ale nie ma powodu, dla którego miałoby nie działać. Jestem zainteresowanymi wszelkimi opowieściami na temat działania/niedziałania VM Regress z 2.5.x

Uruchamianie testów jest teraz znacznie łatwiejsze, są teraz skrypty perlowe, które uruchamiają każdy test i porównanie, produkują raporty, rysują wyniki vmstat itp. Załadują i odładują moduły niezbędne do uruchomienia testu. To redukuje trochę uciążliwą pracę związaną z przygotowaniem testu. Dostępne są także skrypty przeskalowujące wykresy w danym stosunku, zatem porównywanie vmów jest trochę łatwiejsze. Strony man i pomoc on-line jest udostępniona dla każdego z nich.

Moduł mmap będzie teraz uruchamiał testy porównawcze czytania lub pisania zarówno na mapowaniach anonimowych jak i mapowaniach plików. Wykonuje wykresy pokazujące wiek stron, liczniki odwołań, strony obecne w pamięci i wyrzucone na dysk, to, do których stron odwoływano się w czasie, wynik vmstat i trochę informacji na temat czasów. Nie ma ciągle analizy statystycznej, ale to jest praca na 0.9. Pliki z danymi są wszystkie zachowywane jako pliki .data, zatem dowolne narzędzie statystyczne może zaimportować pliki, w których pola oddzielono spacjami. Odnośniki do przykładowych testów znajdują się na stronie w sieci.

Jeśli wrócę do pracy nad tym, 0.8 będzie miało symulację serwera www, którą nakreślił kiedyś Rik Van Riel. Większość z tego, co potrzeba jest już zrobiona w module mmam używanym przez bench_mmap.pl.

Dokumentacja jest, w granicach rozsądku, aktualna i dostarczana z paczką. Jeśli ktoś ma jakieś sugestie, albo chce coś zgłosić, to proszę je przysyłać, a je dodam do listy DoZrobienia. Będę pracował nad tym co jakiś czas.

Pełna lista zmian w 0.7

Wersja 0.7

15. Przeniesienie sterowników dźwięku do nowego systemu blokowania

29 Aug 2002 - 30 Aug 2002 (43 posts) Subject: "1/41 sound/oss/maestro3.c - convert cli to spinlocks"

People: Alan Cox

Ktoś podesłał dużą liczbę łatek na 2.5.32, przekształcających prawie wszystkie pozostałe sterowniki dźwięku OSS tak, żeby używały spin_lock_irqsave() i innych funkcji zamiast nieaktualnego już cli() przy SMP. Tomas Szepe zauważył pewne niespójności w formatowaniu w jego/jej łatce, ale Alan Cox napisał: "Jeśli przeniesie się tak dużo kodu do nowego mechanizmu blokowania to nie można jęczeć. Jeśli on chce wziąć stary kod OSS i sprawić, by działał w świecie 2.5, to jeśli o mnie (jako o eks-opiekuna kodu OSS) chodzi, może to sobie sformatować jak tylko chce."

16. Opublikowano Linux 2.4.20-pre5-ac1

30 Aug 2002 - 1 Sep 2002 (4 posts) Subject: "Linux 2.4.20-pre5-ac1"

People: Alan Cox

Alan Cox ogłosił:

[+ oznacza rzeczy, które poszły do Marcelo, o rzeczy, które nie poszły, * rzeczy, które są włączone teraz do głównego jądra, a X te, które okazały się złe i wypadły z jądra, - oznacza rzeczy niepasujące do głównego drzewa]

Synchronizacja i zebranie głównych spraw. Rzeczy dotyczące IDE, które przysłał Andre jeszcze nie weszły - odesłane do kolejnego debugowania. Ciągle zalecana jest ostrożność w obchodzeniu się z IDE, a wiadomo, że ide-scsi wywala się.

Linux 2.4.20-pre5-ac1

        Łączenie z 2.4.20pre5
o       Poprawka kompilacji IDE                         (me)
o       Aktualizacja defconfig                          (Niels Jensen)
o       Różne poprawki ostrzeżeń kompilacji             (Niels Jensen)  
+       Usunięcie debugującego printk epad, które umknęło   (Moritz Barsnick) 
o       Poprawka budowania PPC dla pre4-ac              (Ben Herrenschmidt)
o       Poprawka zawieszania w Matrox DRM               (Jonny Strom)
o       Przeniesienie poprawek przy alokacji w LDT z 2.5  (Manfred Spraul)
+       Lp tidy i poziomy printk                (Lucas Correia Villa Real)
o       Łatka aktualizująca rozmiar regionu yenta       (Manfred Spraul)
+       Poprawka wycieku magistrali i2c dla acorn pcf8583   (Silvio Cesare)
+       Poprawka e100                                   (Linus Torvalds)
o       Kolejne aktualizacje i810 audio                 (Juergen Sawinski)
+       Porządne wyjście ver_linux przy gcc 3.x         (Steven Cole)
o       Poprawki ppp_generic do budowy na maszynach     (Bjorn Helgaas)
        z out* jako makrami 
o       aktualizacje pdc4030                            (Peter Denison)   
+       aktualizacje sterownika dźwięku Forte           (Martin Petersen)
o       poprawka błędu ID AMD7441 PCI 
o       Ograniczenie makr asm-ia64 io                   (Andreas Schwab)

17. Wymagania konfiguracyjne dla myszek USB

30 Aug 2002 (2 posts) Subject: "USB mouse in 2.4.19-pre4 vs later"

People: Tim Habermann

Mario Mikocevic zgłosił, że jego myszka na USB przestała działać w X Windows po aktualizacji na wersję wyższą niż 2.4.19-pre4 czy -pre5. Tim Habermann odparł: "Miałem ten sam problem przy migracji z 2.4.18 na czyste 2.4.19. Żeby to naprawić trzeba uaktywnić nową opcję w obsłudze USB, ,,HID input layer support''."

18. Linux 2.2.22-rc2

30 Aug 2002 - 31 Aug 2002 (3 posts) Subject: "Linux 2.2.22rc2"

People: Alan Cox

Alan Cox ogłosił:

To idzie od razu po rc1, bo zawiera wiele poprawek problemów z lokalnym bezpieczeństwem znalezionych przez Solar Designera i paru innych gości. Reszta rzeczy jest mniej ważna, w sumie to cała kolejka rzeczy oczekujących na wejście do 2.2.

Specjalne podziękowania dla ludzi z Openwall, którzy wykonali prawie całą pracę związaną z przenoszeniem kodu związanego z bezpieczeństwem z 2.4.x. To jest głównie ich aktualizacja jądra, nie moja.

2.2.22-rc2
o       Poprawka problemów z isofs po loopbacku         (Balazs Takacs)
o       Przeniesienie z 2.4 shutdown/reset SIGIO        (Julian Anastasov)
o       Poprawka zgłaszania błędów w przypadku OOM      (Julian Anastasov)
o       Lista opiekunów 2.2 w MAINTAINERS               (Keith Owens)
o       Ustawienie atime dla gniazd AF_UNIX             (Solar Designer)
o       Odnowienie konfiguracji startowania SPARC MD    (Tomas Szepe)
o       Wiele dalszych poprawek znaku/przepełnień       (Solar Designer)
o       Poprawka ov511 'vfree w przerwaniu'             (Mark McClelland)

Krzyśkowi Taraszce podobała się ta łatka, ale zgłosił, że PowerPC wciąż nie działa. Zaproponował szybkie, ale paskudne łatki na czas, w którym wypracuje lepsze rozwiązanie.

19. Różne łatki ARM

30 Aug 2002 (1 post) Subject: "Patches..."

People: Russell King

Russell King ogłosił:

Mam zamiar przesłać 8 łatek:

To są łatki, które znajdują się w drzewie ARM i wydaje mi się, że będą użyteczne dla innych; pozbierano w nich poprawki błędów i kompilacji. Wszystko powyższe nie weszło do 2.5.32.

Gdzie to możliwe, zostały przesłane opiekunom albo na adres trivial patch Rusty'ego. Jednakże, jeśli ludzie chcą wziąć którąś z tych łatek, włączyć ją do swoich drzew, a w końcu przesłać je Linusowi, to ja nie mam nic przeciwko.

Wszystkie łatki, które nie zostaną wzięte zostaną w pewnym momencie ponownie przysłane (teraz to jest gdzieś między 3 tygodnie a miesiąc).

W kolejnych wiadomościach wyjaśnił, że łatka keybord służyła do obsługi dodatkowego klawisza '#' na numerycznej klawiaturce ARM. Łatka rdunzip zaś zapewnia, że jądro zgłasza błędy przy odzipowywaniu ramdysków.

20. Poprawki operacji na PCI dla 2.5.32

30 Aug 2002 (17 posts) Subject: "[BK PATCH] PCI ops cleanups for 2.5.32-bk"

People: Greg KH

Greg KH ogłosił:

Oto wyczyszczenie pci_ops, które dyskutowaliśmy w zeszłym tygodniu na lkml. Usunięto sporo kodu ze specyficznych dla architektur implementacji funkcji pci_*_config* i z rdzenia pci_hotplug (tak, kod pci_hotplug ciągle nie działa, pracuję nad tym, będzie następne...)

Te łatki zawierają poprawki prawie wszystkich fragmentów kodu zależnych od architektury. Mam pewną liczbę łatek, które prześlę bezpośrednio do opiekunów architektur; te łatki nie są włączone do drzewa bk.

Chciałbym podziękować Mattowi Dobsonowi oraz Hannie Linder za wykonanie dużej części tej pracy.

Ta seria zawiera także łatkę driverfs pci pool od Davida Brownella (tak długo jak robimy zmiany w pci...)

Do wzięcia z: http://linuxusb.bkbits.net/pci-2.5

21. Nowa funkcja VFS: przeszukiwanie cache i-węzłów

31 Aug 2002 - 3 Sep 2002 (9 posts) Subject: "[BK-PATCH-2.5] Introduce new VFS inode cache lookup function"

People: Anton Altaparmakov

Anton Altaparmakov ogłosił:

Poniższy ChangeSet dla obecnego drzewa Linusa w BK dodaje do VFS jedną funkcję, fs/inode.c::ilookup().

Funkcja ta jest wymagana w NTFS podczas zapisu stron metadanych i-węzła przy użyciu ,,ścieżki brudnych stron'' z VM, jako że potrzebujemy wiedzieć, czy jest aktywny i-węzeł w icache, ale nie chcemy wołać iget(), bo jeśli i-węzeł nie jest aktywny, to nie ma potrzeby jego zapisu... - można zamiast tego przejść do następnego .. - jeśli jest aktywny i-węzeł, to muszę dostać strukturę inode celem wykonania blokowania, odpowiednego do wykonania zapisu.

Jeśli coś się Wam nie podoba w tej łacie, to proszę, dajcie mi znać co to jest, najlepiej z opisem tego, co byście chcieli w zamian, żebym mógł łatkę zmodyfikować...

Bez takiego przeszukiwania icache niemożliwe jest zapisanie i-węzłów przez ,,ścieżkę brudnych stron'' VM, przynajmniej ja nie widzę innej możliwości. - Jedyną alternatywą jaką widzę, jest powielenie całej icache tylko dla NTFS, tak, żeby można było wykonać wewnętrzenie przeszukiwania, ale sądzę, że to głupie, mając na uwadze, że VFS trzyma już cache i-węzłów...

David Woodhouse dodał, że JFFS2 także tego potrzebuje, a Nikita Danilov napisał to samo o ReiserFS.

22. Śledzenie wyczerpania się uchwytów plików

31 Aug 2002 (4 posts) Subject: "[patch 2.4.19] reboot on out-of-file handles"

People: Dr. David Alan GilbertAlan Cox

Dr. David Alan Gilbert ogłosił:

Poniżej znajdziecie łatkę, która dodaje możliwość paniki jądra, jeśli zabraknie uchwytów plików (przez ustawienie /proc/sys/fs/file-max-panic na none-0). Jeśli połączy się to z reboot-on-panic, to ozancza to, że serwer ma szansę wyjść z sytuacji, w której wszystko wariuje. W łatce wołane jest show_state przed paniką, żeby logować co się dzieje - dodanie czegoś podobnego, co dałoby listę otwartych uchwytów plików byłoby sensowne.

Łatka ta jest do nałożenia na czyste 2.4.19 i była testowana na sparc64.

Alan Cox odpowiedział, że to jest już do zrobienia w przestrzeni użytkownika, jako część przetwarzania wykonywanego przed demona watchdog. David zgodził się, że to jest najlepsze rozwiązanie, jednakże robienie tego w przestrzeni użytkownika wydaje się uniemożliwiać zalogowanie stanu systemu w chwili pojawienia się błędu. Ale Alan napisał: "Jeśli twój demon trzyma kilka otwartych uchwytów, które są wielokrotnie używane i plik z logiem, to może móc to zrobić, bo problem nie dotyka watchdoga."

23. Opublikowano Syscalltrack 0.74

31 Aug 2002 (1 post) Subject: "ANN: syscalltrack 0.74, "Hyperactive Iguana" released"

People: Muli Ben-Yehuda

Muli Ben-Yehuda ogołosił:

syscalltrack-0.74, dziesiąta wersja _alfa_ programu śledzącego wywołania jądra Linuksa jest już dostępna. syscalltrack obsługuje wersje jądra 2.4.x na architekturach i386 i UML. Wersje 2.5.x także powinny działać, ale nie były równie wyczerpująco testowane. Ze względu na problemy techniczne, jądra 2.2.x NIE są obsługiwane w tej wersji. Obecna wersja zawiera obsługę prawie wszystkich wołań systmowych - od ostatniej wersji dodano ich ponad 100.

Miłego hakowania i śledzenia!

=======================================================================
Nowości w wersji 0.74, ,,Hyperactive Iguana''
-----------------------------------------------------------------------

24. Linux 2.5.33 opublikowane

31 Aug 2002 (4 posts) Subject: "Linux v2.5.33"

People: Linux v2.5.33

Linus Torvalds ogłosił Linuksa 2.5.33 (patrz: lista zmian), pisząc:

Znowu sporo rzeczy; osobiście byłbym wdzięczy, gdyby ludzie, którzy naprawdę używają ch*go sterownika stacji dyskietek go przetestowali. Złamałem się i próbowałem to naprawić, jako że w 2.5.x jest to zepsute dłużej niż większości ludzi chce się pamiętać.

Nie mam nawet dyskietek, żeby to przetestować, sprawdziłem tylko, że mogę przeczytać dwie stare dyskietki z kopiami zapasowymi; jedna przeczytała się dobrze, a na drugiej udało się przeczytać 90%, co i tak było lepszym wynikiem niż oczekiwałem, bo obie dyskietki mają przynajmniej pięć lat. Nigdy nie miałem szczęścia do tych nie budzących zaufania 3.5" rzeczy, wolałbym mieć z nimi jak najmniej do czynienia.

W każdym razie, oprócz stacji dyskietek, w jądrze znalazły się organizacyjne poprawki IDE zrobione przez Ala, kolejne łączenie z Andrew i trochę rzeczy związanych z siecią (przesunięcie segmentacji TCP na karty sieciowe i początki obsługi SCTP).

I NTFS, JFS i oczywiście aktualizacje USB. A, i trochę rzeczy dotyczących wejścia klawiatury, które powinny naprawić błędy w przełączeniach wejścia.

25. NTFS 2.1.0a dla jąder 2.4.19 i 2.4.20-pre-BK

1 Sep 2002 (1 post) Subject: "ANN: NTFS 2.1.0a for Linux 2.4.19 and 2.4.20-pre-BK"

People: Anton Altaparmakov

Anton Altaparmakov ogłosił:

Nowy sterownik NTFS 2.1.0(a) jest teraz dostępny dla jądra 2.4.19. W NTFS 2.1.0(a) zaimplementowano pierwsze kroki w kierunku obsługi nadpisywania plików.

Pełne i przyrostowe łatki są dostępne ze strony Linux NTFS:
http://linux-ntfs.sf.net/downloads.html
i ze strony projektu na Sourceforge (tam są także starsze łatki):
http://sf.net/project/showfiles.php?group_id=13956&release_id=107961

Jeśli używacie bitkeepera, możecie wyciągnąć NTFS 2.1.0a z naszego repozytorium bitkeeperowego (uwaga: jest ono oparte na obecnym drzewie Marcelo w bitkeeperze, czyli w tej chwili jest to 2.4.20-pre5, będzie się to zmieniało zgodnie ze zmianami w repozytorium Marcelo):
http://linux-ntfs.bkbits.net/ntfs-2.4

Obecny kod jest relatywnie dobrze przetestowany zarówno dla mmap(2), jak i dla write(2), w obydwu przypadkach zarówno przy użyciu istniejących aplikacji do losowego zapisu do plików jak i specjalnych programów wykonujących specjalizowane zapisy w celu sprawdzenia warunków brzegowych.

Ciągle jednak kod był uruchamiany jedynie na dwóch komputerach, więc bardzo proszę o robienie kopii zapasowych przy używaniu tej wersji NTFS. Jestem przekonany, że Wasze dane nie znikną, ale nie jestem skłonny tego gwarantować. Wstawiłem do pakietu odpowiednio bardzo przerażającą wiadomość, żeby narazie przestraszyć przypadkowych użytkowników...

Cechy NTFS 2.1.0(a)
=========================

Możliwość nadpisywania istniejących plików zarówno przez mmap(2) jak i write(2).

Możliwość zrobienia loopbacka na pliku NTFS i posiadania pełnego dostępu czytania/pisania do urządzenia loopback. Można na przykład stworzyć system plików Linuksa na urządzeniu loop i go zamontować.

To była najbardziej pożądana cecha, bo pozwala ona na instalację Linuksa na partycji NTFS przy użyciu sztuczki z loopback, to znaczy pod windowsami ktoś robi duży plik na NTFS, potem startuje Linuksa (z CD instalacyjnego, z dyskietki lub z czegokolwiek) a potem jako root wykonuje:

mount -t ntfs -o rw /dev/hda1 /mnt/ntfs
losetup /dev/loop0 /mnt/ntfs/some_dir/preprepared_large_file
mke2fs -j /dev/loop0
mount -t ext3 /dev/loop0 /mnt/new_root
mkdir old_root
<instalacja Linuksa na /mnt/new_root>
umount /mnt/new_root
losetup -d /dev/loop0
umount /mnt/ntfs

Od tej pory, można startować Linuksa i używając minimalnego ramdiska załadowanego na przykład przez dyskietkę, trzeba mieć tylko coś podobnego do poniższego:

mount -t ntfs -o rw /dev/hda1 /mnt/ntfs
mount -t ext3 -o loop /ntfs/some_dir/preprepared_large_file /mnt/new_root
cd /mnt/new_root
pivot_root . old_root
exec chroot . sh <dev/console >dev/console 2>&1
umount /old-root

[Zauważ, że prawdopodobnie nie będzie można odmontować /old-root, ale to nie szkodzi. To nikomu nie przeszkadza... Zawsze można to schować wewnątrz root/old_root albo czegoś takiego, więc użytkownicy tego nie zobaczą.]

Tak naprawdę nie próbowałem instalować Linuksa w ten sposób, ale Richard Russon (flatcap) przetestował te rzeczy z loopback/mke2fs/read-write i mu dobrze działało.

Ograniczenia możliwości nadpisywania w NTFS 2.1.0(a)
================================================

Proszę wszystkich, którzy wypróbowywują ten nowy kod o powiadomienie mnie, jak się sprawuje...

26. Aktualizacja uCLinux

1 Sep 2002 (1 post) Subject: "[PATCH]: linux-2.5.33uc0 (MMU-less support)"

People: Greg Ungerer

Greg Ungerer ogłosił:

Najnowszy zbiór łatek MMU-less jest pod adresem:

http://www.uclinux.org/pub/uClinux/uClinux-2.5.x

Głównie zmiany dostosowawcze do 2.5.33. Sporo wyrzucania starego cli/sti (którego już nie ma).

27. Nowy kod debugowania jądra dla x86

1 Sep 2002 (1 post) Subject: "[PATCH] kprobes for 2.5.33"

People: Rusty Russell

Rusty Russell ogłosił: "Ta łatka umożliwia robienie pułapek na prawie wszystkie adresy jądra, jest użyteczna do różnych zadań związanych z hakowaniem jądra i do budowania większej infrastruktury. Działa tylko dla x86, ale obsługa innych architektur może być dodana, jeśli ktoś chce."

28. Usprawnienia przeszukiwania cache IPv4 Route

2 Sep 2002 (1 post) Subject: "[BKPATCH] lockfree rtcache lookup using RCU"

People: Dipankar Sarma

Dipankar Sarma ogłosił:

Kod nieblokującego przeszukiwania cache ipv4 route można wyciągnąć z -

http://lse.bkbits.net/linux-2.5-rcu-rtcache

Przyspiesza on przeszukiwanie cache o około 30-50%, co zmierzony przy pomocy testu porównawczego zaproponowanego przez Dave'a.

http://marc.theaimsgroup.com/?l=linux-kernel&m=102258603404836&w=2

Całą dyskusję można przeczytać pod adresem: http://marc.theaimsgroup.com/?t=102258611100001&r=1&w=2

Zmiany w stosunku do drzewa Linusa to:

ChangeSet@1.500, 2002-09-02 12:34:24+05:30, dipankar@in.ibm.com
Implementacja nieblokującego przeszukiwania tras z cache ipv4 przy użyciu RCU.

ChangeSet@1.499, 2002-09-02 11:54:55+05:30, dipankar@in.ibm.com
Dodanie ,,lekkiej'' bariery dla czytania (read_barrier_depends()) dla czytania zależnego od danych. Także dodanie bardziej bezpośrednich wersji nazw takich jak read_barrier()/write_barrier().

ChangeSet@1.498, 2002-08-27 00:27:13+05:30, dipankar@in.ibm.com
Dodanie infrastruktury RCU opartej na rcu_poll w jądrach -aa z obsługą wywłaszczania i oddzielnych kolejek dla każdego procesora.

29. Dodanie XFS do 2.5

3 Sep 2002 (1 post) Subject: "[PATCH] XFS filesystem support"

People: Christoph Hellwig

Christoph Hellwig ogłosił:

Następująca łatka dodaje do aktualnego drzewa BK (albo do 2.5.33) infrastrukturę Config/Makefile/Documentation dla XFS. Cały kod XFS jest zbyt duży, by go wysyłać jako łatkę na lkml, więc umieściłem tarballa pod adresem:

ftp://ftp.kernel.org/pub/linux/kernel/people/hch/xfs/xfs-2.5.33-20020903.tar.gz

oraz

ftp://ftp.kernel.org/pub/linux/kernel/people/hch/xfs/xfs-2.5.33-20020903.tar.bz2

który może być po prostu rozpakowany w głównym katalogu ze źródłami jądra. Łatka i rozpakowany tarball daje w pełni funkcjonalny sterownik systemu plików XMS, ale nie daje żadnych dodatkowych cech, które wymagałaby zmian VFS.

Ten kod XFS bardzo różni się od ostatniej oficjalnej wersji (XFS 1.1). Nazywając rzeczy po imieniu, używa on ogólnego WE/WY, usunięto z niego sporo nieużywanego kodu, który był potrzebny w systemie IRIX, ale w Linuksie jest zastąpiony przez sprawdzenia na poziomie VFS (na przykład sławne sprawdzenia zmian nazw).

30. Sondowanie x86 BIOS Enhanced Disk Device (EDD)

3 Sep 2002 - 4 Sep 2002 (7 posts) Subject: "[RFC][PATCH] x86 BIOS Enhanced Disk Device (EDD) polling"

People: Matt DomschAndre Hedrick

Matt Domsch napisał:

Systemy na x86 cierpią na brak powiązania między tym, co BIOS uważa za dysk startowy, a tym, co Linux uważa za to, co BIOS uważa za dysk startowy BIOS Enhanced Disk Device Services (EDD) 3.0 dostarcza możliwości, żeby adapter dyskowy w BIOS-ie mógł powiedzieć systemowi operacyjnemu, co według niego jest dyskiem startowym. Chociaż ta cecha nie jest jeszcze zaimplementowana w wielu BIOS-ach (co oznacza, że nie należy w pełni ufać jej działaniu), przyszedł czas na to, żeby Linux otrzymał jej obsługę, tak, by był gotowy na moment, gdy BIOS-y z taką funkcjonalnością będą dostępne.

EDD działa dostarczając lokalizacji (np. PCI 02:01.0) szyny (PCI, PCI-X, ISA, InfiniBand, PCI Express czy HyperTransport) i informacji o lokalizacji (np. SCSI ID 5 LUN 0) interfejsu (ATAPI, ATA, SCSI, USB, 1394, FibreChannel, I2O, RAID, SATA) dla każdego urządzenia BIOS Int13. Poniższa łatka tworzy CONFIG_EDD, które, jeśli zostanie zdefiniowane, wykonuje wołania odzyskujące i zachowujące tę informację. Potem jest ona eksportowana (tak, kolejne /proc, będę szczęśliwy, jeśli będę mógł to zmienić na driverfs lub cokolwiek innego, jeśli będzie to miało sens) do /proc/edd/{bios-device-number}, w następujący sposób:

# ls /proc/edd/
80 81 82 83 84 85

# cat /proc/edd/80
host_bus_type: PCI 02:01.0 channel: 0
interface_type: SCSI id: 0 lun: 0

Warning: Spec violation. Key should be 0xBEDD, is 0xDDBE
Warning: Spec violation. Padding should be 0x20, is 0x00

# cat /proc/edd/81
host_bus_type: PCI 04:00.0 channel: 0
interface_type: SCSI id: 0 lun: 0

Warning: Spec violation. Device Path checksum invalid (0x4b should be 0x00).

W powyższym przypadku BIOS int13 device 80 (dysk startowy) wierzy, że jest na PCI 02:01.0, SCSI szyna 0, ID 0 LUN 0 (w takim przypadku jest to karta Adaptec 39160). Podobnie, urządzenie 81 wierzy, że jest na PCI 04:00.0, kanał 0, ID 0, LUN 0 (karta Dell PERC3/QC). W obu przypadkach producenci BIOS muszą zrobić trochę poprawek, więc ostrzegam, że działanie BIOS-u może nie odpowiadać specyfikacji.

Odpytywanie sterowników urządzeń jest możliwe w przestrzeni użytkownika (zarówno przez SCSI ioctl lub IDE /proc/ide/*/config), żeby porównać wyniki celem określenia, który dysk jest dyskiem startowym.

Zgłaszane jest conajwyżej 6 urządzeń BIOS, co wypełnia przestrzeń, która zostaje w empty_zero_page. Ogólnie, można się przejmować tylko urządzeniem 80h, chociaż dla oprogramowania RAID1 wiedza o tym, czym jest 81h może również być użyteczna.

Najważniejsze zmiany zaimplementowane w tej łatce:
arch/i386/boot/setup.S - wołania int13 trzymają wyniki w empty_zero_page
arch/i386/kernel/setup.c - kopiuje wyniki z empty_zero_page do lokalnego miejsca
arch/i386/kernel/edd.c - eksportuje wyniki przez /proc/edd/

Jeśli tego użyjecie, prześlijcie proszę raport sukcesu/porażki wraz z typem adaptera i wersjami BIOS na adres edd30@domsch.com. Trzymam ich spis pod adresem http://domsch.com/linux/edd30/results.html. Jeśli jądro skompilowane z CONFIG_EDD=m, proszę przyślijcie mi wynik 'modprobe edd debug=1' - to więcej mówi.

Poniższa łatka nakłada się na BK-current 2.5.x. Jest też dostępna w BitKeeperze pod adresem: http://mdomsch.bkbits.net/linux-2.5-edd

Andre Hedrick odpowiedział: "WOOHOO! To wygląda na coś naprawdę fajniutkiego! Matt, gdzie jest jakiś adres normalnej łatki dla tych, którzy nie wierzą w BK?" Matt napisał, że taka oczywiście istnieje i podał odnośnik.

31. Opublikowanie gcml2 w wersji 0.7.1

3 Sep 2002 (1 post) Subject: "ANNOUNCE: gcml2 version 0.7.1"

People: Greg Banks

Greg Banks ogłosił:

gcml2 jest (oprócz innych rzeczy) analizatorem składni języka Linux kconfig. Wersja 0.7.1 jest dostępna pod:

http://sourceforge.net/project/showfiles.php?group_id=18813&release_id=108721

oraz

http://www.alphalink.com.au/~gnb/gcml2/download.html

Jest to wersja gcml2 naprawiająca błędy. Dziękuję Randy'emu Dunlapowi, w szczególności za zgłoszenia błędów. Przyszłe ogłoszenia takich wersji będą pojawiały się tylko na liście kbuild-devel.

Oto krótka lista zmian.

32. Stan jądra 2.5. 4 września 2002

3 Sep 2002 (1 post) Subject: "[STATUS 2.5] September 4, 2002"

People: Guillaume Boissiere

Guillaume Boissiere ogłosił:

Ostatnia i najfajniejsza akutalizacja statusu jądra jest dostępna pod adresem: http://www.kernelnewbies.org/status/

W tym tygodniu warte zauważenie jest włączenie SCTP (Stream Control Transmission Protocol) w 2.5.33.

33. Stan zgłoszonych problemów

3 Sep 2002 - 4 Sep 2002 (5 posts) Subject: "2.5 Problem Report Status"

People: Thomas MolinaRobert LoveAxel H. Siebenwirth

Thomas Molina zgłosił:

Najnowsza wersja strony ze stanem zgłaszanych problemów znajduje się pod adresem: http://members.cox.net/tmolina/kernprobs/status.html

Uwagi:

               Raport problemów jądrze 2.5, 4 września 
   Nazwa problemu			Stan               	Dyskusja
   schedule() z wyłączonymi irq 	otwarty			03 wrze 2002
   schedule i przerwanie          	Brak dalszej dyskusji 	2.5.31
   oops w JFS 	              		Brak dalszej dyskusji 	2.5.31
   oops przy odmontowywaniu         	Brak dalszej dyskusji 	2.5.31
   problem z usb                   	Brak dalszej dyskusji 	2.5.31
   BŁĄD pte.chain                   	Brak dalszej dyskusji 	2.5.31
   zepsute cciss                    	propozycja poprawki	2.5.31
   oops w qlogicisp                  	otwarty                 01 wrze 2002
   błąd w qlogic                    	Brak dalszej dyskusji 	2.5.31
   oops w kmap_atomic               	Brak dalszej dyskusji 	2.5.31
   problem ze swapem                    Brak dalszej dyskusji 	2.5.31
   oops w gpm.c                  	Brak dalszej dyskusji 	2.5.31
   błąd alokacji stron 	        	Brak dalszej dyskusji 	2.5.31
   oops w driverfs                  	Brak dalszej dyskusji 	2.5.31
   oops przy restarcie 2.5.32          	otwarty                 30 sie 2002
   oops przy umount ext2                otwarty                 30 sie 2002
   DEBUG_SLAB oops                	otwarty                 30 sie 2002
   problemy z 2.5.32-mm1           	otwarty                 30 sie 2002
   problem z programowym zawieszaniem  	otwarty                 30 sie 2002

Andre Hedrick był zadowolony z wyników IDE; powiedział, że martwił się zbyt szybką migracją kodu z 2.4 do 2.5. Robert Love napisał, że problem ,,schedule() z wyłączonymi irq'' jest rozwiązany w bitkeeperowym drzewie Linusa Torvaldsa i że to rozwiązanie pojawi sie w 2.5.34, więc problem można zaznaczyć jako zamknięty. Dodał: "Zauważcie, że to nigdy nie był problem - to tylko niosąca pewną informację wiadomość do debugowania, która niestety pojawiała się znacznie częściej niż oczekiwano." Na temat oopsa JFS napisał Axel H. Siebenwirth:

W porządku. Mój oops w JFS, który był oopsem w tym samym stylu jak ten z 2.5, zniknął. Niestety nie udało mi się jeszcze stwirdzić jak spowodować, żeby moja zupełnie normalna klawiatura PS/2 zadziałała z obecnym jądrem 2.5.33. Powodem tego są dziwaczności opcji sterownika wejścia. Nie mogłem tego jeszcze przetestować.

Ale podejrzewam, że ten oops w JFS 2.5 powinien także zniknąć. Nie potrafię jasno stwierdzić, czy to było coś, co zostało naprawione w drzewie JFS, czy to moja aktualizacja gcc, to znaczy coś zostało naprawione w gcc i nie chcę tego testować.

Thomas odpowiedział: "Spodziewam się, że niektóre rzeczy się psują, są naprawiane, a potem znowu się psują w rozwojowych wersjach jądra. Widziałem to w 2.1, 2.3 tak samo jak w 2.5. Podejrzewam, że to wszystko się wyrówna po zamrożeniu funkcjonalności."

34. Leonard Zubkoff zginął

4 Sep 2002 (1 post) Subject: "Leonard Zubkoff killed"

People: Larry M. Augustin

Larry M. Augustin napisał, że zmarł Leonard Zubkoff, długoletni twórca wolnego oprogramowania. Larry napisał:

Wiele z was znało pewnie dewelopera jądra Linuksa, Leonarda Zubkoffa (opiekuna BusLogic i DAC960, między innymi). Leonard zginął ostatnio w katastrofie helikoptera. Patrz http://www.ktva.com/Stories/0,1413,163%257E6883%257E834332,00.html. Leonard był jednym z najzdolniejszych ludzi jakich znałem i uważałem się za szczęściarza, że mogłem z nim pracować. Będziemy za nim tęsknić.

 

 

 

 

 

 

Sharon And Joy
 

Kernel Traffic is grateful to be developed on a computer donated by Professor Greg Benson and Professor Allan Cruse in the Department of Computer Science at the University of San Francisco. This is the same department that invented FlashMob Computing. Kernel Traffic is hosted by the generous folks at kernel.org. All pages on this site are copyright their original authors, and distributed under the terms of the GNU General Public License version 2.0.

Mirror provided by HKMirror. Sponsored by Porno Verzameling and webcamsex