<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2016-04-22 11:56 GMT+03:00 Razvan Deaconescu via so2 <span dir="ltr"><<a href="mailto:so2@cursuri.cs.pub.ro" target="_blank">so2@cursuri.cs.pub.ro</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Georgiana Diana <<a href="mailto:geodiana93@gmail.com">geodiana93@gmail.com</a>> writes:<br>
> 2016-04-17 19:32 GMT+03:00 Oana Stroie via so2 <<a href="mailto:so2@cursuri.cs.pub.ro">so2@cursuri.cs.pub.ro</a>>:<br>
</span><span class="">>> On 17 Apr 2016 19:30, "Razvan Deaconescu via so2" <<a href="mailto:so2@cursuri.cs.pub.ro">so2@cursuri.cs.pub.ro</a>> wrote:<br>
>>> Oana Stroie via so2 <<a href="mailto:so2@cursuri.cs.pub.ro">so2@cursuri.cs.pub.ro</a>> writes:<br>
>>> > Buna ziua,<br>
>>> ><br>
>>> > Am dificultati la setarea dimensiunii sectorului<br>
>>> > dispozitivului. Desi setez conform laboratorului, exemplu:<br>
>>> ><br>
>>> > blk_queue_make_request(dev->queue, process_bio);<br>
>>> > blk_queue_logical_block_size(dev->queue, KERNEL_SECTOR_SIZE);<br>
>>> ><br>
>>> > Atunci cand primesc o cerere, la parcurgerea unui bio pe sergemente si<br>
>>> > afisari ale campurilor observ ca dimensiunea sectorului este considerata<br>
>>> > 4096.<br>
>>> ><br>
>>> > Spre exemplu la testul 10 (unde este scris un sector)  bvec->bv_len are<br>
>>> > valoarea 4096 (si bio_cur_bytes(bio)).<br>
>>> ><br>
>>> > Ce gresesc? Nu gasesc informatii ajutatoare pe internet,<br>
>>><br>
>>> Hello, Oana.<br>
>>><br>
>>> Scuze de răspunsul tardiv.<br>
>>><br>
>>> Nu înțeleg problema. Așa se întâmplă; block IO layer-ul citește<br>
>>> informații la nivel de bloc/pagină. Dacă îi spui să scrie/citească un<br>
>>> sector va citi 8 sectoare (8 * 512 octeți = 4096 = o pagină/un bloc). Nu<br>
>>> este nici un fel de problemă.<br>
>><br>
</span><span class="">>> Buna,<br>
>><br>
>> Am inteles si rezolvat intre timp.<br>
>> Mersi de raspuns:)<br>
><br>
</span><span class="">> Din cate inteleg din ce scrie mai sus, un bio va scrie/citi mereu 8<br>
> sectoare pe discul fizic.<br>
<br>
</span>Nu mereu. _De obicei_ (adică _nu_ obligatoriu mereu, dar foarte probabil)<br>
cererile venite din _user space_ (_nu_ kernel space) vor fi translatate<br>
în bio-uri care ocupă un bloc, adică 8 sectoare.<br>
<br>
În kernel space, la fel, în general bio-urile le vei crea cu multiplu de<br>
pagini (folosind, de exemplu bio_alloc) rezultând în 8 sectoare.<br>
<span class=""><br>
> In 8 sectoare, se pot retine maxim/eficient 1000 de CRC-uri aferente a<br>
> 1000 de sectoare de date. Deci fiecare request bio de scriere va<br>
> suprascrie mereu CRC-urile a 1000 de sectoare de date ?<br>
<br>
</span>Practic da, operațiile de scriere vor suprascrie atât de multe<br>
CRC-uri. Dacă vrei să modici _un_ CRC vei face un bio de citire a unei<br>
întregi pagini, adică 8 sectoare, adică în jur de 1000 de bio-uri. Vei<br>
modifica doar CRC-uril necesare și vei resubmite bio-ul ca un bio de<br>
scriere.<br>
<span class=""><br>
> Pe de alta parte, daca cel putin 8 sectoare de date sunt mereu<br>
> citite/scrise, ar avea sens sa retin doar 8 CRC-uri per sector din<br>
> zona CRC. Dar pentru un bio care opereaza in zona CRC, asta ar insemna<br>
</span>> ca mereu va scrie si in alte 7 sectoare adiacente ? Adica ar afecta<br>
<span class="">> alte 56 de CRC-uri ?<br>
<br>
</span>Da, vei afecta mai multe CRC-uri. Citești zona cu CRC-ul/CRC-urile pe<br>
care vrei să le modifici, suprascrii în memorie CRC-ul/CRC-urile<br>
necesare și faci un bio de write. Într-adevăr, bio-ul de write va ajunge<br>
să suprascrie foarte multe CRC-uri pe disc, dar multe vor fi suprascrise<br>
cu aceeași valoare, că nu ai cum altfel: le citești și le scrii tot pe<br>
acelea la loc ca să modifici doar o mică parte din CRC-uri.<br>
<span class=""><br>
> Setarea campului bio_vec->bv_len la KERNEL_SECTOR_SIZE are vreun efect<br>
> ?<br>
<br>
</span>Nu lucra cu bio_vec-uri, lucrează doar cu bio.<br></blockquote><div><br></div><div>Okay, am inteles, multumesc mult :)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Răzvan<br>
_______________________________________________<br>
<a href="http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii" rel="noreferrer" target="_blank">http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii</a></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><font color="#0000ff"><b>Georgiana Diana Ciocirdel</b></font><div>Polytechnic University of Bucharest,</div><div>Computer Science</div></div></div>
</div></div>