[so2] [Tema4] Nelamuriri

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Fri May 2 10:20:15 EEST 2014


Alexandru Preda <alexandru.preda91 at gmail.com> writes:
> 2014-05-02 2:04 GMT+03:00 Cernov Vladimir <gg.kaspersky at gmail.com>:
>> Buna,
>>     Am cateva intrebari in legatura cu tema 4.
>>
>> 1) De ce in pitix.h pentru dimensiunea unui inode este folosit "2 * ...":
>> "sizeof(struct pitix_inode) + 2 * psb->inode_data_blocks"?
>
> "2 * psb->inode_data_blocks" reprezinta dimensiunea in octeti
> vectorului "data_blocks" al structurii "pitix_inode", acel 2 fiind
> dimensiunea tipului de date "__u16" (probabil era mai sugestiv daca se
> folosea operatorul sizeof).

Just. Am înlocuit cu sizeof și am actualizat în arhiva de test și zona
de resurse.

>> 2) Pentru functia get_blocks, de ce este folosit "8 * s_blocksize"? Care
>> este scopul acestei functii?
>
> "get_blocks" iti intoarce numarul de blocuri din dzone (vezi poza din enunt).

Mda, nu-mi dau seama de unde a fost scoasă ideea de a avea 8 *
block_size blocuri. O să mă consult cu Tavi legat de asta. Oricum, e
util doar pentru statfs.

>> 3) Care este rostul campurilor imap_block, dmap_block, izone_block,
>> dzone_block din structura pitix_super_block? Acestea nu pot fi obtinute
>> direct stiind block_size_bits si layout-ul superblockului pe disc?
>
> Intr-adevar, si eu zic ca ar fi redundante. Mai scapam de niste mici
> calcule.

Pentru a nu mai face calcule, o dată și pentru flexibilitate, altă
dată. Dacă decidem să înlocuim structura pe disc a sistemului de
fișiere, nu trebuie făcute modificări în cod.

>> 4) Care e dimensiunea maxima pentru inode_data_blocks?
>
> De ce te intereseaza in mod special, pentru sanity check-uri? In rest
> nu cred ca e ok sa recurgem la alocari statice.

Este safe să presupuneți că un inode nu depășește dimenssiunea unui
bloc. Un inode se poate găsi pe două blocuri dacă ajunge să aibă o parte
stocată la sfârșitul primului bloc și o parte la începutul celui de-al
doilea.

Răzvan


More information about the so2 mailing list