2013-12-20 53 views
1

新的syncfs系統調用在返回之前是否等待光盤寫入完成,就像fsync一樣? 另外,如果在修改文件後,正在調用此文件描述符的syncfs還更新包含的directoy條目?syncfs是否等到光盤寫入完成?

+0

'syncfs'和'fsync'有什麼區別? – Duck

+0

syncfs寫入包含文件描述符的分區的所有緩衝數據和元數據,fsync只寫入修改後的數據和文件描述符的元數據。 – dragon135

+0

有趣,謝謝。這使得'syncfs'成爲一個非常昂貴的通話。據推測,這種沖刷會影響每個進程的髒數據,而不管他們喜歡與否。或者僅限於由'syncfs'進程打開的文件? – Duck

回答

5

syncfs從超級塊中寫出所有髒頁面。磁盤可能會寫入緩存,因此這並不能保證所有數據都已保存。例如,您可以在不調用關機的情況下關閉電源。

+0

是否有辦法保證/檢查磁盤寫入緩存是否完成? – dragon135

+0

發送STOP UNIT命令到磁盤。它將刷新其緩存並旋轉磁盤。有一些屏障命令,但並非所有的硬盤都支持它們。 – stark

+0

在C/Linux程序中執行「STOP UNIT」的命令是什麼? – dragon135