[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