ancora sui flag
[gapil.git] / fileio.tex
index e02d3175dae6dc6c55469eeaa6445fef85956727..ba3dc86b57fe4186e7638cc449c32ee60ebc9d47 100644 (file)
@@ -587,26 +587,46 @@ eventuale mappatura in memoria del file (vedi sez.~\ref{sec:file_memory_map}).
 Si tenga presente infine che anche se l'uso di \const{O\_DIRECT} comporta
 sostanzialmente una scrittura sincrona dei dati dei buffer in \textit{user
   space}, questo non è completamente equivalente all'uso di \const{O\_SYNC}
-che garantisce anche sulla scrittura sincrona dei metadati. Per questo in
-genere è opportuno se si usa  \const{O\_DIRECT} è opportuno richiedere anche
-\const{O\_SYNC}.
+che garantisce anche sulla scrittura sincrona dei metadati associati alla
+scrittura dei dati del file. Per questo in genere è opportuno se si usa
+\const{O\_DIRECT} è opportuno richiedere anche \const{O\_SYNC}.
 
 Si tenga presente infine che la implementazione di \const{O\_SYNC} di Linux
-differisce da quanto previsto dallo standard POSIX.1 che prevede oltre a
-questo, che dovrebbe indicare la sincronizzazione dei dati e dei metadati,
-altri due flag \const{O\_DSYNC} e \const{O\_RSYNC}.
+differisce da quanto previsto dallo standard POSIX.1 che prevede, oltre a
+questo flag che dovrebbe indicare la sincronizzazione completa di tutti i dati
+e di tutti i metadati, altri due flag \const{O\_DSYNC} e \const{O\_RSYNC}. Il
+primo dei due richiede la scrittura sincrona di tutti i dati del file e dei
+metadati che ne consentono l'immediata rilettura, ma non di tutti i metadati,
+per evitare la perdita di prestazioni relativa alla sincronizzazione di
+informazioni ausiliarie come i tempi dei file. 
 
+Il secondo, da usare in combinazione con \const{O\_SYNC} o \const{O\_DSYNC} ne
+sospende l'effetto, consentento al kernel di bufferizzare le scritture, ma
+soltanto finché non avviene una lettura, in quel caso i dati ed i metadati
+dovranno essere sincronizzati (secondo le modalità indicate da \const{O\_SYNC}
+e \const{O\_DSYNC}) e la lettura verrà bloccata fintanto che detta
+sincronizzazione non sia completata.
+
+Nel caso di Linux fino al kernel 2.6.33 la sola semantica supportata era
+quella di \const{O\_DSYNC} o
+
+ \const{O\_DSYNC} 
+
+
+e \const{O\_RSYNC}
+erano sinoni
+
+
+che una lettura si blocchi
 
- diversi 
 
-      \const{O\_FSYNC}   Sinonimo di \const{O\_SYNC}, usato da BSD.
 
       \const{O\_DSYNC}   Variante di I/O sincrono definita da POSIX; presente
                            dal kernel 2.1.130 come sinonimo di
                            \const{O\_SYNC}.
 
 
-      \const{O\_RSYNC}   & Variante analoga alla precedente, trattata allo
+      \const{O\_RSYNC}    Variante analoga alla precedente, trattata allo
                            stesso modo.