Ancora materiale sulle quote
authorSimone Piccardi <piccardi@gnulinux.it>
Tue, 16 Aug 2011 17:35:54 +0000 (17:35 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Tue, 16 Aug 2011 17:35:54 +0000 (17:35 +0000)
filedir.tex

index da40afbce4c6346d85c6bae8b05458165b03c151..18bbdc04692e6cb1b66c9ae180762e097dfb203e 100644 (file)
@@ -4097,7 +4097,6 @@ ACL di default associata a \func{path}.\footnote{questo però è una estensione
   \bodydesc{La funzione restituisce $0$ in caso di successo e $-1$ in caso di
     errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
-  \item[\errcode{EBADF}].
   \item[\errcode{EINVAL}] o \param{acl} non è una ACL valida, o \param{type}
     ha in valore non corretto.
   \item[\errcode{ENOSPC}] non c'è spazio disco sufficiente per contenere i
@@ -4158,20 +4157,94 @@ massimi al consumo delle risorse di un filesystem (spazio disco e
 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 appartengono all'amministratore} essa deve essere abilitata
+  che in genere appartengono all'amministratore.} essa deve essere abilitata
 esplicitamente, questo si fa tramite due distinte opzioni di montaggio,
 \texttt{usrquota} e \texttt{grpquota} che la attivano rispettivamente per gli
 utenti e per i gruppi, cosa che consente di abilitare solo quelle che
-interessano veramente. 
-
-Il meccanismo prevede che per ciascun filesystem che supporta le quote (i vari
-\textit{extN}, \textit{btrfs}, \textit{XFS}, \textit{JFS}, \textit{ReiserFS})
-il kernel provveda a mantenere i dati relativi al consumo delle risorse in due
-file riservati,\footnote{la cosa vale per tutti i fileystem tranne
-  \textit{XFS} che mantiene i dati internamente; con la versione 2 del
-  supporto delle quote, l'unica rimasta in uso, questi file sono
-  \texttt{aquota.user} e \texttt{aquota.group} e si trovano nella directory
-  radice del filesytem su cui si sono attivate le quote.} e a 
+interessano veramente.
+
+Il meccanismo delle quote prevede che per ciascun filesystem che le supporta
+(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 di utenti e/o gruppi che a far
+rispettare i limiti imposti dal sistema con la generazione di un errore di
+\errval{EDQUOT} per tutte le operazioni sui file che porterebbero ad un
+superamento degli stessi. 
+
+Per il mantenimento dei dati di consumo delle risorse vengono usati due file
+riservati (uno per le quote utente e l'altro per le quote gruppo) nella
+directory radice del filesytem su cui si sono attivate le quote;\footnote{la
+  cosa vale per tutti i fileystem tranne \textit{XFS} che mantiene i dati
+  internamente.} con la versione 2 del supporto delle quote, 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}. Dato che i file
+vengono aggiornati soltanto se il filesystem è stato montato con il supporto
+delle quote, se si abilita questo in un secondo tempo (o se si eseguono
+operazioni sul filesystem senza averlo abilitato) i dati contenuti possono non
+corrispondere esattamente allo stato corrente del consumo delle risorse; per
+questo in genere prima di montare un filesystem su cui sono abilitate le quote
+viene utilizzato il comando \cmd{quotacheck} per verificare e aggiornare i
+dati.
+
+Le restrizioni sul consumo delle risorse prevedono due limiti, il primo viene
+detto \textit{soft limit} e può essere superato per brevi periodi di tempo, il
+secondo viene detto \textit{hard limit} non può mai essere superato. Il
+periodo di tempo per cui è possibile superare il \textit{soft limit} è detto
+``\textsl{periodo di grazia}'' (\textit{grace period}), passato questo tempo
+il passaggio del \textit{soft limit} viene trattato allo stesso modo
+dell'\textit{hard limit}.  Questi limiti riguardano separatamente sia lo
+spazio disco (i blocchi) che il numero di file (gli \textit{inode}) e devono
+pertanto essere specificati per entrambe le risorse. 
+
+La funzione che consente di controllare tutti i vari aspetti della gestione
+delle quote è \funcd{quotactl}, ed il suo prototipo è:
+\begin{functions}
+  \headdecl{sys/types.h} 
+  \headdecl{sys/quota.h}
+  
+  \funcdecl{quotactl(int cmd, const char *special, int id, caddr\_t addr)}
+
+  Esegue una operazione di controllo sulle quote disco.
+
+  \bodydesc{La funzione restituisce $0$ in caso di successo e $-1$ in caso di
+    errore, nel qual caso \var{errno} assumerà uno dei valori:
+  \begin{errlist}
+  \item[\errcode{EACCES}] il file delle quote non è un file normale.
+  \item[\errcode{EBUSY}] si è richiesto \const{Q\_QUOTAON} ma le quote sono
+    già attive.
+  \item[\errcode{EFAULT}] l'indirizzo \param{addr} non è valido.
+  \item[\errcode{EIO}] errore di lettura/scrittura sul file delle quote.
+  \item[\errcode{EMFILE}] non si può aprire il file delle quote avando
+    superato il limite sul numero di file aperti nel sistema. 
+  \item[\errcode{EINVAL}] o \param{cmd} non è un comando valido,
+    o il dispositivo \param{special} non esiste.
+  \item[\errcode{ENODEV}] \param{special} non corrisponde ad un \textit{mount
+      point} attivo.
+  \item[\errcode{ENOPKG}] il kernel è stato compilato senza supporto per le
+    quote. 
+  \item[\errcode{ENOTBLK}] \param{special} non è un dispositivo a blocchi.
+  \item[\errcode{EPERM}] il .
+  \item[\errcode{ESRCH}] è stato richiesto uno fra \const{Q\_GETQUOTA},
+    \const{Q\_SETQUOTA}, \const{Q\_SETUSE}, \const{Q\_SETQLIM} per un
+    filesystem senza quote attivate.
+  \end{errlist}
+}
+\end{functions}
+
+La funzione richiede che si indichi il filesystem sul quale si vuole operare
+tramite il secondo argomento \param{special} che deve indicare il nome del
+file di dispositivo ad esso associato, la funzione richiede che il filesystem
+sia montato con il supporto per le quote. Il terzo argomento \param{id}
+indica, per le operazioni che lo richiedono l'utente o il gruppo (specificati
+rispettivamente per \acr{uid} e \acr{gid}) su cui si vuole operare, infine
+l'ultimo argomento specifica l'indirizzo di una struttura dati che dipende di
+nuovo dal comando. 
+
+
+Il funzionamento di \func{quotactl} è controllato dal valore del primo
+argomento, che indica l'operazione che si vuole eseguire e se la si vuole
+eseguire per le quote disco o le quote gruppo (posto che siano entrm
+
 
 
 % TODO trattare quote disco