Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ (2) — Plan9 1st Edition

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

bind(1)

intro(2)

fcall(2)

intro(5)

mnt(3)

srv(3)

BIND(2)

NAME

bind, mount, unmount − change name space

SYNOPSIS

int bind(char ∗name, char ∗old, int flag)

int mount(int fd, char ∗old, int flag, char ∗aname, char ∗authserv)

int unmount(char ∗name, char ∗old)

DESCRIPTION

­Bind and ­mount modify the file name space of the current process and other processes in its name space group (see fork(2)). For both calls, ­old is the name of an existing file or directory in the current name space where the modification is to be made.  The name ­old is ­evaluated as described in intro(2), except that no translation of the final path element is done.

For bind, ­name is the name of another (or possibly the same) existing file or directory in the current name space.  After a successful ­bind call, the file name ­old is an alias for the object originally named by name; if the modification doesn’t hide it, ­name will also still refer to its original file.  The evaluation of ­new happens at the time of the bind, not when the binding is later used.

The ­fd argument to ­mount is a file descriptor of an open network connection or pipe to a file server.  The ­old file must be a directory.  After a successful ­mount the file tree ­served (see below) by ­fd will be visible with its root directory having name old.

The ­flag controls details of the modification made to the name space.  In the following, ­new refers to the file as defined by ­name or the root directory served by fd. Either both ­old and new files must be directories, or both must not be directories.  ­Flag can be one of:

­MREPL Replace the ­old file by the new one.  Henceforth, an evaluation of ­old will be translated to the new file.  If they are directories (for mount, this condition is true by definition), ­old becomes a ­union directory consisting of one directory (the new file). 

­MBEFORE Both the ­old and new files must be directories.  Add the constituent files of the new directory to the union directory at ­old so its contents appear first in the union.  After an ­MBEFORE ­bind or ­mount, the new directory will be searched first when evaluating file names in the union directory. 

­MAFTER Like ­MBEFORE but the new directory goes at the end of the union. 

The flags are defined in <libc.h>.  In addition, there is an ­MCREATE flag that can be OR’d with any of the above.  When a ­create system call (see open(2)) attempts to create in a union directory, and the file does not exist, the elements of the union are searched in order until one is found with ­MCREATE set.  The file is created in that directory; if that attempt fails, the ­create fails. 

With ­mount, the file descriptor ­fd must be open for reading and writing and prepared to respond to 9P messages (see Section 5).  After the ­mount, the file tree starting at ­old is served by a kernel mnt(3) device. That device will turn operations in the tree into messages on fd. ­Aname selects among different file trees on the server; the null string chooses the default tree.  ­Authserv is the textual name of the file server.  It is used during authentication to assure that ­fd is a connection to the intended server.  If ­authserv is the empty string, no authentication is performed and the empty string is used as the authentication key in the ­attach message (see auth(5) and attach(5)).

The file descriptor ­fd is automatically closed by a successful ­mount call. 

The effects of ­bind and ­mount can be undone by ­unmount.  If ­name is zero, everything bound to or mounted upon ­old is unbound or unmounted.  If ­name is not zero, it is evaluated as described above for bind, and the effect of binding or mounting that particular result on ­old is undone. 

SEE ALSO

bind(1), intro(2), fcall(2), intro(5), mnt(3), srv(3)

DIAGNOSTICS

These routines set ­errstr. 

BUGS

­Mount will not return until it has successfully attached to the file server, so the process doing a ­mount cannot be the one serving. 

Plan 9  —  January 03, 1993

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026