Subrutina de montaje o montaje

Finalidad

Hace que un sistema de archivo esté disponible para su utilización.

Biblioteca

Biblioteca C estándarlibc.a)

Sintaxis

#include <sys/types.h>
#include <sys/vmount.h>
int vmount ( VMount,  Size)
struct vmount *VMount;
int Size;
int mount
(
Device,  Path,  Flags)
char *Device;
char *Path;
int Flags;

Descripción

La subrutina vmount monta un sistema de archivos, con lo que el archivo queda disponible para su uso. La subrutina vmount crea lo que se conoce como un sistema de archivos virtual. Después de montar un sistema de archivos, las referencias al nombre de vía de acceso que se va a montar sobre el directorio raíz en el sistema de archivos montado.

Un directorio sólo se puede montar sobre un directorio, y un archivo sólo se puede montar sobre un archivo. (El archivo o directorio puede ser un enlace simbólico.)

Por lo tanto, la subrutina vmount puede proporcionar los siguientes tipos de montajes:

  • Un archivo local a través de un archivo local o remoto
  • Un directorio local a través de un directorio local o remoto
  • Un archivo remoto a través de un archivo local o remoto
  • Un directorio remoto a través de un directorio local o remoto.

Se puede emitir un montaje en un directorio o un archivo si el proceso de llamada tiene autorización de usuario root o está en el grupo de sistemas y tiene acceso de escritura al punto de montaje.

Para montar un dispositivo de bloque, un archivo remoto o un directorio remoto, el proceso de llamada también debe tener autorización de usuario root.

La subrutina mount sólo permite montajes de un dispositivo de bloque sobre un directorio local con el tipo de sistema de ficheros por defecto. La subrutina mount busca en el archivo /etc/filesystems para encontrar una estrofa correspondiente para el sistema de archivos deseado.

Nota: La interfaz de la subrutina mount se proporciona sólo por compatibilidad con versiones anteriores del sistema operativo. El uso de la subrutina mount está totalmente desaconsejado por los programas de aplicación normales.

Si el directorio en el que intenta montar el sistema tiene el bit sticky establecido en, debe ser propietario de ese directorio o ser el usuario root para que el montaje tenga éxito. Esta restricción sólo se aplica a los montajes de directorio sobre directorio.

Parámetros

Dispositivo
Nombre de vía de acceso que identifica el dispositivo de bloque (también denominado archivo especial) que contiene el sistema de archivos físico.
Vía
Nombre de vía de acceso que identifica el directorio en el que se va a montar el sistema de archivos.
distintivos
Valores que definen las características del objeto que se va a montar. Actualmente estos valores están definidos en el archivo /usr/include/sys/vmount.h:
MNT_READONLY
Indica que el objeto que se va a montar es de sólo lectura y que no se permite el acceso de escritura. Si no se especifica este valor, se permite la escritura de acuerdo con la accesibilidad del archivo individual.
MNT_NOSUID
Indica que los programas setuid y setgid referenciados a través del montaje no deben ser ejecutables. Si no se especifica este valor, los programas setuid y setgid referenciados a través del montaje pueden ser ejecutables.
MTN_NODEV
Indica que las aperturas de archivos especiales de dispositivo referenciados a través del montaje no deben tener éxito. Si no se especifica este valor, es posible que se abran los archivos especiales de dispositivo a los que se hace referencia a través del montaje.
VMount
Un puntero a una estructura vmount de longitud variable. Esta estructura se define en el archivo sys/vmount.h.

Los siguientes campos del parámetro VMount deben ser inicializados antes de la llamada a la subrutina vmount:

