[so2] [SO2] [Tema3] [Linux] Nelămuriri - CRC, locking, checker

Vlad Dogaru ddvlad at herebedragons.ro
Sun Apr 21 13:44:43 EEST 2013


On 4/21/2013 1:17 PM, Liviu Ioan wrote:
>> As a sidenote, when in doubt, căutați utilizări ale funcției în cauză
>> (bio_for_each_segment, în cazul nostru).  E clar că în laborator o
>> folosim greșit.  Also, rq_for_each_segment nu pare să fie folosită
>> niciodată în rutine de transfer.  Suspectectez că nu _poate_ fi
>> folosită, pentru că bio-urile dintr-un request nu corespund segmentelor
>> consecutive.
> 
> Ah, mai multe bio-uri dintr-un request nu sunt (neapărat) continue pe
> disc, așa e.
> 
> rq_for_each segment reprezintă:
> __rq_for_each_bio
>        bio_for_each_segment
> 
> Ar trebui să facem cam așa(dacă e să lucrăm la nivel de request):
> __rq_for_each_bio
>        fresh_offset = bio->bi_sector;
>        bio_for_each_segment
>             process segment using fresh_offset
>             fresh_offset += bio_cur_bytes

Da, asta e și concluzia mea.

> Cam "dubios" ce face rq_for_each_segment :).

Merge pentru situații în care vrei numărul de octeți sau să flush-uiești
buffere, cam asta am văzut că e use case-ul.  Oricum, bio_for_each e
mult mai frecvent folosit decât rq_for_each.

Vlad



More information about the so2 mailing list