[haiku-development] Re: BFS code questions

  • From: Janito Ferreira Filho <jvffprog@xxxxxxxxxxx>
  • To: Haiku Development <haiku-development@xxxxxxxxxxxxx>
  • Date: Tue, 6 Apr 2010 19:23:10 +0000

> axeld@xxxxxxxxxxxxxxxx wrote:
> This function is used for every read or write operation at least once - 
> it's not an option to call anything else in there.
> However, one should add a physical block size member to Volume, fill 
> that during Mount(), and just use that through a getter method. Then 
> indeed the DeviceOpener should retrieve the information (alongside the 
> rest).


Ok. I'll see if I can do that in the weekend =).

> It's initialized like this in line 1639:
>       uint32 group = start >> fVolume->AllocationGroupShift();
> The shift is the number of bits to shift a block offset in order to get 
> the group index.

Therefore it returns allocation group containing the block containing the 
"start" byte offset argument?

> You are indeed missing something :-)
> The incoming "start" argument is the first block to check. The 
> CachedBlock is then set to the allocation group containing the that 
> block (retrieved as above), and the block offset within that group 
> ("groupBlock"). In each subsequent iteration, the groupBlock is 
> incremented until the end of the current allocation group is reached 
> which is when "group" is incremented as well, and "groupBlock" is reset 
> to 0.

Ok. I'm not sure I understood correctly. Does this mean every allocation group 
contains it's own bitmap blocks? Sorry, for 
the false alarm... =)

Hotmail: Trusted email with Microsoft’s powerful SPAM protection.

Other related posts: