Next Previous Contents

8. The block bitmap allocation block

Each blocks group contains one special block which is actually a map of the entire blocks in the group, with respect to their allocation status. Each bit in the block bitmap indicated whether a specific block in the group is used or free.

The format is actually quite simple - Just view the entire block as a series of bits. For example,

Suppose the block size is 1024 bytes. As such, there is a place for 1024*8=8192 blocks in a group block. This number is one of the fields in the filesystem's superblock, which will be explained later.

A value of "1" in the appropriate bit signals that the block is allocated, while a value of "0" signals that the block is unallocated.

You will probably notice that typically, all the bits in a byte contain the same value, making the byte's value 0 or 0ffh. This is done by the kernel on purpose in order to group related data in physically close blocks, since the physical device is usually optimized to handle such a close relationship.

Next Previous Contents