[pso] sizeof(superblock)

Alexandru Juncu alexandrujuncu at gmail.com
Fri May 14 00:41:32 EEST 2010


2010/5/14 Octavian Voicu <octavian.voicu at gmail.com>:
> 2010/5/13 Alexandru Juncu <alexandrujuncu at gmail.com>
>>
>> Pornind de la enunțul temei 4, am o nelămurire (and my google searched
>> didn't get me far...)
>>
>> Stack trace for my questions:
>> De ce este specificat la sistemul de fișisre că superblockul are 4096B
>> pe când restul bucăților sunt specificate în blocksize?
>>
>> Ok. mărimea unui block este specificată în superblock, dar... asta
>> înseamnă că superblock-ul nu este UN block? Adică sizeof(superblock)
>> != sizeof(block)...
>>
>> Dacă nu este un block, cât e? Depinde e sistemul de fișiere sau e ceva
>> standard pentru toate sistemele de fișiere?
>
> It's the chicken-egg problem, again. Cum poti afla dimensiunea
> superblock-ului inainte sa citesti superblock-ul, care contine
> dimensiunea block-urilor deci si a superblock-ului.
>
> Ca sa se sparga loop-ul, se specifica dimensiunea superblock-ului. O
> varianta e sa setezi blocksize la dimensiunea din enunt, sa citesti
> superblock-ul si apoi sa setezi dimensiunea corecta a block-urilor
> folosind informatiile din superblock-ul citit. Dupa acest pas trebuie
> sa remapezi superblock-ul (fiind modificat blocksize-ul, nu va mai
> merge cum trebuie cel vechi). Din punctul de vedere al sistemului de
> fisiere nu conteaza decat primii bytes din SB care sunt inclusi in
> structura, restul pot avea orice valoare.
>
> O alta varianta e sa citesti doar 512 bytes, oricum nu folosesti
> restul. Dar tot trebuie sa remapezi superblock-ul dupa ce pui
> blocksize la dimensiunea corecta.
>
> Problema aici e de fapt ca superblock-ul trebuie sa fie intotdeauna de
> dimensiune multiplu de blocksize (altfel s-ar complica prea mult
> lucrurile, ar trebui un padding, ai avea o parte din imap in primul
> block etc). Cum dimensiunea maxima a unui block pt filesystem-ul pe
> care trebuie sa-l implementati e 4096, superblock-ul a fost ales de
> aceeasi dimensiune. Astfel dimensiunea de 4096 bytes a superblock-ului
> nu conteaza decat pentru calcularea offset-ului pentru imap zone.

Mulțumesc pentru răspuns.
Nu am marcat threadul cu '[tema4]' pentru că eram curios cum se
rezolvă în general situația asta, nu strict legat de ce avem noi de
făcut la temă... Sper că am înțeles...


More information about the pso mailing list