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
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
You will probably notice that typically, all the bits in a byte contain the
same value, making the byte's value
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