[pso] [tema3 linux]GFP_NOIO, GFP_KERNEL si bio_add_page
Alexandru Mosoi
brtzsnr at gmail.com
Mon May 19 20:44:26 EEST 2008
si gasii si rezolvarea bugului (pentru cine mai are treaba cu el).
bio_add_page se asteapta sa gasesca ceva in membrul bi_bdev. la mine nu era
setat. (ia sa fac un submit in kernel :D).
2008/5/19 Alexandru Mosoi <brtzsnr at gmail.com>:
> 2008/5/2 Razvan Deaconescu <razvand at cs.pub.ro>:
>
>> On Fri, 2008-05-02 at 01:22 -0700, Florin Antonescu wrote:
>> > 1. Care este diferenta intre GFP_NOIO si GFP_KERNEL?
>>
>> Linux Kernel Development - capitolul 11
>>
>> ---
>> GFP_NOIO - This allocation can block, but must not initiate disk I/O.
>> This is the flag to use in block I/O code when you cannot cause more
>> disk I/O, which might lead to some unpleasant recursion.
>> ---
>>
>> > 2. De ce urmatoarea secventa functioneaza uneori (am folosit-o pentru
>> > a citi CRC-urile de pe cele doua discuri) si atunci cand incec sa aloc
>> > doua bio-uri pentru scriere imi da eroarea de ai jos?
>> >
>> > Secventa este:
>> >
>> > bio1 = bio_alloc(GFP_NOIO, nr_pages);
>> >
>> > for (i=0; i<nr_pages; i++){
>> > bio_page = alloc_page(GFP_NOIO);
>> > bio_add_page(bio1, bio_page, PAGE_SIZE, 0);
>> > }
>>
>> Definitia lui bio_add_page[1] spune ca al patrulea argument offsetul din
>> vectorul de date (bio_vec). Mi se pare mie sau incerci sa adaugi tot
>> timpul pagini noi la acelasi offset.
>>
>> Take your time cand rezolvi probleme. Lista de discutii nu are scopul sa
>> functioneze in regim de polling. Uita-te un pic la codul scris,
>> analizeaza-l, trage niste concluzii. Pe urma trimite un mesaj pe lista.
>>
>> Razvan
>>
>> [1] http://cs.pub.ro/~pso/lxr/source/fs/bio.c?v=linux-2.6.24.2#438<http://cs.pub.ro/%7Epso/lxr/source/fs/bio.c?v=linux-2.6.24.2#438>
>>
>
> razvan, chiar nu ai dreptate cu offsetul ala :). si m-ai pacalit si pe mine
> (& i hate you for that). la [666] gasesti cum e folosit offsetul. length si
> offset indica segmentul din pagina folosit pentru transfer. daca folosesti o
> pagina intreaga atunci length=0x1000 si offset=0. bio-urile intern au un
> contor (bi_vcnt) care indica pozitia unde este pus urmatorul bio_vec.
> si deci totusi ce reprezinta eroarea aia? ca imi da si mie, si nu o inteleg
> (si ca sa nu ai dubii, eu folosesc o singura pagina).
>
> [666] http://cs.pub.ro/~pso/lxr/source/fs/bio.c?v=linux-2.6.24.2#369<http://cs.pub.ro/%7Epso/lxr/source/fs/bio.c?v=linux-2.6.24.2#369>
>
>
>
> --
> Alexandru Moşoi
> http://alexandru.mosoi.googlepages.com
>
> Please avoid sending me Word or PowerPoint attachments.
> See http://www.gnu.org/philosophy/no-word-attachments.html
>
--
Alexandru Moşoi
http://alexandru.mosoi.googlepages.com
Please avoid sending me Word or PowerPoint attachments.
See http://www.gnu.org/philosophy/no-word-attachments.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20080519/cae907ee/attachment.htm
More information about the pso
mailing list