[so2] [Tema4] Problemă cu sincronizarea bufferelor

Florin-Alexandru Stancu niflostancu at gmail.com
Sun May 12 20:41:13 EEST 2013


Ok, cred că am găsit ceva...

2013/5/12 Florin-Alexandru Stancu <niflostancu at gmail.com>

> *2. write_inode*
> Mai am o problemă asemănătoare şi la *write_inode*. De data asta
> nerezolvată :D
> Doar că aici nu mi se apelează deloc dacă dau umount prea devreme.
> Trebuie, la fel, să aştept câteva secunde după ce am făcut modificările să
> mi se scrie inode-ul pe disk.
> Am apelat *mark_inode_dirty* peste tot, sunt 100% sigur de asta. La fel, *
> brelse*-uri apelate bine (însă aici nici nu apucă să se execute, deoarece
> nu-mi intră deloc în write_inode când dau umount).
> Şi acum nu am mai modificat buffer_size-ul. A rămas cel setat în *
> fill_super*.
>
> Ştie careva din ce cauză se întâmplă lucrul acesta?
> Cum pot forţa să-mi salveze inode-urile dirty automat înainte de mount?
> Am găsit nişte rutine de sincronizare a device-ului răsfoind prin surse, o
> să încerc să le apelez, dar am marcat bufferele ca dirty, ar trebui să mi
> se salveze la un moment dat.
> Am căutat şi în codul sursă de la minix şi nu se apelează nimic neobişnuit
> (nici o astfel rutină de buffer sync etc.).
> De ce minix nu are problema asta, deşi nu a apelat nicio rutină de
> sincronizare?
>
> Mulţumesc.
>

Aici văd că la *put_super* îmi apelează *evict_inode* pentru toate
inodeurile folosite.
Funcţia e copiată de aici:
http://lxr.free-electrons.com/source/fs/minix/inode.c#L27

Cumva asta blochează write-urile... dar nu mă prind de ce la minix merge şi
la mine nu :( copiată perfect!

Încerc să comentez pe acolo chestii, văd ce iese.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so2/attachments/20130512/e41b42fc/attachment.html>


More information about the so2 mailing list