mpt2sas0: log_info(0x31120100): originator(PL), code(0x12), sub_code(0x0100)及同類問題的追蹤


做存儲或者磁盤陣列的經常會遇到linux kernel打印如下信息或者類似的信息,這是什么原因導致的呢?

mpt2sas0: log_info(0x31120100): originator(PL), code(0x12), sub_code(0x0100)

其實只要我們解析這個0x31120100的具體含義就可以了。這個log_info是一個U32長度的變量。

1,首先第一個3是什么意思呢?由下圖可知,3代表SAS,凡是和SAS SATA相關的都屬於此類。

所以我們知道了,這個問題和讀寫SAS SATA硬盤有關系。

2,接着下面的1是什么意思呢?源代碼中可以看到1對應的是PL。PL是什么意思呢?

0x0對應IOP意思為IO Processor,0x1對應PL意思為Protocol Layer,0x2對應IR意思為Intergrated RAID。因此我們知道了1代表了協議層出現了問題。SAS協議6大層:physical layer物理層,phy layer,link layer鏈路層,port layer端口層,transport layer傳輸層,application layer應用層。肯定是某一層出現了問題。

 

3,接下來12是什么意思呢?查詢發現12表示這個命令被終止放棄了,具體原因需要看subcode。總結一下就是當前發送給SAS SATA盤的某個命令因為協議層出現問題被終止了,具體是什么問題請我們看subcode。

4,那好,那我們就來看一下subcode是怎么描述的吧,subcode是0x0100代表什么意思呢?

哦,原來是讀寫的時候申請open連接的時候open失敗,而且失敗的原因不是其他幾種已經列出來的。那我們就來分析一下吧:

0x0101說明,要open的地址不存在,通過查看SAS協議,得知如果地址不存在,就是以下3種情況:意思就是1,硬盤已經不在了,但是系統還沒來得及踢,2,給自身所在的寬端口發送命令會失敗。如果對硬盤發命令就不會導致2這種失敗,3,SATA盤沒有正常的返回D2H FIS。一些異常的SATA盤會有這個問題,正常情況下,識別到SATA盤以后,SATA盤需要返回一個D2H來標明自己的身份,如果沒有返回一定是遇到了什么異常,就不能正常響應其他的命令了。

0x0102說明:速率錯了。比如某個SATA硬盤是3Gbps的傳輸速率,而你要用6Gbps去連接,肯定不可以。

0x0103說明:還是速率錯了,比如你自身IOC卡都不支持6Gbps,你還用6Gbps去發送,肯定不可以。

0x0104說明:收到了break。什么情況下才會收到break?是當你open了很長一段時間對方不響應,你自己為了停止等待主動發送break去終止。說明你open的對象可能卡住了,忙

0x0114說明:因為Zone,就是說你自己和你的目標不在一個分區內,所以無法連接。這個分區是Expander將自身的phy分成幾個分區,各個分區都互不相通。只有Zone0可以訪問其他區

0x0115,0x0116,0x0117都是保留的不會發生。

0x011A說明:說明目標設備一直在忙,讓你重試,結果你重試都達到閥值了,還沒成功。

0x011B和0x011A類似

0x011C表示你open人家,等到時間耗盡了都沒反應。

那0x0100是什么意思呢?下面的原因已經很多了,還有什么留給0x0110呢?SAS協議上還有幾種OPEN_REJECT (BAD DESTINATION),OPEN_REJECT (WRONG DESTINATION)。但是這些在應用中一般不會發生,除非我們自己調試用仿真器去指定錯誤的地址的時候才會發生,那還有什么原因呢?想來想去只有是鏈路bit錯誤導致的了。

這是一個很重要的問題,鏈路不穩定,導致你發送的bit發生了抖動,對方接收到之后不認識你發送的到底是什么,自然不會響應命令了。

所以0x31120100可以解釋為,你在讀寫磁盤的時候,因為鏈路異常,你發送的open不能被接受,導致你這個命令被終止了。

這會導致什么問題呢?因為當你命令發生錯誤的時候驅動會重試,所以重試的時候問題可能被修復了。但是如果鏈路特別不穩定,一直修復不好,那就會導致掉盤了。

好了這個問題解決了,那我把所有的code的解析都列出來,如果發生了其他問題,大家都可以按着我的思路去解決問題了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM