Il fatto che i file di breve durata vengano scritti o meno sul disco dipende non solo dal comportamento predefinito della cache dei file del kernel, ma anche dai dettagli dell'implementazione del driver del file system e dalle opzioni di montaggio di detto file system. È possibile configurare il sistema in modo tale che tutto venga sempre immediatamente annotato sul disco (essenzialmente, comportamento simile a DOS).
Un file system, caratterizzato in modo evidente dal comportamento che ti interessa (il cosiddetto "allocazione ritardata") è XFS. Con esso puoi essere più o meno sicuro (dato che non ci sono opzioni di configurazione divertenti altrove) che i blocchi appartenenti a file cancellati verranno riutilizzati in memoria, senza accesso al disco intermedio. XFS potrebbe ancora voler aggiornare il suo journal dei metadati (che verrà scritto su disco piuttosto frequentemente; tuttavia, dato che il journal di XFS è solo metadata, è abbastanza piccolo da essere impostato su qualche altro dispositivo veloce, come la RAM con batteria trovata su molti controller RAID).
A causa di questo comportamento, non è raro trovare file completamente azzerati, ma altrimenti file dall'aspetto legittimo (dimensioni e altri metadati intatti) su un file system XFS dopo un'interruzione improvvisa dell'alimentazione. Tale è un costo per supportare operazioni di file "semi-temporanee" veloci.
Qualche teoria
In generale, una chiamata di sistema che accede a un file system termina, piuttosto rapidamente, nel metodo definito dal driver del file system (allegato a "struct inode_operations" e "struct file_operations" quando il driver VFS è registrato). Ciò che accade dopo ciò è lasciato esclusivamente alla discrezione dell'implementazione del file system. In genere, viene utilizzato qualcosa simile al seguente approccio (questo semplice esempio viene dal driver FAT di Linux):
if (IS_DIRSYNC(dir))
(void)fat_sync_inode(dir);
else
mark_inode_dirty(dir);
Se il file system è montato in modalità "sync", tutte le modifiche passano immediatamente al disco (tramite fat_sync_inode () in questo caso). Altrimenti, il blocco viene contrassegnato come "sporco" e rimane nella cache di memoria fino a quando non viene scaricato in qualche ragionevole occasione.
Pertanto, è impossibile prevedere il comportamento del sistema rispetto ai file transitori senza considerare le opzioni di montaggio del file system e ispezionare il codice sorgente della sua implementazione (questo, ovviamente, si applica principalmente a tutti i tipi di file system esotici che si trovano principalmente nello spazio incorporato) .