Merge branch 'master' of ssh://gapil.gnulinux.it/srv/git/gapil
[gapil.git] / filedir.tex
index 0e6abb55d3d42ad031d9e9b524e0bfa00f3f27b9..65772744bf8b02534423526b817c07f620510f3e 100644 (file)
@@ -1,6 +1,6 @@
 %% filedir.tex
 %%
-%% Copyright (C) 2000-2018 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2019 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",
@@ -407,7 +407,7 @@ per i dati in essi contenuti.
 \end{figure}
 
 Se si va ad esaminare con maggiore dettaglio la strutturazione
-dell'informazione all'interno del filesystem \textsl{ext2}, tralasciando i
+dell'informazione all'interno del filesystem \acr{ext2}, tralasciando i
 dettagli relativi al funzionamento del filesystem stesso come la
 strutturazione in gruppi dei blocchi, il \textit{superblock} e tutti i dati di
 gestione possiamo esemplificare la situazione con uno schema come quello
@@ -514,7 +514,7 @@ tre, in quanto adesso sarà referenziata anche dalla voce ``\texttt{..}'' di
 \itindend{inode}
 
 
-\subsection{Alcuni dettagli sul filesystem \textsl{ext2} e successori}
+\subsection{Alcuni dettagli sul filesystem \acr{ext2} e successori}
 \label{sec:file_ext2}
 
 Benché non esista ``il'' filesystem di Linux, dato che esiste un supporto
@@ -525,7 +525,7 @@ grande sviluppo e diverse evoluzioni, fra cui l'aggiunta del
 \textit{journaling} con il passaggio ad \acr{ext3}, che probabilmente è ancora
 il filesystem più diffuso, ed una serie di ulteriori miglioramenti con il
 successivo \acr{ext4}. In futuro è previsto che questo debba essere sostituito
