[SOS] [slab-bonwick] patch pour toute la serie d'article.

anthoine.bourgeois anthoine.bourgeois at wanadoo.fr
Jeu 25 Mai 14:34:08 CEST 2006


Bonjour à tous,

Voilà, en septembre dernier je vous avais envoyé un patch qui améliorait l'allocateur de slab de Sos à partir de ce papier: http://citeseer.ist.psu.edu/bonwick94slab.html

A ce jour, j'ai porté le patch que j'avais fait à l'article 5 à tous les autres articles ce qui m'a permis de trouver quelques bugs.

Le premier bug que j'ai eu est survenu à l'article 6.5 et conserne tout les articles qui exécute la simulation des souris. Le problème était qu'au bout d'un certain temps certaines souris se bloquaient devant l'entrée de la carte. C'était un problème d'initialisation de la structure de la souris. A la ligne 774 du fichier mouse_sim.c, la macro Set position un flag mais n'efface pas les flags déjà présent donc lorsque on récupérait une souris sorti avec le malloc, le flag MOUSE_EXITED était déjà positionné et le restait. La souris stoppait donc après son premier mouvement. Le patch est joint ici.

L'allocateur original renvoyait des zones mémoires toujours remplies de zéro. Pour malloc les zones renvoyées ne sont pas initalisées. L'implémentation de l'allocateur de slab de Bonwich que j'ai faite n'initalise les zones à zéro que si on lui demande.

Le second bug était à l'article 8, pour ce bug j'ai trouvé la solution dans le patch change_webversion8.diff que j'avais dans un coin de mon disque. J'ai cherché sur le site et j'ai pas trouvé ce patch donc je suppose que je l'ai reçu par mail mais je le trouve pas dans les archives de la mailing list. Si l'auteur pouvait m'indiqué le mail, j'aimerai le lire, merci d'avance. Ligne 123 du fichier uaccess.c lorsque le nombre d'octet à copier est 0 on ne doit pas retourné 0 mais -SOS_EINVAL. Ce patch n'est nécéssaire que pour la version 8 de sos. Il est corrigé dans les versions suivantes, c'est pourquoi j'ai intégré ce patch dans mon patch-slab-v8 et n'en ai pas fait un version indépendante.

Le troisième bug était à l'article 9.5, comme pour la simulation des souris c'était un problème d'initialisation des données après un malloc. J'ai ajouté les lignes suivantes à la ligne 194 du fichier blkcache.c:

list_init(blkcache->sync_list);
list_init(blkcache->dirty_list);

Cette modification est intégrée dans mon patch-slab-v9.5.

Voilà tout pour l'allocateur de slab.
Anthoine Bourgeois.
-------------- section suivante --------------
Une pièce jointe non texte a été nettoyée...
Nom: /home/asa/unios/sos/patch-slab/patch-slab.tar.gz
Type: application/x-gzip
Taille: 102526 octets
Desc: non disponible
Url: http://the-doors.enix.org/pipermail/sos/attachments/20060525/8acd53a7/patch-slab.tar-0001.bin
-------------- section suivante --------------
Une pièce jointe non texte a été nettoyée...
Nom: /home/asa/unios/sos/patch-perso/patch-mouse_sim-status_init.diff
Type: text/x-patch
Taille: 763 octets
Desc: non disponible
Url: http://the-doors.enix.org/pipermail/sos/attachments/20060525/8acd53a7/patch-mouse_sim-status_init-0001.bin


Plus d'informations sur la liste de diffusion Sos