To, czy pliki krótkotrwałe zostaną zapisane na dysk, zależy nie tylko od domyślnego zachowania pamięci podręcznej plików jądra, ale także od szczegółów implementacji sterownika systemu plików i opcji montowania wspomnianego systemu plików. Możliwe jest skonfigurowanie systemu w taki sposób, aby wszystko zawsze było natychmiast zapisywane na dysk (w zasadzie zachowanie DOS).
Jednym z systemów plików, z wyraźnym zachowaniem, które Cię interesuje (tzw. „Opóźniony przydział”), jest XFS. Dzięki niemu możesz być mniej lub bardziej pewien (pod żadnym pozorem żadnych śmiesznych opcji konfiguracji), że bloki należące do właśnie usuniętych plików zostaną ponownie wykorzystane w pamięci bez pośredniego dostępu do dysku. XFS może nadal chcieć aktualizować swój dziennik metadanych (który będzie zapisywany dość często na dysku; jednak biorąc pod uwagę, że dziennik XFS to tylko metadane, jest wystarczająco mały, aby ustawić go na innym, szybkim urządzeniu, takim jak znaleziona pamięć RAM podtrzymywana bateryjnie na wielu kontrolerach RAID).
Z powodu tego zachowania nierzadko zdarza się, aby znaleźć całkowicie wyzerowane, ale poza tym prawnie wyglądające pliki (rozmiar i inne nienaruszone metadane) w systemie plików XFS po nagłej przerwie w zasilaniu. Taki jest koszt obsługi szybkich „pół-tymczasowych” operacji na plikach.
Trochę teorii
Zasadniczo wywołanie systemowe uzyskujące dostęp do systemu plików kończy się dość szybko w metodzie zdefiniowanej przez sterownik systemu plików (dołączonej do „struct inode_operations” i „struct file_operations” po zarejestrowaniu sterownika VFS). To, co dzieje się później, zależy wyłącznie od implementacji systemu plików. Zazwyczaj stosuje się coś podobnego do następującego podejścia (ten prosty przykład pochodzi ze sterownika FAT dla Linuksa):
if (IS_DIRSYNC(dir))
(void)fat_sync_inode(dir);
else
mark_inode_dirty(dir);
Jeśli system plików jest zamontowany w trybie „synchronizacji”, wszystkie zmiany są natychmiast przenoszone na dysk (w tym przypadku przez fat_sync_inode ()). W przeciwnym razie blok jest oznaczony jako „brudny” i pozostaje w pamięci podręcznej pamięci, dopóki nie zostanie opróżniony przy rozsądnej okazji.
Dlatego nie można przewidzieć zachowania systemu w odniesieniu do plików przejściowych bez uwzględnienia opcji montowania systemu plików i sprawdzenia kodu źródłowego jego implementacji (dotyczy to oczywiście wszystkich rodzajów egzotycznych systemów plików najczęściej znajdujących się w przestrzeni osadzonej) .