The pointers to the data blocks are organized as a series of trees, as opposed to the FAT organization as a linked list. A directory is simply a file which contains filenames and inode numbers. The block groups contain bitmaps which are used to control allocation of blocks and inodes. So, for instance, an ls command will produce compatible results no matter which filesystem is being referenced. The VFS maintains a common inode and directory cache for all of the filesystems, and the filesystem drivers use the same disk cache and drivers.
Any directory can be a mount point, although they are typically empty directories.
It should never be run on a filesystem which is mounted writable . If it were used on a filesystem whose blocks on disk were in an inconsistent state because some of them were modified in the VFS cache, but had not yet been written to disk, it would make incorrect repairs to the disk blocks and the result would be a damaged filesystem. For disks which do not do this remapping, it is always necessary to keep a file with all of the known bad blocks, so that if the disk must be reformatted, those blocks are not used again . Once a block is bad, it should never be trusted again. The badblocks program can check the disk blocks, and when a filesystem is created with mke2fs, the bad block list can be used to make sure those blocks will not be allocated in the new filesystem.