專利名稱:一種實現(xiàn)目標(biāo)端驅(qū)動的方法及該目標(biāo)端驅(qū)動的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及塊設(shè)備技術(shù)領(lǐng)域,尤其涉及一種實現(xiàn)目標(biāo)端驅(qū)動的方法及該目標(biāo)端驅(qū)動。
背景技術(shù):
塊設(shè)備包括光盤、硬盤、存儲卡和磁帶等存儲設(shè)備,為了實現(xiàn)塊設(shè)備的IA)(輸入
輸出)交互操作,系統(tǒng)使用者不得不通過修改操作系統(tǒng)內(nèi)核模塊,或購買專用硬件設(shè)備等 方法實現(xiàn)在相應(yīng)系統(tǒng)下支持這些塊設(shè)備的操作。 在目前的一些操作系統(tǒng)中,已實現(xiàn)多種存儲傳輸協(xié)議的發(fā)起端(Initiator端)驅(qū) 動的內(nèi)核代碼支持,而對目標(biāo)端(target端)驅(qū)動的支持卻很少。 SCSI (Small Computer System Interface,小型計算機(jī)系統(tǒng)接口 )與其他接口一 樣,實際上是存儲系統(tǒng)中發(fā)起端與目標(biāo)端之間相互通信的一套協(xié)議。SCSI主機(jī)利用SCSI主 機(jī)總線適配器(Host Bus Adaptor, HBA)將存儲設(shè)備或其他外部設(shè)備接入到主機(jī)的I/O總 線,并使用SCSI協(xié)議管理、控制和操作這些外部設(shè)備。 在目前大多數(shù)存儲系統(tǒng)中,目標(biāo)端驅(qū)動實現(xiàn)的功能有與發(fā)起端進(jìn)行傳輸協(xié)議間 的交互;實現(xiàn)硬件接口驅(qū)動;處理主要的及專有的設(shè)備命令集驅(qū)動程序;對應(yīng)如圖l所示的 傳輸協(xié)議、硬件接口和目標(biāo)端驅(qū)動三個子系統(tǒng)。 現(xiàn)有存儲系統(tǒng)中,目標(biāo)端根據(jù)需求與發(fā)起端進(jìn)行的數(shù)據(jù)交互可以采用不同的傳輸 協(xié)議,參考圖l,如FCP(Fibre Channel Protocol,網(wǎng)狀信道協(xié)議)、iSCSI (Internet Small Computer System Interface, Internet小型計算機(jī)系統(tǒng)接口 ) 、SRP (SCSI RDMA protocol, SCSI遠(yuǎn)程直接訪問協(xié)議)等,每種傳輸協(xié)議都需要專有的硬件接口,而又由于硬件接口的 唯一性,需要為每一種硬件接口提供相對應(yīng)的一套目標(biāo)端驅(qū)動,在目標(biāo)端驅(qū)動中既包括傳 輸協(xié)議命令處理和硬件接口專有命令處理等,又包括SCSI通用命令處理和訪問本地設(shè)備 等功能。 在現(xiàn)有的存儲系統(tǒng)實現(xiàn)中,每采用一種新的傳輸協(xié)議及硬件接口,都需要重復(fù)實 現(xiàn)具有上述所有功能的目標(biāo)端驅(qū)動。然而,目標(biāo)端驅(qū)動中除了傳輸協(xié)議命令處理和硬件接 口專有命令處理外,其他部分都是獨立的并且功能相似,在目標(biāo)驅(qū)動的開發(fā)過程中,相似部 分的重復(fù)開發(fā)導(dǎo)致了成本的提高及開發(fā)周期的延長。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種實現(xiàn)目標(biāo)端驅(qū)動的方法及該目標(biāo)端驅(qū)動,解 決不同傳輸協(xié)議及硬件接口的目標(biāo)端驅(qū)動的部分內(nèi)容重復(fù)開發(fā)的問題,實現(xiàn)共用公共的部 分,以節(jié)約開發(fā)成本及周期。 為解決上述技術(shù)問題,本發(fā)明的一種實現(xiàn)目標(biāo)端驅(qū)動的方法,包括 硬件接口驅(qū)動將接收到的存儲通信協(xié)議命令發(fā)送給目標(biāo)端統(tǒng)一驅(qū)動平臺; 目標(biāo)端統(tǒng)一驅(qū)動平臺根據(jù)所接收到的存儲通信協(xié)議命令的類型,對該存儲通信協(xié)議命令進(jìn)行訪問控制處理,完成訪問控制處理后,執(zhí)行該存儲通信協(xié)議命令,對塊設(shè)備進(jìn)行 操作。 進(jìn)一步地,若存儲通信協(xié)議命令是向塊設(shè)備寫入數(shù)據(jù)的命令,則該目標(biāo)端統(tǒng)一驅(qū) 動平臺對該寫入數(shù)據(jù)的命令完成訪問控制處理后,為數(shù)據(jù)的寫入分配存儲空間,并將存儲 空間地址返回給發(fā)起端主機(jī); 在接收到發(fā)起端主機(jī)的攜帶地址指針和待寫入數(shù)據(jù)的存儲通信協(xié)議命令后,目標(biāo) 端統(tǒng)一驅(qū)動平臺對待寫入數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,完成數(shù)據(jù)處理后,將數(shù)據(jù)按照地址指針的指 示寫入到塊設(shè)備的相應(yīng)空間中。 進(jìn)一步地,若存儲通信協(xié)議命令是從塊設(shè)備讀取數(shù)據(jù)的命令,則該目標(biāo)端統(tǒng)一驅(qū) 動平臺對該讀取數(shù)據(jù)的命令完成訪問控制處理后,按照該讀取數(shù)據(jù)的命令的指示從相應(yīng)塊 設(shè)備中讀取數(shù)據(jù),并將讀取出的數(shù)據(jù)返回給發(fā)起端主機(jī)。
進(jìn)一步地,存儲通信協(xié)議為小型計算機(jī)系統(tǒng)接口協(xié)議。 進(jìn)一步地, 一種目標(biāo)端驅(qū)動,包括硬件接口驅(qū)動和目標(biāo)端統(tǒng)一驅(qū)動平臺,該目標(biāo) 端統(tǒng)一驅(qū)動平臺包括依次相連的目標(biāo)端核心處理模塊、塊設(shè)備處理層和存儲通信協(xié)議中 間層,還包括命令處理守護(hù)線程和統(tǒng)一平臺函數(shù)庫,該命令處理守護(hù)線程分別與目標(biāo)端核 心處理模塊和統(tǒng)一平臺函數(shù)庫相連; 硬件接口驅(qū)動,用于將接收到的存儲通信協(xié)議命令發(fā)送給目標(biāo)端核心處理模塊;
目標(biāo)端核心處理模塊,用于將接收到的存儲通信協(xié)議命令發(fā)送給命令處理守護(hù)線 程,并將接收到的該命令處理守護(hù)線程返回的基本輸入輸出命令發(fā)送給塊設(shè)備處理層;
命令處理守護(hù)線程,用于根據(jù)接收到的存儲通信協(xié)議命令的類型,在需要時調(diào)用 統(tǒng)一平臺函數(shù)庫中的庫函數(shù),對存儲通信協(xié)議命令進(jìn)行訪問控制處理,生成基本輸入輸出 命令,并發(fā)送給目標(biāo)端核心處理模塊; 塊設(shè)備處理層,用于對接收到的基本輸入輸出命令進(jìn)行預(yù)處理,將完成預(yù)處理的 基本輸入輸出命令發(fā)送給存儲通信協(xié)議中間層; 存儲通信協(xié)議中間層,用于將接收到的基本輸入輸出命令轉(zhuǎn)換為存儲通信協(xié)議命 令,根據(jù)該存儲通信協(xié)議命令對塊設(shè)備進(jìn)行操作。 進(jìn)一步地,若存儲通信協(xié)議命令是向塊設(shè)備寫入數(shù)據(jù)的命令,則命令處理守護(hù)線 程完成訪問控制處理后,為數(shù)據(jù)分配存儲空間,并將存儲空間地址通過目標(biāo)端核心處理模 塊返回給發(fā)起端主機(jī);并且, 在接收到發(fā)起端主機(jī)的攜帶地址指針和待寫入數(shù)據(jù)的存儲通信協(xié)議命令后,對待
寫入數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,生成基本輸入輸出命令,攜帶處理后的數(shù)據(jù),發(fā)送給目標(biāo)端核心處
理模塊,該目標(biāo)端核心處理模塊將該基本輸入輸出命令發(fā)送給塊設(shè)備處理層; 塊設(shè)備處理層對接收到的基本輸入輸出命令進(jìn)行預(yù)處理后,發(fā)送給存儲通信協(xié)議
中間層,該存儲通信協(xié)議中間層進(jìn)行命令轉(zhuǎn)換,將轉(zhuǎn)換得到的存儲通信協(xié)議命令中攜帶的
數(shù)據(jù),按照地址指針的指示寫入到塊設(shè)備的相應(yīng)空間中。 進(jìn)一步地,若存儲通信協(xié)議命令是從塊設(shè)備讀取數(shù)據(jù)的命令,則存儲通信協(xié)議中 間層按照轉(zhuǎn)換得到的存儲通信協(xié)議命令的指示,從相應(yīng)塊設(shè)備中讀取數(shù)據(jù),并通過塊設(shè)備 處理層和目標(biāo)端核心處理層,將讀取出的數(shù)據(jù)返回給發(fā)起端主機(jī)。 進(jìn)一步地,目標(biāo)端核心處理模塊、 設(shè)備處理層和存儲通信協(xié)議中間層位于操作系統(tǒng)的內(nèi)核態(tài)空間;命令處理守護(hù)線程和統(tǒng)一平臺函數(shù)庫位于操作系統(tǒng)的用戶態(tài)空間。 進(jìn)一步地,統(tǒng)一平臺函數(shù)庫中保存?zhèn)鬏攨f(xié)議及硬件接口驅(qū)動的共用函數(shù)。 進(jìn)一步地,該目標(biāo)端驅(qū)動還包括管理模塊,該管理模塊與命令處理守護(hù)線程連接,
用于通過命令處理守護(hù)線程對統(tǒng)一平臺函數(shù)庫中的庫函數(shù)進(jìn)行管理維護(hù)。 綜上所述,本發(fā)明將各種傳輸協(xié)議及硬件接口的目標(biāo)端驅(qū)動的公共部分通過目標(biāo)
端統(tǒng)一平臺來實現(xiàn),實現(xiàn)了目標(biāo)端驅(qū)動開發(fā)的簡單化和快速化,從而保證了系統(tǒng)的兼容性
及可擴(kuò)展性,本發(fā)明可應(yīng)用于各種傳輸協(xié)議和硬件接口,并可能隨時加入其他類型的傳輸
協(xié)議及硬件接口 ,在目標(biāo)端統(tǒng)一驅(qū)動平臺中只需增加對新傳輸協(xié)議和硬件接口的接口函
數(shù),就能很好地兼容新協(xié)議和硬件接口的使用,而大量重復(fù)的處理任務(wù)都已在統(tǒng)一平臺內(nèi)
部實現(xiàn),系統(tǒng)修改量很少,使目標(biāo)端驅(qū)動的開發(fā)時間大大縮短,本發(fā)明中大部分功能都在操
作系統(tǒng)用戶態(tài)空間中實現(xiàn),可以充分利用用戶態(tài)豐富的庫函數(shù)及調(diào)試工具,使開發(fā)工作簡
單快捷。
圖1為現(xiàn)有技術(shù)中的塊設(shè)備交互的架構(gòu)圖;
圖2為本發(fā)明塊設(shè)備交換的架構(gòu)圖;
圖3為本發(fā)明中目標(biāo)端統(tǒng)一驅(qū)動平臺的結(jié)構(gòu)圖;
圖4為本發(fā)明實現(xiàn)目標(biāo)端驅(qū)動的方法的流程圖。
具體實施例方式
考慮到目標(biāo)端驅(qū)動中包含獨立的且功能相似的部分,因此,本實施方式將各種協(xié) 議下目標(biāo)端驅(qū)動的重復(fù)共有部分抽象出來,實現(xiàn)一個統(tǒng)一驅(qū)動平臺,如圖2中目標(biāo)端統(tǒng)一 驅(qū)動平臺,采用統(tǒng)一驅(qū)動平臺的方式有利于新產(chǎn)品的開發(fā),縮短開發(fā)周期,提高模塊的復(fù)用 性。 本實施方式的目標(biāo)端驅(qū)動包括硬件接口驅(qū)動和目標(biāo)端統(tǒng)一驅(qū)動平臺,目標(biāo)端統(tǒng) 一驅(qū)動平臺將每種硬件接口及傳輸協(xié)議所對應(yīng)的目標(biāo)端驅(qū)動中重復(fù)的處理部分抽象出來, 實現(xiàn)一個共用的API(A卯lication Programminglnterface,應(yīng)用程序編程接口 )函數(shù)集, 在此統(tǒng)一驅(qū)動平臺中,目標(biāo)端驅(qū)動的核心是將大部分處理操作放入操作系統(tǒng)用戶態(tài)空間實 現(xiàn),相比目前的目標(biāo)端驅(qū)動的功能大都在操作系統(tǒng)內(nèi)核態(tài)空間實現(xiàn),可以使開發(fā)更加方便 快捷,并且可以使用操作系統(tǒng)用戶態(tài)空間中豐富的庫函數(shù)及開發(fā)調(diào)試工具,提高了目標(biāo)端 驅(qū)動的兼容性及維護(hù)的簡易性。 下面將結(jié)合附圖對本發(fā)明的具體實施方式
進(jìn)行詳細(xì)說明。 圖3所示為本實施例的目標(biāo)端統(tǒng)一驅(qū)動平臺,假設(shè)存儲通信協(xié)議為SCSI協(xié)議,該 目標(biāo)端統(tǒng)一驅(qū)動平臺包括位于操作系統(tǒng)內(nèi)核態(tài)空間中的目標(biāo)端核心處理模塊、塊設(shè)備處 理層和SCSI中間層,以及位于操作系統(tǒng)用戶態(tài)空間中的管理模塊、命令處理守護(hù)線程和統(tǒng) 一驅(qū)動平臺函數(shù)庫,其中目標(biāo)端核心處理模塊、塊設(shè)備處理層和SCSI中間層依次相連,目 標(biāo)端核心處理模塊還與命令處理守護(hù)線程相連,命令處理守護(hù)線程還分別與管理模塊和統(tǒng) 一平臺函數(shù)庫相連。 目標(biāo)端核心處理模塊的主要任務(wù)是將接收到的命令發(fā)送給命令處理守護(hù)線程,并負(fù)責(zé)將命令處理守護(hù)線程返回的BIO(基本輸入輸出)命令發(fā)送給塊設(shè)備處理層。 塊設(shè)備處理層主要負(fù)責(zé)對BIO命令進(jìn)行預(yù)處理,預(yù)處理完成后,將BIO命令發(fā)送給
SCSI中間層,SCSI中間層將BIO命令轉(zhuǎn)換為SCSI命令,對塊設(shè)備執(zhí)行讀寫操作。 管理模塊主要是實現(xiàn)一些管理命令工具,以實現(xiàn)對系統(tǒng)功能進(jìn)行配置,如訪問權(quán)
限的配置,邏輯盤的大小的配置等,管理模塊通過命令處理守護(hù)線程對統(tǒng)一平臺函數(shù)庫中
的庫函數(shù)進(jìn)行管理維護(hù)。 命令處理守護(hù)線程主要是用來進(jìn)行處理SCSI命令和管理命令,對各具體的SCSI 命令處理時,根據(jù)不同SCSI命令的需要,調(diào)用統(tǒng)一平臺函數(shù)庫中的庫函數(shù)實現(xiàn)命令的訪問 控制和數(shù)據(jù)的處理。 統(tǒng)一平臺函數(shù)庫中保存了系統(tǒng)中提供的各種傳輸協(xié)議及硬件接口的實現(xiàn)函數(shù)集, 該函數(shù)集提高了系統(tǒng)實現(xiàn)的復(fù)用性及穩(wěn)定性。 圖4所示為本實施方式實現(xiàn)目標(biāo)端統(tǒng)一驅(qū)動的方法,包括 401 :硬件接口驅(qū)動接收到發(fā)起端主機(jī)發(fā)送的包含SCSI命令的數(shù)據(jù)包后,根據(jù)傳 輸協(xié)議解析出SCSI命令,并發(fā)送給目標(biāo)端核心處理模塊; 402 :目標(biāo)端核心處理模塊在接收到SCSI命令后,通過操作系統(tǒng)內(nèi)核中的網(wǎng)絡(luò)接 口將SCSI命令發(fā)送到用戶態(tài)空間的命令處理守護(hù)線程; 403 :命令處理守護(hù)線程在接收到目標(biāo)端核心處理模塊發(fā)送的SCSI命令后,根據(jù) SCSI命令的類型,如果需要則調(diào)用統(tǒng)一平臺函數(shù)庫中的庫函數(shù),對SCSI命令進(jìn)行訪問控制 處理,對SCSI命令中攜帶的數(shù)據(jù)進(jìn)行數(shù)據(jù)處理; 例如,命令處理守護(hù)線程接收到從硬盤讀取數(shù)據(jù)給發(fā)起端主機(jī)的SCSI命令,SCSI 命令指示讀取從某個邏輯盤的某個地址開始的一段數(shù)據(jù),命令處理守護(hù)線程判斷所要讀取 的邏輯盤是否處于正常工作狀態(tài),發(fā)起端主機(jī)是否具有讀取該邏輯盤的權(quán)限以及對數(shù)據(jù)地 址的合法性進(jìn)行判斷等訪問控制處理。 假如命令處理守護(hù)線程接收到向硬盤寫入數(shù)據(jù)的SCSI命令,則對寫入數(shù)據(jù)的 SCSI命令進(jìn)行如上述的訪問控制處理,以及分配數(shù)據(jù)存儲空間,并將存儲空間地址通過目 標(biāo)端核心處理模塊返回給發(fā)起端主機(jī)。 發(fā)起端主機(jī)接收到存儲空間地址后,發(fā)送攜帶地址指針和待寫入數(shù)據(jù)的SCSI命 令,地址指針指向存儲空間地址,命令處理守護(hù)線程根據(jù)要寫入數(shù)據(jù)的邏輯盤進(jìn)行不同的 數(shù)據(jù)處理操作。如,邏輯盤的類型為raidO、 raidl和raid5, raid5由三塊物理盤組成,如 果是向raid5寫入數(shù)據(jù),則命令處理守護(hù)線程將數(shù)據(jù)分割為兩個數(shù)據(jù)塊,對這兩個數(shù)據(jù)塊 進(jìn)行異或操作,并生成將兩個數(shù)據(jù)塊及異或運算的結(jié)果分別寫入到三個物理盤中的BIO命 令。 統(tǒng)一平臺函數(shù)庫中保存有異或運算函數(shù)、SCSI解析函數(shù)、生成BIO命令函數(shù)和邏 輯盤的訪問控制函數(shù)等各種傳輸協(xié)議及硬件接口驅(qū)動的共用函數(shù)。統(tǒng)一平臺函數(shù)庫在操作 系統(tǒng)用戶態(tài)空間實現(xiàn),方便調(diào)用及實現(xiàn)。 404 :命令處理守護(hù)線程完成SCSI命令的訪問控制及數(shù)據(jù)處理后,生成進(jìn)行塊設(shè)
備操作的BIO命令,將BIO命令發(fā)送給目標(biāo)端核心處理模塊; 405 :目標(biāo)端核心處理模塊將接收到的BIO命令發(fā)送給塊設(shè)備處理層; 406 :塊設(shè)備處理層接收到BIO命令后,對BIO命令進(jìn)行預(yù)處理,如BIO命令對物理盤的操作是否合法等; BIO命令是對塊設(shè)備進(jìn)行物理操作的命令。 407 :塊設(shè)備處理層將完成預(yù)處理的BIO命令發(fā)送給SCSI協(xié)議中間層; 408 :SCSI協(xié)議中間層將BIO命令轉(zhuǎn)換為SCSI命令,根據(jù)SCSI命令對塊設(shè)備進(jìn)行操作。 如果是讀取數(shù)據(jù)的SCSI命令,則SCSI協(xié)議中間層按照數(shù)據(jù)地址從塊設(shè)備讀取數(shù) 據(jù),并通過塊設(shè)備處理層和目標(biāo)端核心處理模塊將讀取的數(shù)據(jù)發(fā)送給發(fā)起端主機(jī)。
如果是寫入數(shù)據(jù)的SCSI命令,則將SCSI命令中攜帶的數(shù)據(jù),按照該SCSI命令的 指示寫入到塊設(shè)備的相應(yīng)地址空間中。 以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技 術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
一種實現(xiàn)目標(biāo)端驅(qū)動的方法,包括硬件接口驅(qū)動將接收到的存儲通信協(xié)議命令發(fā)送給目標(biāo)端統(tǒng)一驅(qū)動平臺;所述目標(biāo)端統(tǒng)一驅(qū)動平臺根據(jù)所接收到的存儲通信協(xié)議命令的類型,對該存儲通信協(xié)議命令進(jìn)行訪問控制處理,完成訪問控制處理后,執(zhí)行該存儲通信協(xié)議命令,對塊設(shè)備進(jìn)行操作。
2. 如權(quán)利要求1所述的方法,其特征在于若所述存儲通信協(xié)議命令是向所述塊設(shè)備寫入數(shù)據(jù)的命令,則該目標(biāo)端統(tǒng)一驅(qū)動平臺 對該寫入數(shù)據(jù)的命令完成訪問控制處理后,為數(shù)據(jù)的寫入分配存儲空間,并將存儲空間地 址返回給發(fā)起端主機(jī);在接收到所述發(fā)起端主機(jī)的攜帶地址指針和待寫入數(shù)據(jù)的存儲通信協(xié)議命令后,所述 目標(biāo)端統(tǒng)一驅(qū)動平臺對待寫入數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,完成數(shù)據(jù)處理后,將所述數(shù)據(jù)按照所述 地址指針的指示寫入到所述塊設(shè)備的相應(yīng)空間中。
3. 如權(quán)利要求1所述的方法,其特征在于若所述存儲通信協(xié)議命令是從所述塊設(shè)備讀取數(shù)據(jù)的命令,則該目標(biāo)端統(tǒng)一驅(qū)動平臺 對該讀取數(shù)據(jù)的命令完成訪問控制處理后,按照該讀取數(shù)據(jù)的命令的指示從相應(yīng)塊設(shè)備中 讀取數(shù)據(jù),并將讀取出的數(shù)據(jù)返回給發(fā)起端主機(jī)。
4. 如權(quán)利要求1所述的方法,其特征在于 所述存儲通信協(xié)議為小型計算機(jī)系統(tǒng)接口協(xié)議。
5. —種目標(biāo)端驅(qū)動,包括硬件接口驅(qū)動和目標(biāo)端統(tǒng)一驅(qū)動平臺,該目標(biāo)端統(tǒng)一驅(qū)動 平臺包括依次相連的目標(biāo)端核心處理模塊、塊設(shè)備處理層和存儲通信協(xié)議中間層,還包 括命令處理守護(hù)線程和統(tǒng)一平臺函數(shù)庫,該命令處理守護(hù)線程分別與所述目標(biāo)端核心處 理模塊和統(tǒng)一平臺函數(shù)庫相連;所述硬件接口驅(qū)動,用于將接收到的存儲通信協(xié)議命令發(fā)送給所述目標(biāo)端核心處理模塊;所述目標(biāo)端核心處理模塊,用于將接收到的存儲通信協(xié)議命令發(fā)送給所述命令處理守 護(hù)線程,并將接收到的該命令處理守護(hù)線程返回的基本輸入輸出命令發(fā)送給所述塊設(shè)備處 理層;所述命令處理守護(hù)線程,用于根據(jù)接收到的存儲通信協(xié)議命令的類型,在需要時調(diào)用 所述統(tǒng)一平臺函數(shù)庫中的庫函數(shù),對所述存儲通信協(xié)議命令進(jìn)行訪問控制處理,生成基本 輸入輸出命令,并發(fā)送給所述目標(biāo)端核心處理模塊;所述塊設(shè)備處理層,用于對接收到的基本輸入輸出命令進(jìn)行預(yù)處理,將完成預(yù)處理的 基本輸入輸出命令發(fā)送給所述存儲通信協(xié)議中間層;所述存儲通信協(xié)議中間層,用于將接收到的基本輸入輸出命令轉(zhuǎn)換為存儲通信協(xié)議命 令,根據(jù)該存儲通信協(xié)議命令對塊設(shè)備進(jìn)行操作。
6. 如權(quán)利要求5所述的目標(biāo)端驅(qū)動,其特征在于若所述存儲通信協(xié)議命令是向所述塊設(shè)備寫入數(shù)據(jù)的命令,則所述命令處理守護(hù)線程 完成訪問控制處理后,為數(shù)據(jù)分配存儲空間,并將存儲空間地址通過所述目標(biāo)端核心處理 模塊返回給發(fā)起端主機(jī);并且,在接收到所述發(fā)起端主機(jī)的攜帶地址指針和待寫入數(shù)據(jù)的存儲通信協(xié)議命令后,對所述待寫入數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,生成基本輸入輸出命令,攜帶處理后的數(shù)據(jù),發(fā)送給所述目 標(biāo)端核心處理模塊,該目標(biāo)端核心處理模塊將該基本輸入輸出命令發(fā)送給所述塊設(shè)備處理 層;所述塊設(shè)備處理層對接收到的基本輸入輸出命令進(jìn)行預(yù)處理后,發(fā)送給所述存儲通信 協(xié)議中間層,該存儲通信協(xié)議中間層進(jìn)行命令轉(zhuǎn)換,將轉(zhuǎn)換得到的存儲通信協(xié)議命令中攜 帶的所述數(shù)據(jù),按照所述地址指針的指示寫入到所述塊設(shè)備的相應(yīng)空間中。
7. 如權(quán)利要求5所述的目標(biāo)端驅(qū)動,其特征在于若所述存儲通信協(xié)議命令是從所述塊設(shè)備讀取數(shù)據(jù)的命令,則所述存儲通信協(xié)議中間 層按照轉(zhuǎn)換得到的存儲通信協(xié)議命令的指示,從相應(yīng)塊設(shè)備中讀取數(shù)據(jù),并通過所述塊設(shè) 備處理層和目標(biāo)端核心處理層,將讀取出的數(shù)據(jù)返回給所述發(fā)起端主機(jī)。
8. 如權(quán)利要求5所述的目標(biāo)端驅(qū)動,其特征在于所述目標(biāo)端核心處理模塊、塊設(shè)備處理層和存儲通信協(xié)議中間層位于操作系統(tǒng)的內(nèi)核 態(tài)空間;所述命令處理守護(hù)線程和統(tǒng)一平臺函數(shù)庫位于操作系統(tǒng)的用戶態(tài)空間。
9. 如權(quán)利要求5所述的目標(biāo)端驅(qū)動,其特征在于所述統(tǒng)一平臺函數(shù)庫中保存?zhèn)鬏攨f(xié) 議及硬件接口驅(qū)動的共用函數(shù)。
10. 如權(quán)利要求9所述的目標(biāo)端驅(qū)動,其特征在于,該目標(biāo)端驅(qū)動還包括管理模塊,該 管理模塊與所述命令處理守護(hù)線程連接,用于通過所述命令處理守護(hù)線程對所述統(tǒng)一平臺 函數(shù)庫中的庫函數(shù)進(jìn)行管理維護(hù)。
全文摘要
本發(fā)明公開了一種實現(xiàn)目標(biāo)端驅(qū)動的方法,包括硬件接口驅(qū)動將接收到的存儲通信協(xié)議命令發(fā)送給目標(biāo)端統(tǒng)一驅(qū)動平臺;目標(biāo)端統(tǒng)一驅(qū)動平臺根據(jù)所接收到的存儲通信協(xié)議命令的類型,對該存儲通信協(xié)議命令進(jìn)行訪問控制處理,完成訪問控制處理后,執(zhí)行該存儲通信協(xié)議命令,對塊設(shè)備進(jìn)行操作。本發(fā)明將各種傳輸協(xié)議及硬件接口的目標(biāo)端驅(qū)動的公共部分通過目標(biāo)端統(tǒng)一平臺來實現(xiàn),實現(xiàn)了目標(biāo)端驅(qū)動開發(fā)的簡單化和快速化,從而保證了系統(tǒng)的兼容性及可擴(kuò)展性。
文檔編號G06F3/06GK101788888SQ20101011381
公開日2010年7月28日 申請日期2010年2月9日 優(yōu)先權(quán)日2010年2月9日
發(fā)明者周洋 申請人:中興通訊股份有限公司