[pso] Tema 3 Linux sync / invalidate (?)
Irina Orlandea
irina.orlandea at gmail.com
Sun Aug 27 17:14:34 EEST 2006
Am o problema la tema asta si n-am nici cea mai mica idee cum sa o rezolv.
Initial am implementat tema folosind kernel threaduri pentru fiecare device,
dar cu un nume de fisier stabilit dinainte, nu dat ca parametru la
conectare. Am reusit sa scriu in fisierul respecitv si sa citesc din el cu
un program de test minimal.
Apoi am implementat partea de connect / disconnect si (desi totul parea
mostly copy-paste dintr-un loc in altul) acum se intampla urmatorul fenomen:
Am un test care face connect - write - disconnect, insa requestul de write
nu ajunge la threadul meu. Mai precis, functia de tratare a requestului este
apelata dupa ce am dat disconnect (si esueaza pentru ca nu vreau sa tratez
cereri dupa deconectare, adica dupa ce am inchis fis si am iesit din kernel
threadul asociat).
M-am gandit ca problema ar putea fi de la functiile de sync / invalidate,
dar din cate stiu eu le apelez corect (recunosc ca nu mi-e foarte clara
functionarea lor), si anume:
in ioctl(struct inode *inode, struct file *filp, _unsigned int cmd, unsigned
long arg) fac fsync_bdev(inode->i_bdev) si invalidate_bdev(inode->i_bdev, 0)
inainte de initializarea threadului la conectare si inainte de a astepta ca
threadul sa termine eventualele cereri ramase la deconectare.
Lamuriti-ma si pe mine, va rog, daca 1. sunt folosite bine functiile astea
doua (si in ordinea care trebuie), 2. de unde altundeva ar putea sa apara o
problema cum am eu?
Multumesc,
Irina Orlandea, 344C3
--
"We are all in the gutter, but some of us are looking at the stars"
(Oscar
Wilde)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20060827/c0ecfd15/attachment.html
More information about the pso
mailing list