[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