Chciałbym uzyskać więcej informacji na temat funkcji synchronizacji (8) i funkcji fsync w systemie Linux (2.6.31). Czy upewnia się, że pliki są zapisywane w odpowiednim magazynie?fsync, sync: czy naprawdę robi to, co powinno?
Odpowiedz
http://linux.die.net/man/8/sync
Nie upewnić się, że pliki są zapisywane do odpowiedniego przechowywania. Dba tylko o to, aby buforowane/zbuforowane dane były przepłukiwane na urządzenie dyskowe. Nie ma znaczenia, czy jest to karta SD, czy cokolwiek innego.
Aby być dokładniej, przepuszcza dane do urządzenia, ale urządzenie zwykle ma własną warstwę pamięci podręcznej, więc może nadal nie być w pamięci trwałej po spłukaniu (tj. może znajdować się w pamięci podręcznej dysku, ale jeszcze nie na talerzu/pamięć flash). Oznacza to, że jeśli wyłączy się zasilanie, nadal możesz utracić dane. –
Aby być jeszcze bardziej precyzyjnym, to zależy. Jeśli masz fs obsługujący bariery i są one włączone, funkcja sync()/fsync() i niektóre inne operacje spowodują wysłanie odpowiednich poleceń CACHE FLUSH (ATA) lub SYNCHRONIZE CACHE (SCSI) do urządzenia; to oczywiście zależy od urządzenia, aby sensownie wykonać te polecenia. – janneb
jeśli dane urządzenie (karta SD/sterownik MMC) zachowuje własną warstwę pamięci podręcznej, gdzie by to było? czy będę w stanie debugować tę warstwę? – shinymetal
Dlaczego to jest wątpliwość? – Rohan
, ponieważ napotykam problem po zapisaniu na kartę SD. tutaj jest link http://stackoverflow.com/questions/12262044/sd-card-data-sometimes-not-seen-on-pc-when-connected-in-usb-mass-storage-mode-v – shinymetal