ext4_commit_super BUG

最近在centos7.6遇到的問題,提交ext4 supperblock的buffer_head時在summit_bh_wbc函數鍾發生了BUG_ON,

原因在於ext4的sb對應的buffer_head沒有與page建立映射,運行到submit_bh_wbc函數時就出錯了,

社區的解決方案是,在ext4_commit_super函數中判斷如果buffer_head沒有映射的話,就直接退出:

社區做這個修改遇到的問題是,nvme設備被熱插拔了,設備已不存在,所以在同步superblock時出錯了:

我們遇到的問題在nbd存儲時,nbd(Network Block Device)可以將一個遠程主機的磁盤空間當作一個塊設備來使用,就像一塊硬盤一樣使用它,你可以很方便的將另一臺服務器的硬盤空間增加到本地服務器上,linux內核提供給了nbd.ko驅動來支持這一功能。詳細可參考https://blog.csdn.net/zhonglinzhang/article/details/103815508

所以在網絡出現問題(network disconnection)時,nbd設備就會出現類似於上述nvme設備熱插拔的現象,導致BUG_ON。

但解決方案是一致的,判斷buffer_head如果沒有映射,就退出。

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