X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=filedir.tex;h=73cc8e6d0e42695bf12683115f50988272cf4f53;hp=d9c98d85fd4da0a24ba3f66216d61d4d3aa065b8;hb=4aa6c51696d2b11c572eccd37238db1691785573;hpb=fd4e2fd24a218ef56953fd5a58d0b3c0bee8acb7 diff --git a/filedir.tex b/filedir.tex index d9c98d8..73cc8e6 100644 --- a/filedir.tex +++ b/filedir.tex @@ -1,6 +1,6 @@ %% 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", @@ -647,7 +647,12 @@ il cui prototipo è:\footnote{la funzione è una versione specifica di Linux che \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 @@ -656,9 +661,8 @@ il cui prototipo è:\footnote{la funzione è una versione specifica di Linux che 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 @@ -804,10 +808,10 @@ identificati dalle costanti riportate nell'elenco seguente: \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 @@ -894,7 +898,22 @@ identificati dalle costanti riportate nell'elenco seguente: 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 @@ -903,7 +922,35 @@ identificati dalle costanti riportate nell'elenco seguente: 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 @@ -920,33 +967,97 @@ identificati dalle costanti riportate nell'elenco seguente: \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 @@ -2929,6 +3040,8 @@ accesso in lettura sui dati bufferizzati. Questo comporta un ovvio costo sia 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