[pso] [Tema4] Actualizare dmap
Oprescu Bogdan
bcoprescu at yahoo.com
Sat May 7 17:30:20 EEST 2011
________________________________
From: Oprescu Bogdan <bcoprescu at yahoo.com>
To: "pso at cursuri.cs.pub.ro" <pso at cursuri.cs.pub.ro>
Sent: Friday, May 6, 2011 12:32 PM
Subject: Re: [pso] Fw: [Tema] Actualizare dmap
From: Vlad Dogaru <ddvlad at rosedu.org>
To: Oprescu Bogdan <bcoprescu at yahoo.com>; Proiectarea Sistemelor de Operare <pso at cursuri.cs.pub.ro>
Sent: Friday, May 6, 2011 10:56 AM
Subject: Re: [pso] [Tema] Actualizare dmap
On Wed, May 04, 2011 at 09:54:55AM -0700, Oprescu Bogdan wrote:
> Am urmatoarea problema:
> - fac alocarea blocurilor in functia get_block. Get block e apelata la scrire si la
> citire in writepage si readpage. Tot aici fac si actualizarea dmap.
> - atunci cand scriu intr-un fisier, functia de scriere este apelata mai tarziu de sistem,
> astfel incat dmap se actualizeaza dupa cam 30 de secunde sau cand dau cat pe fisier.
Ce funcție folosești pentru a scrie/citi în fișier? do_sync_read nu ar
trebui să se comporte cum descrii tu.
Vlad
Am asa:
struct file_operations pitix_file_operations = {
.read
= do_sync_read,
.aio_read = generic_file_aio_read,
.write = do_sync_write,
.aio_write = generic_file_aio_write,
.mmap = generic_file_mmap,
.fsync
= generic_file_fsync,
.splice_read = generic_file_splice_read,
.splice_write = generic_file_splice_write,
.llseek = generic_file_llseek,
};
writepage, readpage, bmap, write_begin sunt implementata ca in minix.
Comportamentul la scriete este urmatorul:
root at spook:/tmp/pitix.mnt# echo abc > a
root at spook:/tmp/pitix.mnt# ls -l
total 4
-rw-r--r-- 2 root root 4 2011-05-06 12:11 a
drwxrwxrwx 1 root root 512 2011-05-06 12:11 lots_of_files
root at spook:/tmp/pitix.mnt# dmesg
| grep 'pitix writepage'
root at spook:/tmp/pitix.mnt# cat a
abc
root at spook:/tmp/pitix.mnt# dmesg | grep 'pitix writepage'
root at spook:/tmp/pitix.mnt# dmesg | grep 'pitix writepage'
root at spook:/tmp/pitix.mnt# dmesg | grep 'pitix writepage'
[58861.469694] pitix writepage
[58861.471796] pitix writepage
root at spook:/tmp/pitix.mnt#
dupa cum se vede writepage se apeleaza tarziu, iar daca se face unmount intre timp datele nu se mai scriu pe disc.
Multumesc,
Bogdan
Bucuresti, 7 mai 2011. Temperatura afara 16 grade, cer innorat. Azi m-am trezit la 11:20.
Continui sa va tin la curent cu evolutia problemei. In caz mai incerac cineva sa ii afle cauza, mai pot sa ofer un indiciu.
Nici write_node nu se apeleaza daca nu il apelez eu explicit in destroy, chiar daca marchez nodurile cu dirty.
Intre timp am gasit o rezolvare mai putin eleganta, dar care fucntioneaza. Apelez explicit write_inode in destroy.
Tot in destroy apelez writeback_inodes_sb, funtie din writeback.h, care forteaza screirile pe disc.
Eu abandonez aici investigatiile. Daca se mai loveste cineva de problema asta si ii afla si cauzam, mail me.
Multumesc,
Bogdan
_______________________________________________
http://elf.cs.pub.ro/so2/wiki/resurse/lista-discutii
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/pso/attachments/20110507/c3231204/attachment.htm>
More information about the pso
mailing list