[pso] [Tema3][Linux] Intrebare bio

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Thu May 6 19:52:40 EEST 2010


On Thu, 2010-05-06 at 16:18 +0300, Macicas Teodor wrote:
> Salut,
> 
> Am o nelamurire. Incerc sa fac o chestie simpla si nu inteleg ce gresesc.
> In functia care primeste bio-urile, am folosit open_bdev_exclusive() 

Foloseste open_bdev_exclusive in open sau in module_init. Nu-l vei putea
folosi in functia care primeste bio-urile (vezi mai jos).

> pentru a deschide discul fizic. Am clonat un bio ( bio_clone() ) si am 
> modificat campurile bi_bdev, bi_private si bi_end_io.
> Am dat bio_submit() si wait_for_completion(). Se pare ca nu intra in 
> bi_complete() niciodata, iar masina virtuala se blocheaza.

Nu se pot apela, la un moment dat, doua instante ale functiei
bio_submit. In functia care primeste bio-ul deja te afli intr-una din
ele. Acest lucru este precizat in enunt, cu propunerea folosirii
workqueues:
---
* o singură funcție de prelucrare a cererilor pentru dispozitive de tip
bloc poate fi activă la un moment dat în cadrul unei stive de apeluri
(mai multe detalii aici); va trebui să submiteți cererile pentru
dispozitivele fizice dintr-un kernel thread; se recomandă folosirea
folosirea workqueues;
---

Razvan

Razvan



More information about the pso mailing list