ErrorRecovery 之任務重置

2021-08-17 00:12:36 字數 2287 閱讀 2007

在 initiator 處理乙個任務時,任務未完成,但中間資料有誤了(如 crc 失敗),可以通過任務重置來本 connection 上的該任務分配置到乙個新的 connection 中,然後繼續完成乘下的資料,免得整個任務重新執行。任務重置屬於commond recovery,涉及到多 connection。

將乙個 command 重新分配到乙個 connection 上時,target 應該從當前狀態繼續執行該 command。例如,重置 read command 時, target 應當利用 testmanagerequest 中 expdatasn (無資料傳送時置0)值,來啟用 read command 傳送乘下的資料以及 status. expdatasn 表示所有已經傳送成功的資料 pdu 號(讀時為 data-in 中的 datasn, 寫時為 r2t 中的 r2tsn),但不包括 datasn 等於 expdatasn 的 data-in pdu,或 r2tsn 等於 expdatasn 的 r2t。target 可以在重新分配的 connect 上傳送或接收所有乘下的資料,當然,如果 target 無法得到乙個準確的任務狀態時,可以選擇傳送或接收所有的資料。initiator 不允許通過 snack 請求重傳 pdu 號小於

expdatasn 的資料。對於所有型別的 command,乙個重置請求,表明了該任務仍在被 initiator 處理中,如果 target 返回 'function complete' response 時,target 必須正確地完成該任務,如果須要,可以呼叫 data/r2t/status 重傳,但必須要傳輸/重傳 status pdu.

read command 重置過程:

connect-1:  read cmd       ---------------->

<---------------  data-in(datasn=0)

<---------------  data-in(datasn=1)

crc-error      <---------------  data-in(datasn=2)

connect-2:  login(mc/s)    ---------------->

<---------------  loginresponse

logout            ----------------> remove connect-1 for recovery

taskmanagement    ----------------> reassign task (expdatasn=2)

<---------------  taskmanagementrsp(complete)

<---------------  data-in(datasn=2)

<---------------  data-in(ststud)

write command 重置過程:

connect-1:  write cmd ---------------->

<---------------  r2t(r2tsn=0)

dataout(sn=0) ---------------->

dataout(sn=1) ---------------->

dataout(sn=2) ---------------->  crc-error

<---------------  reject

connect-2:  login(mc/s)   ---------------->

<---------------  loginresponse

logout                ----------------> remove connect-1 for recovery

taskmanagement ----------------> reassign task (expdatasn=0)

<---------------  taskmanagementrsp(complete)

<---------------  r2t(r2tsn=0)

dataout(sn=0) ---------------->

dataout(sn=1) ---------------->

dataout(sn=2) ---------------->

dataout(sn=3) ---------------->

dataout(f)    ---------------->

<---------------  scsi response

<---------------  data-in(datasn=2)

<---------------  data-in(ststud)

ma系列之 24 任務計畫

0 概念 在未來的某個時間週期或者單次執行一次某任務 1 在未來的某個時間點執行一次某任務 只執行一次 命令 at batch 不需要指定時間點 自動選擇系統空閒時刻執行任務,其餘命令和at使用相似 at使用格式 at 時間 輸入未來要執行的時間 at command 輸入命令 at ctrl d ...

本地提交到yarn Flink入門之提交任務

在開始講本篇內容之前,先回憶一下上篇文章講了什麼,主要講了以下幾點 那麼自然而然的事情,講完了基本組成,就要丟擲乙個主要的問題了,用村上春樹的書名來表達的話就是 當你提交任務後,flink做了什麼?重要的事情說三遍。flink架構主要做的是什麼呢?資源和任務的匹配,即運算元本地化!資源和任務的匹配,...

boost庫在工作(24)任務之四

在軟體開發裡,經常會遇到這樣的情況,比如客戶讓我們開發的軟體要求每隔半小時,就要備份一次資料,以便避免資料丟失。又比如在開發乙個遊戲網路伺服器時,需要不斷檢查客戶端連線上來的資料連線是否還有效,這時也需要使用乙個任務來檢查客戶端的連線是否還有心跳包過來,如果沒有心跳包,就可以把這個連線斷開,釋放相關...