[so2] [Tema 3] Intrebare read simplu

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Tue Apr 30 18:40:48 EEST 2019


Alexandru Neculai via so2 <so2 at cursuri.cs.pub.ro> writes:
> Salut,
>
> Am o dilema referitoare mecanismul pe care trebuie sa-l implementam in tema.
> Incerc sa implementez read-ul simplu (fara verificare de CRC) - daca
> primesc un bio cu operatia READ, ii schimb bi_disk-ul cu unul de la cele
> doua device-uri "fizice" si apelez submit_bio_wait, iar dupa ce se intoarce
> aceasta functie de submit, refac bi_disk-ul la valoarea initiala si apelez
> bio_endio. Problema e ca sistemul crapa la primul test de read (5) cu
> eroarea : BUG: unable to handle kernel paging request at c15c28c8.
> Daca cineva s-a mai lovit de asa ceva sau daca abordez gresit problema, imi
> puteti da un hint, va rog?

Ai două opțiuni:
* Aloci un bio nou (folosind bio_alloc), cu spațiu nou (noi pagini
pentru acel bio). Apoi copiezi din bio-ul nou creat în cel primit.
* Creezi un bio nou, clona a bio-ului primit (folosind bio_clone). Nu
cred că doar înlocuirea bi_disk e suficientă.

Răzvan


More information about the so2 mailing list