-da un filesystem completamente diverso, \acr{btrfs}, che dovrebbe diventare il
+da un filesystem completamente diverso, \acr{Btrfs}, che dovrebbe diventare il
 filesystem standard di Linux, ma questo al momento è ancora in fase di
 sviluppo.\footnote{si fa riferimento al momento dell'ultima revisione di
   questo paragrafo, l'inizio del 2012.}
@@ -597,8 +597,8 @@ lo schema in fig.~\ref{fig:file_ext2_dirs}; in questo modo è possibile
 implementare nomi per i file anche molto lunghi (fino a 1024 caratteri) senza
 sprecare spazio disco.
 
-Con l'introduzione del filesystem \textit{ext3} sono state introdotte diverse
-modifiche strutturali, la principale di queste è quella che \textit{ext3} è un
+Con l'introduzione del filesystem \acr{ext3} sono state introdotte diverse
+modifiche strutturali, la principale di queste è quella che \acr{ext3} è un
 filesystem \textit{journaled}, è cioè in grado di eseguire una registrazione
 delle operazioni di scrittura su un giornale (uno speciale file interno) in
 modo da poter garantire il ripristino della coerenza dei dati del
@@ -610,7 +610,7 @@ filesystem\footnote{si noti bene che si è parlato di dati \textsl{del}
 della corrente o di crollo del sistema che abbia causato una interruzione
 della scrittura dei dati sul disco.
 
-Oltre a questo \textit{ext3} introduce ulteriori modifiche volte a migliorare
+Oltre a questo \acr{ext3} introduce ulteriori modifiche volte a migliorare
 sia le prestazioni che la semplicità di gestione del filesystem, in
 particolare per le directory si è passato all'uso di alberi binari con
 indicizzazione tramite \textit{hash} al posto delle \textit{linked list} che
@@ -1402,6 +1402,9 @@ trattazione, di queste funzioni, rimandando al manuale della \acr{glibc}
 % TODO (bassa priorità) scrivere delle funzioni (getfsent e getmntent &C)
 % TODO (bassa priorità) documentare ? swapon e swapoff (man 2 ...) 
 
+% TODO con il 5.2 è stata introdotta una serie di nuove syscall per montare un
+% filesystem, vedi https://lwn.net/Articles/759499/ e
+% https://git.kernel.org/linus/f1b5618e013a 
 
 
 \section{La gestione di file e directory}
@@ -2363,8 +2366,8 @@ ecc.), e consente di evitare una successiva chiamata a \func{lstat} (vedi
 sez.~\ref{sec:file_stat}) per determinarlo. I suoi possibili valori sono
 riportati in tab.~\ref{tab:file_dtype_macro}. Si tenga presente che questo
 valore è disponibile solo per i filesystem che ne supportano la restituzione
-(fra questi i più noti sono \textsl{btrfs}, \textsl{ext2}, \textsl{ext3}, e
-\textsl{ext4}), per gli altri si otterrà sempre il valore
+(fra questi i più noti sono \acr{Btrfs}, \acr{ext2}, \acr{ext3}, e
+\acr{ext4}), per gli altri si otterrà sempre il valore
 \const{DT\_UNKNOWN}.\footnote{inoltre fino alla versione 2.1 della
   \acr{glibc}, pur essendo il campo \var{d\_type} presente, il suo uso non era
   implementato, e veniva restituito comunque il valore \const{DT\_UNKNOWN}.}
@@ -4662,8 +4665,8 @@ in particolare accade che:
   quando l'\ids{UID} effettivo del processo è zero.
 \end{enumerate*}
 
-Per alcuni filesystem\footnote{i filesystem più comuni (\textsl{ext2},
-  \textsl{ext3}, \textsl{ext4}, \textsl{xfs}, \texttt{btrfs}) supportano
+Per alcuni filesystem\footnote{i filesystem più comuni (\acr{ext2},
+  \acr{ext3}, \acr{ext4}, \acr{XFS}, \acr{Btrfs}) supportano
   questa caratteristica, che è mutuata da BSD.} è inoltre prevista
 un'ulteriore misura di sicurezza, volta a scongiurare l'abuso dei bit
 \acr{suid} e \acr{sgid}; essa consiste nel cancellare automaticamente questi
@@ -4986,11 +4989,11 @@ che ogni valore precedente sia sovrascritto.
 
 Si tenga presente che non tutti i filesystem supportano gli \textit{Extended
   Attributes}; al momento della scrittura di queste dispense essi sono
-presenti solo sui vari \textsl{extN}, \textsl{ReiserFS}, \textsl{JFS},
-\textsl{XFS}, \textsl{Btrfs}, \textsl{Lustre} e \textsl{OCFS2}.  Inoltre a
+presenti solo sui vari \acr{extN}, \acr{ReiserFS}, \acr{JFS},
+\acr{XFS}, \acr{Btrfs}, \acr{Lustre} e \acr{OCFS2}.  Inoltre a
 seconda della implementazione ci possono essere dei limiti sulla quantità di
 attributi che si possono utilizzare.\footnote{ad esempio nel caso di
-  \textsl{ext2} ed \textsl{ext3} è richiesto che essi siano contenuti
+  \acr{ext2} ed \acr{ext3} è richiesto che essi siano contenuti
   all'interno di un singolo blocco, pertanto con dimensioni massime pari a
   1024, 2048 o 4096 byte a seconda delle dimensioni di quest'ultimo impostate
   in fase di creazione del filesystem, mentre con \textsl{XFS} e
@@ -5387,7 +5390,7 @@ devono essere attivate esplicitamente montando il filesystem\footnote{che deve
   supportarle, ma questo è ormai vero per praticamente tutti i filesystem più
   comuni, con l'eccezione di NFS per il quale esiste però il supporto per le
   versioni NFSv2 e NFSv3 del protocollo, con NFSv4 esistono invece delle ACL
-  native che hannno una semantica diversa, su di esse possono mappare le ACL
+  native che hanno una semantica diversa, su di esse possono mappare le ACL
   POSIX, ma l'inverso è possibile solo in forma incompleta.} su cui le si
 vogliono utilizzare con l'opzione \texttt{acl} attiva. Dato che si tratta di
 una estensione è infatti opportuno utilizzarle soltanto laddove siano
@@ -5799,7 +5802,7 @@ tipo:qualificatore:permessi
 dove il tipo può essere uno fra \texttt{user}, \texttt{group}, \texttt{other}
 e \texttt{mask}. Il qualificatore è presente solo per \texttt{user} e
 \texttt{group} ed indica l'utente o il gruppo a cui la voce si riferisce,
-mentrei permessi sono espressi con una tripletta di lettere analoga a quella
+mentre i permessi sono espressi con una tripletta di lettere analoga a quella
 usata per i permessi dei file, vale a dire ``\texttt{r}'' per il permesso di
 lettura, ``\texttt{w}'' per il permesso di scrittura, ``\texttt{x}'' per il
 permesso di esecuzione (scritti in quest'ordine) e ``\texttt{-}'' per
@@ -6031,76 +6034,56 @@ essere disallocato esplicitamente al termine del suo utilizzo.
 
 Una volta che si disponga della ACL desiderata, questa potrà essere impostata
 su un file o una directory. Per impostare una ACL sono disponibili due
-funzioni; la prima è \funcd{acl\_set\_file}, che opera sia su file che su
-directory, ed il cui prototipo è:
+funzioni: \funcd{acl\_set\_file}, che opera sia su file che su directory
+usando un \textit{pathname}, e \funcd{acl\_set\_file} che opera solo su file
+usando un file descriptor; i rispettivi prototipi sono:
 
 \begin{funcproto}{
 \fhead{sys/types.h}
 \fhead{sys/acl.h}
 \fdecl{int acl\_set\_file(const char *path, acl\_type\_t type, acl\_t acl)}
 \fdesc{Imposta una ACL su un file o una directory.} 
+\fdecl{int acl\_set\_fd(int fd, acl\_t acl)}
+\fdesc{Imposta una ACL su un file descriptor.} 
 }
 
-{La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual
+{Le funzioni ritornano $0$ in caso di successo e $-1$ per un errore, nel qual
   caso \var{errno} assumerà uno dei valori: 
   \begin{errlist}
   \item[\errcode{EACCES}] o un generico errore di accesso a \param{path} o il
     valore di \param{type} specifica una ACL il cui tipo non può essere
     assegnato a \param{path}.
   \item[\errcode{EINVAL}] o \param{acl} non è una ACL valida, o \param{type}
-    ha un valore non corretto.
-  \item[\errcode{ENOSPC}] non c'è spazio disco sufficiente per contenere i
-    dati aggiuntivi della ACL.
-  \item[\errcode{ENOTSUP}] si è cercato di impostare una ACL su un file
-    contenuto in un filesystem che non supporta le ACL.
-  \end{errlist}
-  ed inoltre \errval{ENAMETOOLONG}, \errval{ENOENT}, \errval{ENOTDIR},
-  \errval{EPERM}, \errval{EROFS} nel loro significato generico.}
-\end{funcproto}
-
-La funzione consente di assegnare la ACL contenuta in \param{acl} al file o
-alla directory indicate dal \textit{pathname} \param{path}, mentre
-con \param{type} si indica il tipo di ACL utilizzando le costanti di
-tab.~\ref{tab:acl_type}, ma si tenga presente che le ACL di default possono
-essere solo impostate qualora \param{path} indichi una directory. Inoltre
-perché la funzione abbia successo la ACL dovrà essere valida, e contenere
-tutti le voci necessarie, unica eccezione è quella in cui si specifica una ACL
-vuota per cancellare la ACL di default associata a
-\param{path}.\footnote{questo però è una estensione della implementazione delle
-  ACL di Linux, la bozza di standard POSIX.1e prevedeva l'uso della apposita
-  funzione \funcd{acl\_delete\_def\_file}, che prende come unico argomento il
-  \textit{pathname} della directory di cui si vuole cancellare l'ACL di
-  default, per i dettagli si ricorra alla pagina di manuale.}  La seconda
-funzione che consente di impostare una ACL è \funcd{acl\_set\_fd}, ed il suo
-prototipo è:
-
-\begin{funcproto}{
-\fhead{sys/types.h} 
-\fhead{sys/acl.h}
-\fdecl{int acl\_set\_fd(int fd, acl\_t acl)}
-\fdesc{Imposta una ACL su un file descriptor.} 
-}
-
-{La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual
-  caso \var{errno} assumerà uno dei valori: 
-  \begin{errlist}
-  \item[\errcode{EINVAL}] o \param{acl} non è una ACL valida, o ha più voci di
-    quante se ne possono assegnare al file indicato da \param{fd}.
+    ha un valore non corretto per \func{acl\_set\_file} o o ha più voci di
+    quante se ne possono assegnare al file per \func{acl\_set\_fd}.
   \item[\errcode{ENOSPC}] non c'è spazio disco sufficiente per contenere i
     dati aggiuntivi della ACL.
   \item[\errcode{ENOTSUP}] si è cercato di impostare una ACL su un file
     contenuto in un filesystem che non supporta le ACL.
   \end{errlist}
-  ed inoltre \errval{EBADF}, \errval{EPERM}, \errval{EROFS} nel loro
-  significato generico.
-}
+  ed inoltre nel loro significato generico \errval{EPERM}, \errval{EROFS} per
+  entrambe, \errval{EBADF} per \func{acl\_set\_fd}, \errval{ENAMETOOLONG},
+  \errval{ENOENT}, \errval{ENOTDIR} per \func{acl\_set\_file}.}
 \end{funcproto}
 
-La funzione è del tutto è analoga a \func{acl\_set\_file} ma opera
-esclusivamente sui file identificati tramite un file descriptor. Non dovendo
-avere a che fare con directory (e con la conseguente possibilità di avere una
-ACL di default) la funzione non necessita che si specifichi il tipo di ACL,
-che sarà sempre di accesso, e prende come unico argomento, a parte il file
+Con \func{acl\_set\_file} si assegna la ACL contenuta in \param{acl} al file o
+alla directory indicate da \param{path}, con \param{type} che indica il tipo
+di ACL con le costanti di tab.~\ref{tab:acl_type}; si tenga presente però che
+le ACL di default possono essere solo impostate qualora \param{path} indichi
+una directory. Inoltre perché la funzione abbia successo la ACL dovrà essere
+valida, e contenere tutti le voci necessarie, con l'eccezione si specifica una
+ACL vuota per cancellare la ACL di default associata a \param{path}, valida
+solo in caso di directory.\footnote{questo però è una estensione della
+  implementazione delle ACL di Linux, la bozza di standard POSIX.1e prevedeva
+  l'uso della apposita funzione \funcd{acl\_delete\_def\_file}, che prende
+  come unico argomento il \textit{pathname} della directory di cui si vuole
+  cancellare l'ACL di default, per i dettagli si ricorra alla pagina di
+  manuale.}
+
+La seconda funzione, \func{acl\_set\_fd}, è del tutto è analoga alla prima, ma
+non dovendo avere a che fare con directory (e la conseguente possibilità di
+avere una ACL di default) non necessita che si specifichi il tipo di ACL, che
+sarà sempre di accesso, e prende come unico argomento, a parte il file
 descriptor, la ACL da impostare.
 
 Le funzioni viste finora operano a livello di una intera ACL, eseguendo in una
@@ -6110,7 +6093,7 @@ voce direttamente con le funzioni previste dallo standard POSIX.1e.  Queste
 funzioni però sono alquanto macchinose da utilizzare per cui è molto più
 semplice operare direttamente sulla rappresentazione testuale. Questo è il
 motivo per non tratteremo nei dettagli dette funzioni, fornendone solo una
-descrizione sommaria; chi fosse interessato potrà ricorrere alle pagine di
+descrizione sommaria; chi fosse interessato p ricorrere alle pagine di
 manuale.
 
 Se si vuole operare direttamente sui contenuti di un oggetto di tipo
@@ -6121,6 +6104,16 @@ funzione \funcm{acl\_create\_entry} per una voce da aggiungere. Nel caso della
 prima funzione si potrà poi ripetere la lettura per ottenere i puntatori alle
 singole voci successive alla prima.
 
+\begin{figure}[!htb]
+  \footnotesize \centering
+  \begin{minipage}[c]{\codesamplewidth}
+    \includecodesample{listati/mygetfacl.c}
+  \end{minipage} 
+  \normalsize
+  \caption{Corpo principale del programma \texttt{mygetfacl.c}.}
+  \label{fig:proc_mygetfacl}
+\end{figure}
+
 Una volta ottenuti detti puntatori si potrà operare sui contenuti delle
 singole voci: con le funzioni \funcm{acl\_get\_tag\_type},
 \funcm{acl\_get\_qualifier}, \funcm{acl\_get\_permset} si potranno leggere
@@ -6139,16 +6132,6 @@ Come esempio di utilizzo di queste funzioni nei sorgenti allegati alla guida
 si è distribuito il programma \texttt{mygetfacl.c}, che consente di leggere le
 ACL di un file, passato come argomento.
 
-\begin{figure}[!htb]
-  \footnotesize \centering
-  \begin{minipage}[c]{\codesamplewidth}
-    \includecodesample{listati/mygetfacl.c}
-  \end{minipage} 
-  \normalsize
-  \caption{Corpo principale del programma \texttt{mygetfacl.c}.}
-  \label{fig:proc_mygetfacl}
-\end{figure}
-
 La sezione principale del programma, da cui si è rimossa la sezione sulla
 gestione delle opzioni, è riportata in fig.~\ref{fig:proc_mygetfacl}. Il
 programma richiede un unico argomento (\texttt{\small 16-20}) che indica il
@@ -6174,21 +6157,29 @@ tetti massimi al consumo delle risorse di un filesystem (spazio disco e
 \textit{inode}) da parte di utenti e gruppi.
 
 Dato che la funzionalità ha senso solo per i filesystem su cui si mantengono i
-dati degli utenti\footnote{in genere la si attiva sul filesystem che contiene
-  le \textit{home} degli utenti, dato che non avrebbe senso per i file di
-  sistema che in genere appartengono all'amministratore.} essa deve essere
-attivata esplicitamente. Questo si fa, per tutti i filesystem che le
-supportano, tramite due distinte opzioni di montaggio, \texttt{usrquota} e
-\texttt{grpquota} che abilitano le quote rispettivamente per gli utenti e per
-i gruppi. Così è possibile usare le limitazioni sulle quote o sugli utenti o
+dati degli utenti essa deve essere attivata esplicitamente.\footnote{in genere
+  la si attiva sul filesystem che contiene le \textit{home} degli utenti, dato
+  che non avrebbe senso per i file di sistema che in genere appartengono
+  all'amministratore.} Questo si fa, per tutti i filesystem che le supportano,
+tramite due distinte opzioni di montaggio, \texttt{usrquota} e
+\texttt{grpquota}, che abilitano le quote rispettivamente per gli utenti e per
+i gruppi. Così è possibile usare le limitazioni delle quote o sugli utenti o
 sui gruppi o su entrambi.
 
+Dal kernel 4.1, ed inizialmente solo per il filesystem XFS, sono diventate
+disponibili un terzo tipo di quote, dette \textit{project quota}, che
+consentono di applicare delle quote ad un ``\textsl{progetto}'', identificato
+come ramo di albero sotto una directory, per il quale possono essere imposti
+dei limiti (di nuovo in termini di spazio disco o \textit{inode}) per i file
+che ne fanno parte. Si può così porre dei limiti sul contenuto di un ramo di
+albero.
+
 Il meccanismo prevede che per ciascun filesystem che supporta le quote disco
-(i vari \textit{extN}, \textit{btrfs}, \textit{XFS}, \textit{JFS},
-\textit{ReiserFS}) il kernel provveda sia a mantenere aggiornati i dati
-relativi al consumo delle risorse da parte degli utenti e dei gruppi, che a
-far rispettare i limiti imposti dal sistema, con la generazione di un errore
-di \errcode{EDQUOT} per tutte le operazioni sui file che porterebbero ad un
+(i vari \acr{extN}, \acr{Btrfs}, \acr{XFS}, \acr{JFS}, \acr{ReiserFS}) il
+kernel provveda sia a mantenere aggiornati i dati relativi al consumo delle
+risorse da parte degli utenti e dei gruppi (e del progetto), che a far
+rispettare i limiti imposti dal sistema, con la generazione di un errore di
+\errcode{EDQUOT} per tutte le operazioni sui file che porterebbero ad un
 superamento degli stessi. Si tenga presente che questi due compiti sono
 separati, il primo si attiva al montaggio del filesystem con il supporto per
 le quote, il secondo deve essere abilitato esplicitamente.
@@ -6197,7 +6188,9 @@ Per il mantenimento dei dati di consumo delle risorse vengono usati due file
 riservati nella directory radice del filesystem su cui si sono attivate le
 quote, uno per le quote utente e l'altro per le quote gruppo.\footnote{la cosa
   vale per tutti i filesystem tranne \textit{XFS} che mantiene i dati
-  internamente.} Con la versione 2 del supporto delle quote, che da anni è
+  internamente, compresi quelli per le \textit{project quota}, che pertanto,
+  essendo questo l'unico filesystem che le supporta, non hanno un file ad esse
+  riservato.} Con la versione 2 del supporto delle quote, che da anni è
 l'unica rimasta in uso, questi file sono \texttt{aquota.user} e
 \texttt{aquota.group}, in precedenza erano \texttt{quota.user} e
 \texttt{quota.group}.
@@ -6244,10 +6237,12 @@ gestione delle quote è \funcd{quotactl}, ed il suo prototipo è:
   caso \var{errno} assumerà uno dei valori: 
   \begin{errlist}
   \item[\errcode{EACCES}] si è richiesto \const{Q\_QUOTAON}, ma il file delle
-    quote indicato da \param{addr} non esiste o non è un file ordinario.
+    quote indicato da \param{addr} esiste ma non è un file ordinario o no sta
+    su \param{dev}.
   \item[\errcode{EBUSY}] si è richiesto \const{Q\_QUOTAON}, ma le quote sono
     già attive.
-  \item[\errcode{EFAULT}] \param{addr} non è un puntatore valido.
+  \item[\errcode{EFAULT}] \param{addr} o \param{dev} non sono un puntatori
+    validi. 
   \item[\errcode{EINVAL}] o \param{cmd} non è un comando valido,
     o il dispositivo \param{dev} non esiste.
   \item[\errcode{EIO}] errore di lettura/scrittura sul file delle quote.
@@ -6269,14 +6264,18 @@ gestione delle quote è \funcd{quotactl}, ed il suo prototipo è:
 % TODO rivedere gli errori
 
 La funzione richiede che il filesystem sul quale si vuole operare, che deve
-essere specificato con il nome del relativo file di dispositivo
-nell'argomento \param{dev}, sia montato con il supporto delle quote
-abilitato. Per le operazioni che lo richiedono inoltre si dovrà indicare con
-l'argomento \param{id} l'utente o il gruppo (specificati rispettivamente per
-\ids{UID} e \ids{GID}) su cui si vuole operare, o altri dati relativi
-all'operazione. Alcune operazioni più complesse usano infine
-l'argomento \param{addr} per indicare un indirizzo ad un area di memoria il
-cui utilizzo dipende dall'operazione stessa.
+essere specificato con il nome del relativo file di dispositivo nell'argomento
+\param{dev}, sia montato con il supporto delle quote abilitato. Per le
+operazioni che lo richiedono inoltre si dovrà indicare con l'argomento
+\param{id} l'utente o il gruppo o il progetto (specificati rispettivamente per
+\ids{UID}, \ids{GID} o identificativo) su cui si vuole operare,\footnote{nel
+  caso di \textit{project quota} gli identificativi vengono associati alla
+  directory base del progetto nel file \file{/etc/projects}, ed impostati con
+  \cmd{xfs\_quota}, l'argomento è di natura sistemistica e va al di là dello
+  scopo di questo testo.} o altri dati relativi all'operazione. Alcune
+operazioni più complesse usano infine l'argomento \param{addr} per indicare un
+indirizzo ad un area di memoria il cui utilizzo dipende dall'operazione
+stessa.
 
 La funzione prevede la possibilità di eseguire una serie operazioni sulle
 quote molto diverse fra loro, la scelta viene effettuata tramite il primo
@@ -6297,10 +6296,10 @@ macro \macro{QCMD}:
 }
 
 La macro consente di specificare, oltre al tipo di operazione, da indicare con
-l'argomento \param{subcmd} se questa deve applicarsi alle quote utente o alle
-quote gruppo. Questo viene indicato dall'argomento \param{type} che deve
-essere sempre definito ed assegnato ad uno fra i due valori \const{USRQUOTA} o
-\const{GRPQUOTA}.
+l'argomento \param{subcmd}, se questa deve applicarsi alle quote utente o alle
+quote gruppo o alle quote progetto. Questo viene indicato dall'argomento
+\param{type} che deve essere sempre definito ed assegnato ad uno fra i valori
+\const{USRQUOTA}, \const{GRPQUOTA} e \const{PRJQUOTA}.
 
 \begin{table}[htb]
   \centering
@@ -6471,11 +6470,12 @@ effettuare qualche conversione per avere un valore in byte.\footnote{in genere
   prestazioni migliori in conseguenza di un minore frazionamento dei dati e di
   indici più corti.}
 
-Come accennato realizzazione delle quote disco ha visto diverse revisioni, con
-modifiche sia del formato delle stesse che dei nomi dei file utilizzate. Per
-questo alcune operazioni di gestione (in particolare \const{Q\_QUOTAON} e
-\const{Q\_GETFMT}) e possono fare riferimento a queste versioni, che vengono
-identificate tramite le costanti di tab.~\ref{tab:quotactl_id_format}.
+Come accennato la realizzazione delle quote disco ha visto diverse revisioni,
+con modifiche sia del formato delle stesse che dei nomi dei file
+utilizzati. Per questo alcune operazioni di gestione (in particolare
+\const{Q\_QUOTAON} e \const{Q\_GETFMT}) e possono fare riferimento a queste
+versioni, che vengono identificate tramite le costanti di
+tab.~\ref{tab:quotactl_id_format}.
 
 \begin{table}[htb]
   \centering
@@ -6618,6 +6618,7 @@ restituire nessun dato in caso di successo si usa (\texttt{\small 10}) una
 apposita funzione di uscita, mentre si restituisce come prima una eccezione
 con il valore di \var{errno} in caso di errore (\texttt{\small 12-13}).
 
+
 \subsection{La gestione dei {chroot}}
 \label{sec:file_chroot}
 
@@ -6773,21 +6774,21 @@ librerie) di cui il server potrebbe avere bisogno.
 % LocalWords:  setresuid setfsuid IMMUTABLE immutable append only BIND SERVICE
 % LocalWords:  BROADCAST broadcast multicast multicasting RAW PACKET IPC LOCK
 % LocalWords:  memory mlock mlockall shmctl mmap MODULE RAWIO ioperm iopl PACCT
-% LocalWords:  ptrace accounting NICE RESOURCE TTY CONFIG hangup vhangup dell'
+% LocalWords:  ptrace accounting NICE RESOURCE TTY CONFIG hangup vhangup 
 % LocalWords:  LEASE lease SETFCAP AUDIT permitted inherited inheritable AND nn
 % LocalWords:  bounding execve fork capget capset header hdrp datap ESRCH undef
 % LocalWords:  version libcap lcap clear ncap caps pag capgetp CapInh CapPrm RT
 % LocalWords:  fffffeff CapEff getcap scheduling lookup  dqinfo SETINFO GETFMT
 % LocalWords:  NEWNS unshare nice NUMA ioctl journaling close XOPEN fdopendir
-% LocalWords:  btrfs mkostemp extN ReiserFS JFS Posix usrquota grpquota EDQUOT
+% LocalWords:  Btrfs mkostemp extN ReiserFS JFS Posix usrquota grpquota EDQUOT
 % LocalWords:  aquota quotacheck limit grace period quotactl cmd caddr addr dqb
 % LocalWords:  QUOTAON ENODEV ENOPKG ENOTBLK GETQUOTA SETQUOTA SETUSE SETQLIM
 % LocalWords:  forced allowed sendmail SYSLOG WAKE ALARM CLOCK BOOTTIME dqstats
 % LocalWords:  REALTIME securebits GETSTATS QFMT curspace curinodes btime itime
 % LocalWords:  QIF BLIMITS bhardlimit bsoftlimit ILIMITS ihardlimit isoftlimit
 % LocalWords:  INODES LIMITS USAGE valid dqi IIF BGRACE bgrace IGRACE igrace is
-% LocalWords:  Python Truelite Srl quotamodule Repository who nell' dall' KEEP
-% LocalWords:  SECURE KEEPCAPS prctl FIXUP NOROOT LOCKED dell'IPC dell'I IOPRIO
+% LocalWords:  Python Truelite Srl quotamodule Repository who  KEEP
+% LocalWords:  SECURE KEEPCAPS prctl FIXUP NOROOT LOCKED dell'IPC IOPRIO
 % LocalWords:  CAPBSET CLASS IDLE dcookie overflow DIFFERS Virtual everything
 % LocalWords:  dentry register resolution cache dcache operation llseek poll ln
 % LocalWords:  multiplexing fsync fasync seek block superblock gapil tex img du
@@ -6803,8 +6804,8 @@ librerie) di cui il server potrebbe avere bisogno.
 % LocalWords:  faccessat grpid lacl AppArmor capsetp mygetfacl table Tb MSK
 %  LocalWords:  LAZYTIME submount peer protected hardlink symlinks silly RDWR
 %  LocalWords:  renames unreachable CLOEXEC mkstemps mkostemps suffixlen Aug
-%  LocalWords:  prefissoXXXXXXsuffisso nell'I fstatat statx sull' drwxrwxrwt
-%  LocalWords:  Disalloca
+%  LocalWords:  prefissoXXXXXXsuffisso fstatat statx drwxrwxrwt xattr
+%  LocalWords:  Disalloca project
 
 %%% Local Variables: 
 %%% mode: latex