The present invention provides a method for keeping a file system in a consistent
state and for creating read-only copies of a file system. Changes to the file system
are tightly controlled. The file system progresses from one self-consistent state
to another self-consistent state. The set of self-consistent blocks on disk that
is rooted by the root inode is referred to as a consistency point. To implement
consistency points, new data is written to unallocated blocks on disk. A new consistency
point occurs when the fsinfo block is updated by writing a new root inode for the
inode file into it. Thus, as long as the root inode is not updated, the state of
the file system represented on disk does not change. The present invention also
creates snapshots that are read-only copies of the file system. A snapshot uses
no disk space when it is initially created. It is designed so that many different
snapshots can be created for the same file system. Unlike prior art file systems
that create a clone by duplicating the entire inode file and all of the indirect
blocks, the present invention duplicates only the inode that describes the inode
file. A multi-bit free-block map file is used to prevent data from being overwritten
on disk.