Chapter 9: The Extended Filesystem Family
❑ rsv_alloc_hitskeeps track of the pre-allocation hits, that is, how many allocations were per-
formed from within the reservation window.
❑ Most importantly, the reserve window itself is given byrsv_window.Ext2 reservation
windowsstruct ext2_reserve_
windowstruct ext2_reserve_
window_nodestruct ext2_block_
alloc_infostruct ext2_Inode_
infostruct rb_nodeext2_sb_infof_rsv_window_rootFigure 9-7: Data structures used by the pre-allocation mechanism.If an inode is equipped with pre-allocation information, thenext2_inode_info->i_block_alloc_info
points to an instance ofstruct ext2_block_alloc_info. In addition to an embedded instance of
ext2_reserve_window_nodethat brings the connection with the red-black tree, the data structure
contains information about the last allocated block:last_alloc_logical_blockdenotes the file-relative
number of the last allocated block, whilelast_alloc_physical_blockstores the corresponding physical
number on the block device.9.2.3 Creating a Filesystem
Filesystems are not created by the kernel itself but by themke2fsuserspace tool. Although I am more
concerned with the work of the kernel, I discuss this important aspect of filesystem work briefly below.
mk2efsnot only shares the space on a partition between management information and useful data, but
also creates a simple directory structure on the storage medium so that the filesystem can be mounted.Which management information is meant? When a newly formatted^12 Ext2 partition is mounted,
it already contains a standard subdirectory namedlost+foundto hold defective blocks of the data(^12) It is, of course, possible to argue about the subtle difference between low-level formatting and filesystem creation and to insist on
a distinction between the two terms. I take a pragmatic approach and use both terms synonymously, as mostUnixusers do, because
there is no danger of confusing the two.