讀取bluestore數據crc檢驗失敗,排除內核態出問題的方法

在ceph存儲測試中,發現用戶態通過aio讀取到的bluestore數據crc檢驗失敗,業務懷疑是內核態返回給用戶的數據有問題,可在塊設備的bio完成回調函數中直接讀取bio對應page的數據,與用戶態讀取的數據比較,排除內核態的問題。

內核在提交IO之前是使用get_user_pages_fast獲取用戶buffer映射的page,並將page鎖在內存中防止被交換出去,用戶page映射的頁表項也不會被改變。然後用這些page組織bio的vector結構,然後提交IO,而在IO完成的回調中讀取的page是直接從該bio中獲取的page。

上述代碼中,設計proc接口aio_dev用來過濾特定塊設備的數據;

上述代碼中,用到用戶態讀寫操作的buffer,在io_submit_one函數中記錄:

首先需要在kiocb結構中,添加buf變量,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章