[pso] [tema3 linux]GFP_NOIO, GFP_KERNEL si bio_add_page

Razvan Deaconescu razvand at cs.pub.ro
Fri May 2 11:37:28 EEST 2008


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




-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



More information about the pso mailing list