O'Reilly logo

UNIX Filesystems: Evolution, Design, and Implementation by Steve D. Pate

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Directory Lookups and Pathname Resolution

There are three main entry points into the filesystem for dealing with pathname resolution, namely ux_readdir(), ux_lookup(), and ux_read_inode(). One interesting way to see how these three functions work together is to consider the interactions between the kernel and the filesystem in response to the user issuing an ls command on the root directory. When the filesystem is mounted, the kernel already has a handle on the root directory, which exports the following operations:

struct inode_operations ux_dir_inops = {
          create:     ux_create,
          lookup:     ux_lookup,
          mkdir:      ux_mkdir,
          rmdir:      ux_rmdir,
          link:       ux_link,
          unlink:     ux_unlink,
};

struct file_operations ux_dir_operations = {
          read:       generic_read_dir,
          readdir:    ux_readdir,
          fsync:      file_fsync,
};

The kernel has two calls at a directory level for name resolution. The first is to call ux_readdir() to obtain the names of all the directory entries. After the filesystem is mounted, the only inode in memory is the root inode so this operation can only be invoked on the root inode. Given a filename, the ux_lookup() function can be called to look up a name relative to a directory. This function is expected to return the inode for the name if found.

The following two sections describe each of these operations in more detail.

Reading Directory Entries

When issuing a call to ls, the ls command needs to know about all of the entries in the specified directory or the current working directory if ls is typed without ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required