Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: prezek 11. 11. 2013, 12:12:02

Název: Sync namountované SD karty
Přispěvatel: prezek 11. 11. 2013, 12:12:02
Pomocí Linuxu se snažím logovat data na SD kartu, ale neukládají se mi pořádně soubory.
Po vytvoření souboru a zapsání dat do souboru zavolám funkci fflush, zkontroluju pomocí ls -l, že soubor existuje a má odpovídající velikost. Pak odpojím napájení, nastartuju znova systém, a něky tam ten nový soubor je a někdy není. Vím, že by šlo mountovat kartu s parametrem sync, a pak by se měly soubory ukládat na disk synchronně se zápisem do souboru, ale to by prý snižovalo životnost karty. Můžete mi někdo poradit, jak vyvolat synchronizaci požadovaného souboru a kdy probíhá automatická synchronizace?
Název: Re:Synchronzace namountovaného disku
Přispěvatel: prezek 11. 11. 2013, 12:23:13
Achjo, takovou dobu se s tím trápím a pak najdu řešení 5 minut po dotazu na fórum.
Kód: [Vybrat]
fsync(fileno(fileLog));
Název: Re:Synchronzace namountovaného disku
Přispěvatel: prezek 11. 11. 2013, 12:25:01
Ale stejně by mě ještě zajímalo, kdy zapisuje Linux data na disk automaticky.
Název: Re:Synchronzace namountovaného disku
Přispěvatel: libcha 11. 11. 2013, 12:41:25
Nevím jak je to s SD kartami, ale některé flashdisky umí i takové věci, jako že zapíšeš, flushneš, syncneš, z pohledu kernelu už je fakt zapsáno ale ve skutečnosti není, protože vnitřní logika disku to má v nějaké své keši. Jediným moudrým řešením je imho chvíli počkat před odpojením napájení..
Název: Re:Sync namountované SD karty
Přispěvatel: Ondřej Caletka 11. 11. 2013, 14:39:39
Ahoj,

k zápisu dat z bufferu na disk dojde za těchto okolností:
Název: Re:Sync namountované SD karty
Přispěvatel: prezek 11. 11. 2013, 14:49:45
Ondřej Caletka:
děkuju. Takže nejpozději 30 s po tom, co provedu fflush, tak by se měla data zapsat na kartu. Chápu to správně?
(cat /proc/sys/vm/dirty_expire_centisecs mi vrací 3000)