[SOS] flag dirty dans la pagination

Thomas Petazzoni thomas.petazzoni at enix.org
Ven 12 Déc 09:15:59 CET 2008


Salut,

Le Thu, 11 Dec 2008 19:41:32 +0100 (CET),
"anthoine.bourgeois" <anthoine.bourgeois at orange.fr> a écrit :

> OK, c'est bien ce qui me semblait. Je pose la question car personne ne
> fait de sos_paging_set_dirty(vaddr, TRUE) et que le test

Effectivement, personne ne fait de set_dirty(), car le processeur est
censé le faire.

> if (sos_paging_is_dirty(paddr))
> 
> ligne 1018 du fichier blkdev.c dans la fonction blockdev_map_unref est
> toujours FAUX. Ca me semblait très bizarre.
> Mais la fonction sos_paging_is_dirty ne prend elle pas des pages
> virtuelles ? D'après son prototype oui, donc dans ce cas ne passe-on
> pas la mauvaise valeur de page à la fonction qui renvois donc
> toujours FAUX ?

Clairement, la fonction sos_paging_is_dirty() prend en paramètre une
adresse virtuelle, et cette fonction se balade dans le répertoire de
page et les tables de page pour trouver la valeur du bit dirty. Et à
l'endroit que tu points, on passe une adresse physique à
sos_paging_is_dirty(), ce qui me paraît totalement incorrect. Au lieu
de "paddr" on devrait passer "uaddr".

David, tu confirmes ?

Thomas
-- 
Thomas Petazzoni                         http://thomas.enix.org
Promouvoir et défendre le Logiciel Libre http://www.april.org
Logiciels Libres à Toulouse              http://www.toulibre.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
Url : http://the-doors.enix.org/pipermail/sos/attachments/20081212/a5d29583/attachment.pgp 


Plus d'informations sur la liste de diffusion Sos