[Kos-dev] Re: Meditations de la journee

Thomas Petazzoni kos-dev@enix.org
Wed, 17 Apr 2002 16:03:19 +0200


Salut,

> J'avoue que je ne vois pas non plus de contre-exemple pour le
> moment. On pourrait par exemple craindre les loockups de '..', mais en
> fait ils ne semblent pas dangereux, puisqu'on a alors des graphes
> orientes cycliques (a cause des '..') plutot que des arbres. Ce qui
> voudrait dire que le lookup de '..' revient a parcourir l'arbre
> toujours dans le sens de la descente pere -> fils.

C'est effectivement surtout les lookups de '..' qui me faisait peur.
Mais il me font toujours peur. Exemple, lookup de
/home/thomas/kos/src/../../kos.

1. lock sur home
2. lock sur thomas
3. unlock sur home
4. lock sur kos
5. unlock sur thomas
6. lock sur src
7. unlock sur kos
--> Maintenant il faut remonter 2 fois -> probleme.

> Si on veut parcourir dans les 2 sens (en imaginant que ce soit
> necessaire), il faudrait splitter en 2 le lock de chaque noeud : un
> lock (ou compteur de ref) pour etre sur que le noeud ne disparait pas
> (pas supprime de l'arbre, pas kfree()) pdt qu'on le regarde de pres,
> et un lock sur la liste des fils. Genre :

Oui, mais apres on a encore des problemes de portee de lock, on sait pas
quoi locker a chaque fois.

>   lock(node->node_lock); /* On atomic_inc(node->node_ref_cnt) */
>   ## travailler sur le noeud;
>   lock_read(node->cildren_lock)
>   unlock(node->node_lock); /* On atomic_dec(node->node_ref_cnt) */
>   ## choisir un fils;
>   lock(fils->node_lock); /* On atomic_inc(fils->node_ref_cnt) */
>   unlock_read(node->children_lock);
>   ## node = fils;
>   ## travailler sur le noeud...

Hum, oui c'est à étudier.

Effectivement en général ce qui nous importe c'est de s'assurer que
l'element qu'on utilise ne va pas etre supprime entre temps : par
exemple quand on cree une SR pour un translator, entre le moment ou on
trouve le translator et le moment ou on cree la SR, il faut s'assurer
qu'il ne va pas etre supprime, et donc incrementer en consequence le
ref_cnt. On a essaye de bien verifier tout ca partout, mais honnetement
si tu pouvais regarder ces problemes de lock de tres tres pres, ca
serait vraiment bien, parce que malgre toute l'attention que nous y
avions porte, nous (Julien & moi) ne sommes pas vraiment surs de ce que
nous avons fait.

Bonne journee,

Thomas
--
PETAZZONI Thomas - icq #34937744
thomas.petazzoni@enix.org - http://www.enix.org/~thomas/
Projet KOS : http://kos.enix.org
Club LinUT : http://club-linut.enix.org