MOUNT
Section: Linux Programmer's Manual (2)
Updated: 2007-12-17
Index
Return to Main Contents
NOME
mount, umount, umount2 - monta e smonta i file system
SINTASSI
#include <sys/mount.h>
int mount(const char *source, const char *target,
const char *filesystemtype, unsigned long mountflags,
const void *data);
int umount(const char *target);
int umount2(const char *target, int flags);
DESCRIZIONE
mount()
attacca il file system specificato da
source
(che è spesso un nome di dispositivo, ma può anche essere un nome di
directory o un dummy) alla directory specificata da
target.
umount()
e
umount2()
rimuove l'attaccamento del (più alto) file system montato su
target.
Sono necessari privilegi appropriati (Linux: capacità
CAP_SYS_ADMIN)
per montare e smontare i file system.
A partire da Linux 2.4 un singolo file system può essere visibile su
punti di mount multipli, e sullo stesso punto di mount possono essere
impilati mount multipli.
I valori dell'argomento
filesystemtype
supportato dal kernel sono elencati in
/proc/filesystems
(come "minix", "ext2", "msdos", "proc", "nfs", "iso9660" etc.).
Ulteriori tipi possono divenire disponibili quando vengono caricati
moduli appropriati.
L'argomento
mountflags
può avere il magic number 0xC0ED (MS_MGC_VAL)
nei 16 bit più alti (questo era necessario nelle versioni di kernel
precedenti a 2.4, ma non è più necessario ed è ignorato se specificato),
e vari flag di mount (come definito in <linux/fs.h> per libc4 e libc5
e in <sys/mount.h> per glibc2) nei 16 bit di ordine basso:
- MS_BIND (da Linux 2.4 in poi)
-
Esegue un mount bind, rendendo un file o un sottoalbero di directory
visibile a un altro punto dentro un file system.
I mount bind possono attraversare i file system e oltrepassare
le gabbie
chroot(2)
Gli argomenti
filesystemtype, mountflags, e data
sono ignorati.
- MS_DIRSYNC (a partire da Linux 2.5.19)
-
sincronizza i cambiamenti di directory in questo file system.
(Questa proprietà può essere ottenuta per directory individuali
o sottoalberi usando
chattr(1).)
- MS_MANDLOCK
-
Permette il blocco obbligatorio aui file in questo file system.
(Il blocco obbligatorio deve ancora essere abilitato su una base per
file, come descritto in
fcntl(2).)
- MS_MOVE
-
Sposta un sottoalbero.
source
specifica un punto di mount esistente e
target
specifica la nuova locazione.
Lo spostamento è atomico: il sottoalbero non viene smontato in nessun momento.
Gli argomenti
filesystemtype, mountflags, e data
sono ignorati.
- MS_NOATIME
-
Non aggiorna l'ora di accesso per (tutti i tipi di) file su questo file system.
- MS_NODEV
-
Non permette l'accesso a dispositivi (file speciali) in questo file system.
- MS_NODIRATIME
-
Non aggiorna l'ora di accesso per directory su questo file system.
Questo flag fornisce un sottoinsieme di funzioni messe a disposizione da
MS_NOATIME;
vale a dire che
MS_NOATIME
suggerisce
MS_NODIRATIME.
- MS_NOEXEC
-
Non permette ai programmi di essere eseguiti da questo file system.
- MS_NOSUID
-
Non onora i bit set-user-ID e set-group-ID quando si eseguono programmi
da questo file system.
- MS_RDONLY
-
Monta file system in sola lettura.
- MS_RELATIME (A partire da Linux 2.6.20)
-
Quando si accede a un file in questo file system,
aggiorna solo l'ora dell'ultimo accesso al file (atime) se il valore corrente di atime
è minore o uguale a quello dell'ultima modifica del file (mtime)
o all'ora dell'ultimo cambiamento di stato (ctime).
Questa opzione è utile per programmi, come
mutt(1),
che hanno bisogno di sapere quando un file è stato letto dall'ultima modifica.
- MS_REMOUNT
-
Monta di nuovo un mount esistente.
Questo permette di cambiare i
mountflag
e
dati
di un mount esistente senza dover smontare e rimontare il file system.
source
e
target
devono essere gli stessi valori specificati nella chiamata
mount()
iniziale;
filesystemtype
è ignorato.
I seguenti
mountflag
possono venire cambiati:
MS_RDONLY,
MS_SYNCHRONOUS,
MS_MANDLOCK;
prima del kernel 2.6.16, potevano essere cambiati anche i seguenti:
MS_NOATIME
e
MS_NODIRATIME;
e, in aggiunta, prima del kernel 2.4.10, potevano essere cambiati anche questi:
MS_NOSUID,
MS_NODEV,
MS_NOEXEC.
- MS_SYNCHRONOUS
-
Rende sincrone le scritture su questo file system (come se
il flag
O_SYNC
a
open(2)
fosse specificato per tutti i file aperti a questo file system).
Da Linux 2.4 in poi, i flag
MS_NODEV, MS_NOEXEC, e MS_NOSUID
sono impostabili per l'intero punto di mount.
Dal kernel 2.6.16 in poi,
MS_NOATIME
e
MS_NODIRATIME
possono essere impostati basandosi sui punti di mount.
Anche il flag
MS_RELATIME
può essere impostato basandosi sui punti di mount.
L'argomento
data
è interpretato da differenti file system.
Tipicamente esso è una stringa di opzioni separate da virgole
capita da questo file system.
Vedere
mount(8)
per dettagli delle opzioni disponibili per ciascun tipo di filesystem.
Linux 2.1.116 ha aggiunto la chiamata di sistema
umount2(),
la quale, come
umount(),
smonta un target, ma permette
flag
aggiuntivi che controllano il comportamento dell'operazione:
- MNT_FORCE (a partire da Linux 2.1.116)
-
Forza l'unmount anche se occupato.
Questo può causare una perdita di dati.
(solo per i mount NFS).
- MNT_DETACH (a partire da Linux 2.4.11)
-
Esegue un unmount lento: rende il punto di mount non disponibile per i
nuovi accessi, e attualmente esegue l'unmount quando il punto di mount
smette di essere occupato.
- MNT_EXPIRE (a partire da Linux 2.6.8)
-
Marca il punto di mount come scaduto.
Se un punto di mount non è attualmente in uso, allora una chiamata iniziale a
umount2()
con questo flag fallisce con l'errore
EAGAIN,
ma marca il punto di mount come scaduto.
Il punto di mount rimane scaduto fino a quando non vi
accede nessun processo.
Una seconda chiamata
umount2()
che specifica
MNT_EXPIRE
somnta un punto di mount scaduto.
Questo flag non può essere specificato con
MNT_FORCE
o
MNT_DETACH.
VALORE RESTITUITO
In caso di successo viene restituito zero.
In caso di errore viene restituito -1 , e
errno
viene impostato di conseguenza.
ERRORI
I valori di errore dati di seguito vengono da errori indipendenti dal
tipo di file system.
Ciascun tipo di file system può avere i propri errori
speciali e il suo comportamento speciale.
Vedere il codice sorgente del kernel per dettagli.
- EACCES
-
Un componente di un non poteva essere cercato.
(Vedere anche
path_resolution(2).)
Oppure è stato tentato il mount di un filesystem in sola lettura senza dare
il flag
MS_RDONLY .
Oppure il dispositivo a blocchi
source
si trova su un filesystem montato con
l'opzione
MS_NODEV
- EAGAIN
-
Una chiamata a
umount2()
che specifica
MNT_EXPIRE
ha marcato con successo un file system non occupato come scaduto.
- EBUSY
-
source
è già montato.
Oppure non può essere rimontato in sola lettura,
perché contiene ancora file aperti in scrittura.
Oppure non può essere montato sul
target
perché
target
è ancora occupato (è la directory di lavoro di qualche task,
il punto di mount di un altro dispositivo, ha file aperti, ecc.).
Oppure non può essere smontato perché è occupato.
- EFAULT
-
Uno degli argomanti puntatori punta fuori dallo spazio di indirizzamento dell'utente.
- EINVAL
-
source
ha un superblock non valido.
Oppure è stato tentato un remount
(MS_REMOUNT),
ma
source
non era ancora montato su
target.
Oppure è stato tentato uno spostamento
(MS_MOVE),
ma
source
non era un mount point, o era '/'.
Oppure è stato tentato un unmount, ma
target
non era un mount point.
Oppure
umount2()
è stato chiamato con
MNT_EXPIRE
e uno tra
MNT_DETACH
o
MNT_FORCE.
- ELOOP
-
Troppi link incontrati durante la risoluzione di un percorso.
Oppure è stato tentato uno spostamento, mentre
target
è discendente di
source.
- EMFILE
-
(Nel caso non sia necessario un dispositivo a blocchi):
La tabella dei dispositivi fasulli è piena.
- ENAMETOOLONG
-
Un nome di percorso è più lungo di
MAXPATHLEN.
- ENODEV
-
filesystemtype
non configurato nel kernel.
- ENOENT
-
Un nome di percorso era vuoto o aveva un componente inesistente.
- ENOMEM
-
Il kernel non può allocare una pagina libera in cui copiare nomi di file o dati.
- ENOTBLK
-
source
non è un dispositivo a blocchi (ed era necessario un dispositivo).
- ENOTDIR
-
Il secondo argomento, o un prefisso del primo argomento, non è una
directory.
- ENXIO
-
Il major number del dispositivo a blocchi
source
è fuori limite.
- EPERM
-
Il chiamante non ha i privilegi necessari.
CONFORME A
Queste funzioni sono specifiche di Linux e non devono essere usate in
programmi pensati per essere portabili.
NOTE
Note Linux
La funzione originale
umount()
era chiamata come umount(device) e restituiva
ENOTBLK
quando non veniva chiamata con un dispositivo a blocchi.
In Linux 0.98p4 fu aggiunta una chiamata umount(dir), per poter
supportate dispositivi anonimi.
In Linux 2.3.99-pre7 la chiamata umount(device) fu rimossa,
lasciando solo umount(dir) (poiché ora i dispositivi possono
essere montati in più di un posto, così specificare il dispositivo non è sufficiente).
Il flag originale
MS_SYNC
fu rinominato
MS_SYNCHRONOUS
in 1.1.69
quando fu aggiunto un diverso
MS_SYNC
a <mman.h>.
Prima di Linux 2.4 un tentativo di eseguire un programma set-user-ID o set-group-ID
su un file system montato con
MS_NOSUID
falliva con
EPERM.
A partire da Linux 2.4 i bit set-user-ID e set-group-ID in questo caso
sono igonrati silenziosamente.
VEDERE ANCHE
path_resolution(7),
mount(8),
umount(8)
COLOPHON
Questa pagina fa parte del rilascio 2.80 del progetto
man-pages
di Linux.
Si può trovare una descrizione del progetto,
e informazioni su come riportare bachi,
presso
http://www.kernel.org/doc/man-pages/.
Per la traduzione in italiano si può fare riferimento a
http://www.pluto.it/ildp/collaborare/
Index
- NOME
-
- SINTASSI
-
- DESCRIZIONE
-
- VALORE RESTITUITO
-
- ERRORI
-
- CONFORME A
-
- NOTE
-
- Note Linux
-
- VEDERE ANCHE
-
- COLOPHON
-
This document was created by
man2html,
using the manual pages.
Time: 23:03:51 GMT, June 17, 2008