[pso] [Tema5] Ceatza
Razvan Deaconescu
razvand at cs.pub.ro
Mon Jun 4 23:26:53 EEST 2007
Costin Boldisor wrote:
> Trebuie sa recunosc ca dupa 4 ore de citit documentatii, cursuri si
> laboratoare in
> legatura cu block devices sunt tot in ceatza...
>
> Iata lista mea de nelamuriri:
>
> 1. La incarcarea modulului, trebuie adaugate doua discuri? Ma refer la
> sdb1 si sdb2. Daca da, ce trebuie scris
> in campul disk_name de la gendisk? Am incercat cu "sdb1" si imi spune
> "invalid partition table" iar cu "/dev/sdb1" este
> o eroare mult mai lunga.
nu trebuie sa le adaugi in modulul tau de kernel; modulul tau se ocupa
numai de dispozitivul /dev/ssr
modulul asociat pentru SCSI se ocupa de /dev/sdb1, respectiv /dev/sdb2;
pentru lucrul cu aceste doua dispozitive fizice (in sensul ca pentru a
trimite structuri bio) trebuie sa folosesti apelul open_bdev_excl
>
> 2. Exemplul din laboratorul 10 (ca si omologul din Linux Device
> Drivers, cap 16) dau exemplu de block driver care
> implementeaza un ramdrive, deci la orice transfer se da un memcopy. In
> cazul nostru, trebuie scris pe disk
> si nu imi este foarte clar cum. Am inteles ca se apeleaza
> generic_make_request cu un struct bio* creat de noi?
da
>
> De fapt, daca imi puteti spune cum pot sa stochez pe disc informatia
> primita (intrebarea 2), cred ca mi-ar fi
> de ajuns :). Asta daca nu cer prea mult...
daca vei crea un nou bio (folosind bio_alloc, spre exemplu), va trebui
sa completezi diversele campuri ale structurii pentru ca aceasta sa
ajunga la driver-ul dispozitivului fizic (driver-ul SCSI)
va trebui sa completezi campul bi_bdev al structurii bio cu valoarea
intoarsa de apelul open_bdev_excl
nu uita ca trebuie sa generezi doua bio - cate unul pentru fiecare
dispozitiv fizic
Razvan
More information about the pso
mailing list