nejasnosti kolem volani jadra

Mikulas Patocka mikulas na artax.karlin.mff.cuni.cz
Čtvrtek Červen 17 21:23:18 CEST 1999


>> > >   Tedy umount zavola sys_umount. Ten potom jednak zrusi dcache pro dany
>> > > fs, jednak da sync bloku a pak se vezme lock od filesystemu a vycisti se
>> > > inode cache.  Ten umount by mel byt v zasade prerusitelny (tedy alespon
>> > > v prubehu toho syncu).  Jinak potom pozdeji uz asi ne, protoze se ceka
>> > > na nejake ty inody (ale to by nemelo moc nastavat) a tam se ceka
>> > > neprerusitelne...
>> > Jde o to, ze umount nereaguje na signaly, pokud neco dela (nejspis sync).
>> > Podobne se chova napr. df, kdyz ceka na nejaky fs (asi kdyz zjistuje volne
>> > misto).
>>   Podle me se ceka, nez disk doda bloky...
>
>Ale proc ten proces nereaguje na signaly...?

Protoze behem umount ci df proces nevyleze z jadra a behem pobytu v jadre se na
signaly vetsinou nereaguje (vyjimka: na signaly v jadre se reaguje, pokud proces
ceka ve stavu TASK_INTERRUPTIBLE; dela se to pri cekani na komunikaci s terminalem,
siti, sleep, select..., ale ne pri praci s diskem). Signaly se vyridi, az proces
z jadra vyleze.

Pokud to chces odstranit, tak jsou dve reseni:
1. Prepsat cekani na buffer, aby bylo INTERRUPTIBLE (musel by se prepsat cely bufferovy
	system, takze neproveditelne).
2. Dat na nejake misto do smycky flushujici buffery test na visici signal (to by
	mozna slo napsat).

Mikulas Patocka


Další informace o konferenci Linux