vmt_revision
El código de revisión en vigor cuando se compiló el programa que creó este sistema de archivos virtual. Es el valor VMT_REVISION.
vmt_length
La longitud total de la estructura con todos sus datos. Debe ser un múltiplo del tamaño de la palabra (4 bytes) y corresponder con el parámetro Tamaño .
vmt_flags
Contiene las características generales de montaje. Se puede especificar el valor siguiente:
MNT_READONLY
Se va a crear un sistema de archivos virtual de sólo lectura.
vmt_gfstype
El tipo del sistema de archivos genérico subyacente a VMT_OBJECT. Los valores para este campo se definen en el archivo sys/vmount.h e incluyen:
MNT_JFS
Indica el sistema de archivos nativo.
MNT_NFS
Indica un cliente del sistema de archivos de red.
MNT_CDROM
Indica un sistema de archivos de CD-ROM.
vmt_data
Una matriz de estructuras que describen datos de longitud variable asociados con la estructura vmount. La estructura consta de los siguientes campos:
vmt_off
El desplazamiento de los datos desde el principio de la estructura vmount.
vmt_size
El tamaño, en bytes, de los datos.

La matriz consta de los campos siguientes:

vmt_data[VMT_OBJECT]
Especifica el nombre del dispositivo, directorio o archivo que se va a montar.
vmt_data[VMT_STUB]
Especifica el nombre del dispositivo, directorio o archivo que se va a montar.
vmt_data[VMT_HOST]
Especifica el nombre corto (binario) del host propietario del objeto montado. No es necesario especificarlo si VMT_OBJECT es local (es decir, tiene el mismovmt_gfstypecomo / (raíz), la raíz de todos los sistemas de archivos).
vmt_data[VMT_HOSTNAME]
Especifica el nombre largo (carácter) del host propietario del objeto montado. No es necesario especificarlo si VMT_OBJECT es local.
vmt_data[VMT_INFO]
Especifica la información binaria que se debe pasar a la implementación del sistema de archivos genérico que da soporte a VMT_OBJECT. La interpretación de este campo es específica delgfs_type.
vmt_data[VMT_ARGS]
Especifica una representación de serie de caracteres de VMT_INFO.

A la vuelta de la subrutina vmount, se inicializan los siguientes campos adicionales del parámetro VMount:

vmt_fsid
Especifica el identificador de dos palabras del sistema de archivos; la interpretación de este identificador depende de la opcióngfs_type.
vmt_vfsnumber
Especifica el identificador exclusivo del sistema de archivos virtual. Los sistemas de archivos virtuales no sobreviven a la IPL; tampoco este identificador.
vmt_time
Especifica la hora a la que se ha creado el sistema de archivos virtual.
Tamaño
Especifica el tamaño, en bytes, del área de datos proporcionada.

Valores de retorno

Tras la finalización satisfactoria, se devuelve un valor de 0. En caso contrario, se devuelve un valor de -1 y se establece la variable global errno para indicar el error.

Códigos de error

Las subrutinas mount y vmount fallan y el sistema de ficheros virtual no se crea si se cumple alguna de las siguientes condiciones:

Elemento Descripción
EACCES El proceso de llamada no tiene permiso de escritura en el directorio de apéndice (el directorio que se va a montar).
EBUSY VMT_OBJECT especifica un dispositivo que ya está montado o un objeto que está abierto para escritura, o que la tabla de montaje del kernel está llena.
EFAULT El parámetro VMount apunta a una ubicación fuera del espacio de direcciones asignado al proceso.
EFBIG El tamaño del sistema de archivos es demasiado grande.
EFORMAT Se ha detectado una incoherencia interna en el sistema de archivos.
EINVAL El contenido del parámetro VMount es ininteligible (por ejemplo, el parámetrovmt_gfstypees irreconocible, o la implementación del sistema de ficheros no entiende el VMT_INFO proporcionado).
ENOSYS El tipo de sistema de archivos solicitado no se ha configurado.
ENOTBLK El objeto que se va a montar no es un archivo, directorio o dispositivo.
ENOTDIR Los tipos de VMT_OBJECT y VMT_STUB son incompatibles.
EPERM VMT_OBJECT especifica un dispositivo de bloque y el proceso de llamada no tiene autorización de usuario root.
EROFS Se ha intentado montar un sistema de archivos para leer/escribir cuando el sistema de archivos no puede dar soporte a la escritura.