[pso] [tema3] dimensiune pitix_dir_entry

Octavian Purdila tavi at cs.pub.ro
Sun Apr 29 22:47:26 EEST 2007


On Sunday 29 April 2007 17:59, omar Chouydary wrote:
> Ok, dar cum ramane atunci cu problema inode-urilor pe mai multe blocuri?
>    
>   Un ex este urmatorul:
>    
>   Avem raportul block_size / inode_size = 3.5
>   Avem de citit un inode cu indicele 6
>   Sunt de acord ca in kernel nu e bine sa folosim float.

Corectie: nu se poate folosi. 

>   Dar, daca folosim acea functie pitix_inodes_per_block care intoarce un int, vom avea ca rezultat al raportului block_size / inode_size valoarea (int) (3.5) = 3.
>   Deci la selectarea blocului in care se afla inode-ul 6, se va selecta blocul (6 / 3) = 2
>   In schimb daca foloseam valoarea 3.5, se va selecta blocul 
>   (int ) ( 6 / 3.5 ) = (int) ( 1. ....) = 1 => ca in cele 2 cazuri mi se va selecta un alt bloc.
>   Din cate am inteles dintr-un mail dat de dvs un inode se poate afla si intre 2 blocuri din IZONE => varianta corecta este a 2-a.
>   Cum facem ca sa folosim acea valoare de tip float?
>   Am facut un mic test, si la un apel de genul "ino / pitix_inodes_per_block()" NU se inlocuieste  prin "ino / block_size / inode_size => (ino * inode_size ) / block_size " ( ceea ce ar fi cat de cat ok) ci se face impartirea din functia pitix_inodes_per_block si apoi ino / pitix_inode.....

pitix_inodes_per_block nu este definita in pitix.h, si nici nu trebuie sa iti definesti tu o asemenea functie pentru ca nu te ajuta. 

Asa cum a observat si Razvan, nu stii sa definesti clar problemele. Incearca intai sa intelegi despre ce e vorba, sa definesti problema si abia apoi sa cauti o solutie.

Problema pe care vrei sa o rezolvi este: ai dimensiunea inodului = x, dimensiunea blocului = y, si vrei sa afli blocurile si offseturile din cadrul blocurilor care contin inodul. 

tavi


More information about the pso mailing list