[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