The directory module supports operations on the directory. It provides support for searching the directory for a given file, creation and deletion of entries and renaming entries.
A small cache of directory entries, called dirnodes, is maintained. This allows separate opens of the same file to share the directory entry and other information.
To allow easy location of unused directory entries, and to avoid searching free entries, the module maintains a bitmap of which directory entries are allocated. This map is constructed during the initial scan and maintained as entries are added and removed.
The file module supports the creation, deletion, reading and writing of the contents of a file. The standard file IO operations are supported together with streaming access. Each open file is accessed through a file object, which is also maintained by this module.
The block freelist is also managed by the file module, as is a bitmap recording the allocation state of all the BATs.