[pso] [tema3] dimensiune pitix_dir_entry

omar Chouydary chouydary at yahoo.com
Mon Apr 30 11:40:10 EEST 2007


1. Ce anume nu este clar in ce am spus?
   
  2. Am inteles foarte bine problema, si tocmai de asta am dat si un exemplu, ca sa fie cat mai clar ce am vrut sa zic.
   
  3. Am inteles de asemeni si ceea ce a zis Razvan, tocmai de asta cred ca ati observat ca in ultimele posturi am separat intrebarile cat mai mult, si am incercat sa dau si exemple ca sa fie cat mai clar ce vroiam sa intreb.
   
  Ceea ce nu imi este clar este cum putem afla exact offset-ul din cadrul unui bloc pentru un anumit inode din moment ce nu putem folosi float. (a se vedea in exemplu diferenta in numarului blocului pt un anumit inode cu si fara folosirea de float).
  

Octavian Purdila <tavi at cs.pub.ro> wrote:
  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
_______________________________________________
pso mailing list
pso at cursuri.cs.pub.ro
http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso


       
---------------------------------
Ahhh...imagining that irresistible "new car" smell?
 Check outnew cars at Yahoo! Autos.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20070430/8a877f73/attachment.htm


More information about the pso mailing list