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

Liviu Ioan liviu.andrei.ioan at gmail.com
Sun Apr 21 13:17:57 EEST 2013


> 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

Cam "dubios" ce face rq_for_each_segment :).

Mulțumesc.

Liviu


More information about the so2 mailing list