Re: Zip

2001-02-26 Par sujet Daniel Cordey

On Thu, 22 Feb 2001, blaise vogel wrote:
 IDE 2 en esclave avec un CDrom en maitre. Correctement reconnu par le bios et
 au boot de linux. En fait avec 1 périph. sur la nappe, ça marche!
 Et je n'ai pas de message d'erreur après le cp. Impossible de kill -9 la
 commande cp et si je veux redémarrer, impossible il n'arrive pas à démonter le
 swap. 

Si ton kill -9 n'est pas pris en compte, cela signifie que le process n'est pas
dans une phase qui lui permet d'examiner la liste des signaux recus. Il existe
quelques phases d'un process pendant lesquelles les signaux ne sont pas
traites. Ce sont, normalement, des phases tres courtes avec une priorite tres
elevee. Ces phases sont des phases 'kernel mode'. C'est a dire que le process
est en train d'executer un "system call", donc du code 'kernel' au nom du
process. A un certain moment, le code kernel doit effectuer une tache tres
importante et ne desire pas etre interrompu et s'attribue une priorite elevee.
Ces phases sont souvent des acces I/O de bas niveau du kernel. Ce genre de
probleme arrive parfois avec des peripheriques lents, suite a des bugs du
driver ou des problemes hard non traites par les drivers. Le process reste
alors dans cet etat de haute priorite, dans l'attente d'un reponse du
peripherique et incapable de traiter quelque signal que se soit. Souvent, le
seul moyen de debloquer la situation consiste a eteindre le peripherique en
cause, engendrant ainsi un 'event' qui poura etre pris en compte par le driver.
Dans d'autre cas, le driver a un timeout de 15 minutes ... :-)

Daniel
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question.



Re: Zip

2001-02-26 Par sujet Marc SCHAEFER

On Mon, 26 Feb 2001, Daniel Cordey wrote:

 elevee. Ces phases sont des phases 'kernel mode'. C'est a dire que le process
 est en train d'executer un "system call", donc du code 'kernel' au nom du

Un processus peut tre dans un system call mais interruptible (peut
traiter un signal, le system call s'interrompt alors). Il peut aussi tre
dans un system call, mais non interruptible.

Ces deux tats de processus se nomment respectivement:

   interruptible sleep S
   ininterruptible sleep   D

 alors dans cet etat de haute priorite, dans l'attente d'un reponse du

Ce n'est pas vraiment un tat de haute priorit,

 peripherique et incapable de traiter quelque signal que se soit. Souvent, le

par contre c'est un tat d'attente sans interruption possible par un
signal.

L'avantage de l'tat D c'est que l'on a pas besoin d'crire du code de
reprise en cas d'interruption, c'est pour cela que c'est le plus
populaire. Par contre bien sr, pour tout priphrique qui peut tre lent
et o l'interruption par un signal a un sens, l'autre est mieux.


--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question.



Re: Zip

2001-02-26 Par sujet Daniel Cordey

On Mon, 26 Feb 2001, Marc SCHAEFER wrote:
 Un processus peut être dans un system call mais interruptible (peut
 traiter un signal, le system call s'interrompt alors). Il peut aussi être
 dans un system call, mais non interruptible.

Evidement, tous les system call n'ont pas besoin d'etre non-interruptible;
comme par exemple gettimeofday(). Seul les "parties" de code du kernel
modifiant des structures communes a d'autres parties, ou des "portions" de
drivers "bas niveau" sont sujettes a ces "protection" particulieres. Il est
incorrecte de developper du code "kernel", ou "drivers", uniquement en mode
non-interruptible, mais il y a des situation ou on ne peut pas eviter de le
faire.

 Ce n'est pas vraiment un état de haute priorité,

Il y a des situations ou l'on ne veut pas etre interrompu meme par certains
"interupt hardware". Par exemple, ecrire :

if(Flag)
Flag = RELEASE_FLAG;

n'est pas une operation atomique et risque d'etre interrompue entre le teste et
l'assignation. Je ne me suis pas plonger dans le code source des drivers SCSI,
mais... je vais suivre tes recommandations :-)

 L'avantage de l'état D c'est que l'on a pas besoin d'écrire du code de
 reprise en cas d'interruption, c'est pour cela que c'est le plus
 populaire. Par contre bien sûr, pour tout périphérique qui peut être lent
 et où l'interruption par un signal a un sens, l'autre est mieux.

Exacte... mais helas, des cas imprevus arrivent toujours a se glisser dans les
premieres versions des drivers :-)

Daniel
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question.



Re: Zip

2001-02-26 Par sujet Marc SCHAEFER

On Mon, 26 Feb 2001, Daniel Cordey wrote:

 Il y a des situations ou l'on ne veut pas etre interrompu meme par certains
 "interupt hardware". Par exemple, ecrire :
 
   if(Flag)
   Flag = RELEASE_FLAG;

Ce genre de situations ncessitent plus qu'un processus en tat D: il faut
bloquer les interruptions du matriel (si le matriel change ce bit), ou
avoir une mthode de verrouillage.

En fait, tant que tu ne fais pas de sleep direct ou indirect (accder  de
la mmoire user-space peut provoquer un dswappage, donc sleep implicite),
le kernel te garantit qu'aucun autre processus ne peut accder  tes
donnes. Ds que tu dors (en D ou S), cette garantie disparat (en bref,
le kernel implmente en interne un multitche coopratif).

Par contre les interruptions sont toujours actives.

PS: les versions rcentes du kernel ont introduit des modifications  ce
qui prcde, en particulier en SMP, ce qu'il fait qu'il faut en gnral
faire plus attention.

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question.



Re: Zip

2001-02-22 Par sujet Marc SCHAEFER

On Thu, 22 Feb 2001, blaise vogel wrote:

 Et je n'ai pas de message d'erreur aprs le cp. Impossible de kill -9 la

erreurs dans dmesg ?


--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question.



Re: Zip

2001-02-22 Par sujet blaise vogel


 erreurs dans dmesg ?
En fait, après quelques heures la commande aboutit! (Pour env. 10Mb)
J'ai envoyé tail -f /var/log/messages, puis le cp, env. 5-10 secondes normales
puis un message (j'ai pas la machine avec moi :-(( ) du genre reinit /dev/hdd4,
50 secondes sans rien avec le zip mort, puis même message et le zip qui tourne
1 seconde. Une idée?
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question.



Re: Zip

2001-02-21 Par sujet blaise vogel


 
 Ton Zip il est sur un bus SCSI ?  IDE  ?  Port série ?  Trou de souris ?
IDE 2 en esclave avec un CDrom en maitre. Correctement reconnu par le bios et
au boot de linux. En fait avec 1 périph. sur la nappe, ça marche!
Et je n'ai pas de message d'erreur après le cp. Impossible de kill -9 la
commande cp et si je veux redémarrer, impossible il n'arrive pas à démonter le
swap. Après essai et recherche, je pense qu'il y a un problème avec le chipset
Apollo KT-133 ou un bug avec ma Suse 6.3. C'est la 2eme fois que j'ai un
problème avec linux sur l'IDE2 avec 2 périph., j'avais résolu en débranchant 1
périph. :-((, pas très propre comme solution
Blaise
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question.