%% filedir.tex
%%
-%% Copyright (C) 2000-2011 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2012 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Un preambolo",
\itindex{mount~point} \textit{mount point} o di spostarlo
quando \param{target} non è un \itindex{mount~point} \textit{mount point}
o è la radice.
- \item[\errcode{EMFILE}] la tabella dei device \textit{dummy} è piena.
+ \item[\errcode{ELOOP}] si è cercato di spostare un \itindex{mount~point}
+ \textit{mount point} su una sottodirectory di \param{source} o si sono
+ incontrati troppi link simolici nella risoluzione di un nome.
+ \item[\errcode{EMFILE}] in caso di filesystem virtuale, la tabella dei
+ dispositivi fittizi (chiamati \textit{dummy} nella documentazione inglese)
+ è piena.
\item[\errcode{ENODEV}] il tipo \param{filesystemtype} non esiste o non è
configurato nel kernel.
\item[\errcode{ENOTBLK}] non si è usato un \textit{block device} per
dispositivo \param{source} è sbagliato.
\item[\errcode{EPERM}] il processo non ha i privilegi di amministratore.
\end{errlist}
- ed inoltre \errval{EFAULT}, \errval{ELOOP}, \errval{ENOMEM},
- \errval{ENAMETOOLONG}, \errval{ENOENT}, \errval{ENOTDIR} nel loro
- significato generico.}
+ ed inoltre \errval{EFAULT}, \errval{ENOMEM}, \errval{ENAMETOOLONG},
+ \errval{ENOENT}, \errval{ENOTDIR} nel loro significato generico.}
\end{funcproto}
La funzione monta sulla directory indicata da \param{target}, detta
\texttt{ioctl} (vedi sez.~\ref{sec:file_ioctl}).}
Questo consente di ridurre al minimo il rischio di perdita dei dati delle
- directory in caso di crollo improvviso del sistema, al costo di una perdita
- di prestazioni dato che le funzioni di scrittura relative ad operazioni
- sulle directory non saranno più bufferizzate e si bloccheranno fino
- all'arrivo dei dati sul disco prima che un programma possa proseguire.
+ directory in caso di crollo improvviso del sistema, al costo di una certa
+ perdita di prestazioni dato che le funzioni di scrittura relative ad
+ operazioni sulle directory non saranno più bufferizzate e si bloccheranno
+ fino all'arrivo dei dati sul disco prima che un programma possa proseguire.
\item[\const{MS\_MANDLOCK}] Consente l'uso del \textit{mandatory locking}
\itindex{mandatory~locking} (vedi sez.~\ref{sec:file_mand_locking}) sui file
dell'amministratore o di un altro utente, che gli consentirebbe di eseguirlo
per conto di quest'ultimo.
-\item[\const{MS\_PRIVATE}] (non documentato).
+\item[\const{MS\_PRIVATE}] Marca un \textit{mount point} come privato. Si
+ tratta di una delle nuove opzioni (insieme a \const{MS\_SHARED},
+ \const{MS\_SLAVE} e \const{MS\_UNBINDABLE}) facenti parte
+ dell'infrastruttura degli \itindex{shared~subtree} \textit{shared subtree}
+ introdotta a partire dal kernel 2.6.15, che estendono le funzionalità dei
+ \itindex{bind~mount} \textit{bind mount}. In questo caso
+ \param{target} dovrà fare riferimento al \textit{mount point} che si intende
+ marcare, e tutti gli altri argomenti verranno ignorati.
+
+ Di default, finché non lo si marca altrimenti con una delle altre opzioni
+ dell'interfaccia \itindex{shared~subtree} \textit{shared subtree}, ogni
+ \textit{mount point} è privato. Ogni \textit{bind mount} ottenuto da un
+ \textit{mount point} di tipo \textit{private} si comporta come descritto
+ nella trattazione di \const{MS\_BIND}. Si usa questo flag principalmente per
+ revocare gli effetti delle altre opzioni e riportare il comportamento a
+ quello ordinario.
\item[\const{MS\_RDONLY}] Esegue il montaggio del filesystem in sola lettura,
non sarà possibile nessuna modifica ai suoi contenuti. Viene usato tutte le
corrotto). All'avvio di default il kernel monta la radice in questa
modalità.
-\item[\const{MS\_RELATIME}] .
+\item[\const{MS\_REC}] Applica ricorsivamente a tutti i \textit{mount point}
+ presenti al di sotto del \textit{mount point} indicato gli effetti della
+ opzione degli \itindex{shared~subtree} \textit{shared subtree}
+ associata. Anche questo caso l'argomento \param{target} deve fare
+ riferimento ad un \textit{mount point} e tutti gli altri argomenti sono
+ ignorati, ed il flag deve essere indicato assieme ad una fra
+ \const{MS\_PRIVATE}, \const{MS\_SHARED}, \const{MS\_SLAVE} e
+ \const{MS\_UNBINDABLE}.
+
+\item[\const{MS\_RELATIME}] Indica di effettuare l'aggiornamento degli
+ \textit{access time} sul filesystem soltanto quando questo risulti
+ antecendente il valore corrente del \textit{modification time} o del
+ \textit{change time} (per i tempi dei file si veda
+ sez.~\ref{sec:file_file_times}). L'opzione è disponibile a partire dal
+ kernel 2.6.20, mentre dal 2.6.30 questo è diventato il comportamento di
+ default del sistema, che può essere riportato a quello tradizionale con
+ l'uso di \const{MS\_STRICTATIME}. Sempre dal 2.6.30 il comportamento è stato
+ anche modificato e l'\textit{access time} viene comunque aggiornato se è più
+ vecchio di un giorno.
+
+ L'opzione consente di evitare i problemi di prestazioni relativi
+ all'aggiornamento dell'\textit{access time} senza avere impatti negativi
+ riguardo le funzionalità, il comportamento adottato infatti consente di
+ rendere evidente che vi è stato un accesso dopo la scrittura, ed evitando al
+ contempo ulteriori operazioni su disco negli accessi successivi. In questo
+ modo l'informazione relativa al fatto che un file sia stato letto resta
+ disponibile, ed i programmi che ne fanno uso continuano a funzionare. Con
+ l'introduzione di questo comportamento l'uso delle alternative
+ \const{MS\_NOATIME} e \const{MS\_NODIRATIME} è sostanzialmente inutile.
\item[\const{MS\_REMOUNT}] Consente di rimontare un filesystem già montato
cambiandone le opzioni di montaggio in maniera atomica. In questo modo si
\const{MS\_NOATIME} e \const{MS\_NODIRATIME}, ed infine prima del kernel
2.4.10 anche \const{MS\_NODEV}, \const{MS\_NOEXEC} e \const{MS\_NOSUID}.
-\item[\const{MS\_SHARE}] Shared mount (non documentato).
-
-\item[\const{MS\_SILENT}] .
-
-\item[\const{MS\_SLAVE}] Slave mount (non documentato).
-
-\item[\const{MS\_STRICTATIME}] .
+\item[\const{MS\_SHARED}] Marca un \textit{mount point} come \textit{shared
+ mount}. Si tratta di una delle nuove opzioni (insieme a
+ \const{MS\_PRIVATE}, \const{MS\_SLAVE} e \const{MS\_UNBINDABLE}) facenti
+ parte dell'infrastruttura degli \itindex{shared~subtree} \textit{shared
+ subtree} introdotta a partire dal kernel 2.6.15, che estendono le
+ funzionalità dei \itindex{bind~mount} \textit{bind mount}. In questo caso
+ \param{target} dovrà fare riferimento al \textit{mount point} che si intende
+ marcare, e tutti gli altri argomenti verranno ignorati.
+
+ Lo scopo dell'opzione è ottenere che tutti i successivi \textit{bind mount}
+ effettuati da un \textit{mount point} marcato da essa siano di tipo
+ \textit{shared}, cioè ``\textsl{condividano}'' con l'originale e fra di loro
+ ogni ulteriore operazione di montaggio o smontaggio che avviene su una
+ directory al di sotto di uno qualunque di essi. Le operazioni di montaggio e
+ smontaggio cioè vengono ``\textsl{propagate}'' a tutti i \textit{mount
+ point} della stessa condivisione, e la sezione di albero di file vista al
+ di sotto di ciascuno di essi sarà sempre identica.
+
+\item[\const{MS\_SILENT}] Richiede la soppressione di alcuni messaggi di
+ avvertimento nei log del kernel (vedi sez.~\ref{sec:sess_daemon}). L'opzione
+ è presente a partire dal kernel 2.6.17 e sostituisce, utilizzando un nome
+ non fuorviante, la precedente \const{MS\_VERBOSE}, introdotta nel kernel
+ 2.6.12, che aveva lo stesso effetto.
+
+\item[\const{MS\_SLAVE}] Marca un \textit{mount point} come \textit{slave
+ mount}. Si tratta di una delle nuove opzioni (insieme a
+ \const{MS\_PRIVATE}, \const{MS\_SHARED} e \const{MS\_UNBINDABLE}) facenti
+ parte dell'infrastruttura degli \itindex{shared~subtree} \textit{shared
+ subtree} introdotta a partire dal kernel 2.6.15, che estendono le
+ funzionalità dei \itindex{bind~mount} \textit{bind mount}. In questo caso
+ \param{target} dovrà fare riferimento al \textit{mount point} che si intende
+ marcare, e tutti gli altri argomenti verranno ignorati.
+
+ Lo scopo dell'opzione è ottenere che tutti i successivi \textit{bind mount}
+ effettuati da un \textit{mount point} marcato da essa siano di tipo
+ \textit{slave}, cioè ``\textsl{condividano}'' ogni ulteriore operazione di
+ montaggio o smontaggio che avviene su una directory al di sotto del
+ \textit{mount point} originale. Le operazioni di montaggio e smontaggio in
+ questo caso vengono ``\textsl{propagate}'' soltanto dal \textit{mount point}
+ originale (detto anche \textit{master}) verso gli \textit{slave}, mentre
+ essi potranno eseguire al loro interno ulteriori montaggi che non saranno
+ propagati né negli altri né nel \textit{mount point} originale.
+
+\item[\const{MS\_STRICTATIME}] Ripristina il comportamento tradizionale per
+ cui l'\textit{access time} viene aggiornato ad ogni accesso al
+ file. L'opzione è disponibile solo a partire dal kernel 2.6.30 quando il
+ comportamento di default del kernel è diventato quello fornito da
+ \const{MS\_RELATIME}.
+
+\item[\const{MS\_SYNCHRONOUS}] Abilita la scrittura sincrona richiedendo che
+ ogni modifica al contenuto del filesystem venga immediatamente registrata su
+ disco. Lo stesso comportamento può essere ottenuto con il flag
+ \const{O\_SYNC} di \func{open} (vedi sez.~\ref{sec:file_open}).
+
+ Questa opzione consente di ridurre al minimo il rischio di perdita dei dati
+ in caso di crollo improvviso del sistema, al costo di una pesante perdita di
+ prestazioni dato che tutte le funzioni di scrittura non saranno più
+ bufferizzate e si bloccheranno fino all'arrivo dei dati sul disco. Per un
+ compromesso in cui questo comportamento avviene solo per le directory, ed ha
+ quindi una incidenza nettamente minore, si può usare \const{MS\_DIRSYNC}.
+
+\item[\const{MS\_UNBINDABLE}] Marca un \textit{mount point} come
+ \textit{unbindable mount}. Si tratta di una delle nuove opzioni (insieme a
+ \const{MS\_PRIVATE}, \const{MS\_SHARED} e \const{MS\_SLAVE}) facenti parte
+ dell'infrastruttura degli \itindex{shared~subtree} \textit{shared subtree}
+ introdotta a partire dal kernel 2.6.15, che estendono le funzionalità dei
+ \itindex{bind~mount} \textit{bind mount}. In questo caso
+ \param{target} dovrà fare riferimento al \textit{mount point} che si intende
+ marcare, e tutti gli altri argomenti verranno ignorati.
+
+ Un \textit{mount point} marcato in questo modo disabilità la capacità di
+ eseguire dei \itindex{bind~mount} \textit{bind mount}. Si comporta cioè come
+ allo stesso modo di un \textit{mount point} ordinario di tipo
+ \textit{private} con in più la restrizione che nessuna sua sottodirectory
+ (anche se relativa ad un ulteriore montaggio) possa essere utilizzata per un
+ come sorgente di un \itindex{bind~mount} \textit{bind mount}.
-\item[\const{MS\_SYNCHRONOUS}] Abilita la scrittura sincrona.
-
-\item[\const{MS\_UNBINDABLE}] (non documentato).
+\end{basedescript}
-% TODO aggiornare con i nuovi flag di man mount
-% per \const{MS\_SLAVE},\const{MS\_SHARE}, \const{MS\_PRIVATE},
-% \const{MS\_UNBINDABLE} dal 2.6.15 vedi shared subtrees,
-% http://lwn.net/Articles/159077/ e
-% Documentation/filesystems/sharedsubtree.txt
-% TODO: non documentati ma presenti in sys/mount.h:
-% MS_REC
-% MS_POSIXACL
-% MS_KERNMOUNT
-% MS_I_VERSION
-% MS_ACTIVE
-% MS_NOUSER
+% NOTE per \const{MS\_SLAVE},\const{MS\_SHARE}, \const{MS\_PRIVATE} e
+% \const{MS\_UNBINDABLE} dal 2.6.15 vedi shared subtrees, in particolare
+% * http://lwn.net/Articles/159077/ e
+% * Documentation/filesystems/sharedsubtree.txt
-\end{basedescript}
+% TODO: (bassa priorità) non documentati ma presenti in sys/mount.h:
+% * MS_POSIXACL
+% * MS_KERNMOUNT
+% * MS_I_VERSION
+% * MS_ACTIVE
+% * MS_NOUSER
La funzione \func{mount} può essere utilizzata anche per effettuare il
\textsl{rimontaggio} di un filesystem, cosa che permette di cambiarne al volo
in termini di prestazioni, che di consumo di risorse come la batteria per i
portatili, o cicli di riscrittura per i dischi su memorie riscrivibili.
+% TODO aggiustare per il contenuto duplicato con le analoghe MS_*
+
Per questo motivo, onde evitare di mantenere una informazione che nella
maggior parte dei casi non interessa, è sempre stato possibile disabilitare
l'aggiornamento del tempo di ultimo accesso con l'opzione di montaggio