umount, umount2 - smonta i filesystem
Standard C library (
libc,
-lc)
#include <sys/mount.h>
int umount(const char *target);
int umount2(const char *target, int flags);
umount() e
umount2() rimuovono il filesystem (più alto)
montato su
target.
Sono necessari privilegi appropriati (Linux: capacità
CAP_SYS_ADMIN per smontare i filesystem.
A partire da Linux 2.1.116 è stata aggiunta la chiamata di sistema
umount2() che, come
umount(), smonta un target, ma permette
opzioni aggiuntive che controllano il comportamento dell'operazione:
-
MNT_FORCE (a partire da Linux 2.1.116)
- Chiede al filesystem di interrompere le richieste pendenti
prima di tentare lo smontaggio. Ciò può consentire di
completare lo smontaggio senza rimanere in attesa di un server
inaccessibile, ma potrebbe causare perdita di dati. Se, dopo le richieste
d'interruzione, alcuni processi hanno ancora riferimenti attivi al
filesystem, lo smontaggio fallirà. Alla versione 4.12 di Linux
MNT_FORCE è supportato solo sui seguenti filesystem: 9p (da
Linux 2.6.16), ceph (da Linux 2.6.34), cifs (da Linux 2.6.12), fuse (da
Linux 2.6.16), lustre (da Linux 3.11) e NFS (da Linux 2.1.116).
-
MNT_DETACH (a partire da Linux 2.4.11)
- Perform a lazy unmount: make the mount unavailable for new
accesses, immediately disconnect the filesystem and all filesystems
mounted below it from each other and from the mount table, and actually
perform the unmount when the mount ceases to be busy.
-
MNT_EXPIRE (a partire da Linux 2.6.8)
- Mark the mount as expired. If a mount is not currently in
use, then an initial call to umount2() with this flag fails with
the error EAGAIN, but marks the mount as expired. The mount remains
expired as long as it isn't accessed by any process. A second
umount2() call specifying MNT_EXPIRE unmounts an expired
mount. This flag cannot be specified with either MNT_FORCE or
MNT_DETACH.
-
UMOUNT_NOFOLLOW (a partire da Linux 2.6.34)
- Non elimina il riferimento a target se è un
collegamento simbolico. Questa opzione permette di evitare problemi di
sicurezza in programmi set-user-ID- root che consentono a utenti
senza privilegi di smontare i filesystem.
In caso di successo restituisce zero. In caso di errore restituisce -1, e
errno verrà impostato per indicare l'errore.
I valori di errore indicati di seguito sono causati da errori indipendenti dal
tipo di filesystem. Ciascun tipo di filesystem può avere i propri
errori speciali e il suo comportamento speciale. Vedere il codice sorgente del
kernel per dettagli.
- EAGAIN
- Una chiamata a umount2() che specifica
MNT_EXPIRE ha marcato con successo un filesystem non occupato come
scaduto.
- EBUSY
-
target non può essere smontato in quanto
occupato.
- EFAULT
-
target punta fuori dallo spazio di indirizzamento
dell'utente.
- EINVAL
-
target non è un punto di mount.
- EINVAL
-
target is locked; see
mount_namespaces(7).
- EINVAL
-
umount2() è stato chiamato con
MNT_EXPIRE e con uno fra MNT_DETACH o MNT_FORCE.
-
EINVAL (a partire da Linux 2.6.34)
-
umount2() è stato cchiamato con un valore di
opzione non valido in flags.
- ENAMETOOLONG
- Un nome di percorso è più lungo di
MAXPATHLEN.
- 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.
- EPERM
- Il chiamante non ha i privilegi necessari.
MNT_DETACH and
MNT_EXPIRE are available since glibc 2.11.
Queste funzioni sono specifiche di Linux e non devono essere usate in programmi
pensati per essere portabili.
Shared mounts cause any mount activity on a mount, including
umount()
operations, to be forwarded to every shared mount in the peer group and every
slave mount of that peer group. This means that
umount() of any peer in
a set of shared mounts will cause all of its peers to be unmounted and all of
their slaves to be unmounted as well.
This propagation of unmount activity can be particularly surprising on systems
where every mount is shared by default. On such systems, recursively bind
mounting the root directory of the filesystem onto a subdirectory and then
later unmounting that subdirectory with
MNT_DETACH will cause every
mount in the mount namespace to be lazily unmounted.
To ensure
umount() does not propagate in this fashion, the mount may be
remounted using a
mount(2) call with a
mount_flags argument that
includes both
MS_REC and
MS_PRIVATE prior to
umount()
being called.
La funzione originale
umount() era chiamata come
umount(device) e
restituiva
ENOTBLK quando non veniva chiamata da un dispositivo a
blocchi. In Linux 0.98p4 fu aggiunta una chiamata
umount(dir), per
poter supportare 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).
mount(2),
mount_namespaces(7),
path_resolution(7),
mount(8),
umount(8)
La traduzione italiana di questa pagina di manuale è stata creata da
Elisabetta Galli <
[email protected]> e Marco Curreli
<
[email protected]>
Questa traduzione è documentazione libera; leggere la
GNU
General Public License Versione 3 o successiva per le condizioni di
copyright. Non ci assumiamo alcuna responsabilità.
Per segnalare errori nella traduzione di questa pagina di manuale inviare un
messaggio a
[email protected]