所有人。我被困在以下問題上。在回收之前編寫一個緩存頁面
我正在使用ssd作爲硬盤緩存層的混合存儲系統。爲此,應將從硬盤讀取的數據寫入ssd以增強對該數據的後續讀取。由於Linux緩存從頁面緩存中的磁盤讀取的數據,因此可以延遲將數據寫入ssd;但是,緩存數據的頁面可能會被釋放,並且不推薦訪問釋放的頁面。這裏是一個問題:我有指向要寫入ssd的頁面的「struct page」指針。有沒有什麼辦法來確定指針表示的頁面是否有效(通過有效的我的意思是緩存頁面可以安全地寫入ssd?如果通過指針訪問釋放的頁面會發生什麼?是被釋放的頁面一樣?
非常感謝您的回覆。實際上,我的實現基於flashcache,它與Bcache的用途類似。以下是我的問題的更具體的表達: – user2813839
爲了編寫每個乾淨的頁面,有一個相應的BIO結構。但是,我希望通過將其列入隊列中來延遲提交BIO。我的問題是:1)當BIO在隊列中時,頁面是否可以被修改並因此變髒? 2)回寫是否只將頁面的修改部分寫入磁盤或整個頁面? 3)如果頁面在隊列中時是乾淨的,頁面是否可以被釋放? @lsk – user2813839