5
Finding a File in an EXT2 File System
A Linux
filename has the same format as all Unix TM filenames have. It is a
series of directory names separated by forward slashes (``/'') and ending in the file's
name. One example filename would be /home/rusling/.cshrc where /home and /rusling are directory names and the
file's name is .cshrc.
Like all other Unix TM systems, Linux does not
care about the format of the filename itself; it can be any length and consist
of any of the printable characters. To find the inode representing this file
within an EXT2
file system the system must parse the filename a directory at a time until we
get to the file itself.
The first inode we need is the
inode for the root of the file system and we find its number in the file
system's superblock. To read an EXT2 inode we must look for it in the inode
table of the appropriate Block Group. If, for example, the root inode number is
42, then we need the 42nd inode from the inode table of Block Group 0. The root
inode is for an EXT2 directory, in other words the mode of the root inode
describes it as a directory and it's data blocks contain EXT2 directory
entries.
home is just one of the many
directory entries and this directory entry gives us the number of the inode describing
the /home
directory. We have to read this directory (by first reading its inode and then
reading the directory entries from the data blocks described by its inode) to
find the rusling
entry which gives us the number of the inode describing the /home/rusling directory. Finally we read the
directory entries pointed at by the inode describing the /home/rusling directory to find the inode
number of the .cshrc
file and from this we get the data blocks containing the information in the
file.
No comments:
Post a Comment