TFS(4S)

NAME
tfs, TFS - translucent file service

CONFIG
optionsTFS

SYNOPSIS
#include <sys/mount.h>
mount("tfs", dir, M_NEWTYPE|flags, nfsargs);

DESCRIPTION

The translucent file service (TFS) supplies a copy-on-write filesystem allowing users to share file hierarchies while providing each user with a private hierarchy into which files are copied as they are modified. Consequently, users are isolated from each other's changes.

nfsargs specifies NFS style mount(2V) arguments, including the address of the file server (the tfsd(8)) and the file handle to be mounted. dir is the directory on which the TFS filesystem is to be mounted.

TFS allows a user to mount a private, writable filesystem in front of any number of public, read-only filesystems in such a way that the contents of the public filesystems remain visible behind the contents of the private filesystem. Any change made to a file that is being shared from a public filesystem will cause that file to be copied into the private filesystem, where the modification will be performed.

A directory in a TFS filesystem consists of a number of stacked directories. The searchpath TFS uses to look up a file in a directory corresponds to the stacking order: the TFS will search the “frontmost” directory first, then the directory behind it, and so on until the first occurrence of the file is found. Modifications to a file can be made only in the frontmost directory. TFS copies a file to the frontmost directory when the file is opened for writing with open(2V) or when its stat(2V) attributes are changed.

If a user removes a file which is not in the frontmost directory, TFS creates a whiteout entry in the frontmost directory and leaves the file intact in the back directory. This whiteout entry makes it appear that the file no longer exists, although the file can be reinstated in the directory by using the unwhiteout(1) command to remove the whiteout entry. The lsw(1) command lists whiteout entries.

TFS filesystems are served by the tfsd(8). A TFS filesystem is mounted on a directory by making a TFS_MOUNT protocol request of the tfsd, specifying the directories that are to be stacked. The tfsd responds with a file handle, which the client then supplies to the mount(2V) system call, along with the address of the tfsd.

SEE ALSO
lsw(1), unwhiteout(1), mount(2V), tfsd(8), mount_tfs(8)