Janito Ferreira Filho <jvffprog@xxxxxxxxxxx> 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 =). Okay. > > 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? Exactly, just that "start" is in blocks, not bytes. > > 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? Sort of - the whole block bitmap is divided into allocation groups. > Sorry, for the false alarm... =) No problem - better one time too often than living with a bug just because you didn't mention something; usually it hints to code that could receive some refactoring in order to make it clearer to understand, at the very least :-) Bye, Axel.