專利名稱:寫入過程管理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于管理對存儲設(shè)備的寫入過程的方法、系統(tǒng)和程序。
背景技術(shù):
計算系統(tǒng)常常包括用于處理數(shù)據(jù)和運行應(yīng)用程序的一個或者多個主計算機(jī)(主機(jī))、用于存儲數(shù)據(jù)的直接存取存儲設(shè)備(DASD)以及用于控制數(shù)據(jù)在主機(jī)和DASD之間的傳輸?shù)拇鎯刂破?。存儲控制器也稱為控制單元或者存儲管理器,用于管理對存儲空間的訪問,存儲空間常常由循環(huán)連接的許多硬盤驅(qū)動器組成,也被稱為直接存取存儲設(shè)備(DASD)。主機(jī)可通過存儲控制器向存儲空間傳送輸入/輸出(I/O)請求。
盤型存儲介質(zhì)可以被劃分為分別為“切餅形”的物理部分,這些物理部分常常被稱為“扇區(qū)”。將圓形介質(zhì)劃分為扇形區(qū)有助于驅(qū)動器的讀寫頭對數(shù)據(jù)的定位。存儲盤一般被劃分為許多同心圓或者軌道。每一個軌道一般被劃分為許多代表可被尋址以進(jìn)行讀寫操作的最小存儲單元的簇。一般,一個簇的長度為256或者512個字節(jié)。這樣,通過標(biāo)識存儲數(shù)據(jù)的一個或者多個扇區(qū)、同心軌道和簇,就能夠定位數(shù)據(jù)。
在寫入操作中,數(shù)據(jù)可以被寫入存儲介質(zhì)。如果寫入操作由于電源中斷或者設(shè)備故障而被中斷,則被寫入到存儲介質(zhì)的數(shù)據(jù)可能被破壞或者不完全。因此,存儲控制器常常維護(hù)一個正在寫入數(shù)據(jù)的目標(biāo)位置的列表。用于進(jìn)行中的寫入操作的目標(biāo)位置的列表常常被保存在非易失性存儲器(NVS)中,以便即使在斷電時也能維持列表信息。
一旦完成了對特定目標(biāo)位置的寫入操作,則可以從所述列表中移除該特定寫入操作的目標(biāo)位置。但是,如果寫入操作在完成之前被中斷,則可以檢查進(jìn)行中的寫入操作的目標(biāo)位置列表,以識別可能包含不完整或者被破壞數(shù)據(jù)的寫入目標(biāo)位置。
圖1圖示了典型的現(xiàn)有技術(shù)的未完成寫入操作目標(biāo)位置列表10的一個例子。在圖1的例子中,列表10具有多個條目12a、12b、......12n,每一個條目能夠存儲一個未完成寫入操作的目標(biāo)位置。在圖1的例子中,用例如列表條目12c所示的軌道標(biāo)識(“軌道ID”)來標(biāo)識目標(biāo)位置。在軌道ID的每一個條目被加入列表條目12a、12b、......12n中的一個之后,可以對列表10的內(nèi)容進(jìn)行邏輯冗余校驗,校驗結(jié)果能夠被存儲在一個條目14中。
在完成一個寫入操作時,該寫入操作的目標(biāo)位置的軌道ID可以從該列表10中移除,例如如列表條目126所示。在圖1的例子中,列表條目12a、12d、12e和12n被指示為可用于存儲軌道ID。同樣,在從列表條目12a、12b、......12n之一移除軌道ID之后,可以對列表10的內(nèi)容進(jìn)行邏輯冗余校驗,校驗結(jié)果可以被存儲在邏輯冗余校驗條目14中。
為了便于迅速識別列表10的可用列表條目,常常維護(hù)列表10的一個可用條目列表。在圖1的例子中,可用的列表條目比如條目126、12d、12e各包含一個指針,該指針標(biāo)識列表條目12a、12b、......12n的下一個可用列表條目的位置。這樣的指針可以采用例如地址偏移的形式。但是,列表10的最后一個可用條目比如條目12n不能包含指針,因為在最后的可用條目之后沒有下一個可用條目。在初始化時,在啟動寫入操作之前,列表10的每一個列表條目12a、12b、......12n都可以是可用的。因此,當(dāng)初始化列表10時,該列表10可以對除了最后條目12n之外的每一個列表條目12a、12b、......包含一個指針。
在操作時,如果未完成寫入操作在完成之前被中斷,則可以遍歷未完成寫入操作的軌道ID的列表10。這樣,可以識別未完成寫入操作的可能包含不完整或者被破壞的數(shù)據(jù)的目標(biāo)位置的軌道ID。
發(fā)明內(nèi)容
本發(fā)明提供了一種用于管理寫入過程的方法、系統(tǒng)和程序,其中,在一個數(shù)組中維護(hù)未完成寫入操作的目標(biāo)位置標(biāo)識符的列表,該數(shù)組具有數(shù)組指針,該指針標(biāo)識數(shù)組中下一個可用條目。在一個實施例中,數(shù)組包括一個可變大小的棧。添加未完成寫入操作的目標(biāo)位置標(biāo)識符會增大棧的大小。移除已完成寫入操作的目標(biāo)位置標(biāo)識符會減小棧的尺寸。當(dāng)添加寫入操作目標(biāo)位置標(biāo)識符時可以增大棧的索引號,當(dāng)從棧中移除寫入操作目標(biāo)位置標(biāo)識符時可以減小棧的索引號。
現(xiàn)在看附圖。附圖中相同的附圖標(biāo)記表示對應(yīng)的部件。附圖中圖1是現(xiàn)有技術(shù)的用于跟蹤未完成寫入操作的邏輯結(jié)構(gòu)的示意圖;圖2圖示了可以實現(xiàn)所圖解的各種實施例的計算環(huán)境的一個例子;圖3A-3B是根據(jù)所圖解的實施例的一個方面,跟蹤未完成寫入操作的邏輯結(jié)構(gòu)的示意圖;圖4圖示了在初始化比如圖3A所示的結(jié)構(gòu)時,存儲控制器的操作;圖5圖示了在邏輯結(jié)構(gòu)比如圖3A所示的邏輯結(jié)構(gòu)中存儲正在向存儲器寫入數(shù)據(jù)的未完成寫入操作的目標(biāo)位置的位置標(biāo)識符時,存儲控制器的操作;圖6圖示了存儲在寫入操作中使用的各種參數(shù)的數(shù)據(jù)結(jié)構(gòu)的一個例子;圖7圖示了從邏輯結(jié)構(gòu)比如圖3A所示的邏輯結(jié)構(gòu)中移除已完成的寫入操作的目標(biāo)位置標(biāo)識符時,存儲控制器的操作;圖8圖示了從邏輯結(jié)構(gòu)中移除已完成的寫入操作的目標(biāo)位置標(biāo)識符時,存儲控制器的操作的更為詳細(xì)的例子;圖9圖示了網(wǎng)絡(luò)環(huán)境中的計算部件的結(jié)構(gòu),所述計算部件比如是主機(jī)、存儲控制器、群集器(cluster)以及其它任何計算設(shè)備。
具體實施例方式
下面的說明參照了附圖,附圖構(gòu)成說明書的一部分,用于圖解說明幾個實施例。應(yīng)當(dāng)理解,在本發(fā)明的范圍之內(nèi),可以使用其它實施例,可以進(jìn)行一些結(jié)構(gòu)和操作上的變化。
圖2圖示了可以實現(xiàn)所圖解的實施例的各方面的計算結(jié)構(gòu)。一個或者多個主機(jī)102a,102b...102n通過存儲控制器106與存儲系統(tǒng)104比如DASD或者現(xiàn)有技術(shù)中已知的其它任何存儲系統(tǒng)進(jìn)行數(shù)據(jù)通信。主機(jī)102可以是現(xiàn)有技術(shù)中已知的任何計算設(shè)備,比如服務(wù)器、大型機(jī)、工作站、個人計算機(jī)、手持計算機(jī)、膝上計算機(jī)、電話設(shè)備、網(wǎng)絡(luò)設(shè)備等。存儲控制器106和主機(jī)系統(tǒng)102通過網(wǎng)絡(luò)108通信,網(wǎng)絡(luò)108可以包括存儲區(qū)域網(wǎng)絡(luò)(SAN)、局域網(wǎng)(LAN)、內(nèi)聯(lián)網(wǎng)、互聯(lián)網(wǎng)、廣域網(wǎng)(WAN)等。存儲系統(tǒng)104可以由硬盤驅(qū)動器、磁帶庫、光盤或者現(xiàn)有技術(shù)中已知的任何合適的非易失性存儲介質(zhì)。存儲系統(tǒng)104可以被布置為存儲設(shè)備的陣列,比如磁盤群(Just a Bunch ofDisks,JBOD)、DASD、獨立磁盤冗余陣列(RAID)、虛擬化設(shè)備等。存儲控制器106可以包括現(xiàn)有技術(shù)中已知的任何存儲控制器或者服務(wù)器,比如IBM企業(yè)存儲服務(wù)器(Enterprise Storage Server(ESS))或者現(xiàn)有技術(shù)中已知的其它任何存儲控制器。在特定的實現(xiàn)中,存儲控制器104中的存儲空間被配置為多個邏輯設(shè)備(LD)110a,110b...110n。
存儲控制器106包括兩個獨立的硬件部件群120a和120b,以提供冗余以提高可用性。盡管圖示的實施例是結(jié)合具有群集器(cluster)的存儲控制器進(jìn)行描述的,但是應(yīng)當(dāng)理解,本發(fā)明可以應(yīng)用于使用一個或者多個處理器的各種系統(tǒng)。
可以在單獨的電力邊界(power boundary)上維護(hù)圖示的實施例的每一個群120a、120b,每一個群包括處理器集合體(processorcomplex)122a、122b、高速緩存124a,124b以及非易失性存儲器(NVS)126a、126b。NVS 126a,126b可以包括電池備份RAM或者任何其它類型的非易失性或者易失性備份高速緩存,用來在高速緩存中備份數(shù)據(jù)。主機(jī)102a,102b...102n能夠向目標(biāo)邏輯設(shè)備(LD)110a,110b...110n被分配給的群120a、120b提交指向目標(biāo)邏輯設(shè)備(LD)110a,110b...110n的應(yīng)用I/O請求,包括寫入數(shù)據(jù)在內(nèi)。一個群120a、120b中的NVS 126a,126b被用于備份另一群120b、120a中的高速緩存124b、124a中的寫入數(shù)據(jù),例如,NVS 126a備份高速緩存124b中的寫入數(shù)據(jù)。
圖3A圖示了邏輯結(jié)構(gòu)300的一個例子,該邏輯結(jié)構(gòu)能夠?qū)ξ赐瓿蓪懭氩僮骶S護(hù)一個目標(biāo)位置的列表。該結(jié)構(gòu)300包括條目304a、304b、......304n的一個數(shù)組302,每一個條目能夠存儲一個未完成寫入操作的目標(biāo)位置。在圖示的實施例中,用軌道ID來表示寫入操作的目標(biāo)位置。應(yīng)當(dāng)理解,可以使用其它目標(biāo)位置標(biāo)識符,包括柱面、扇區(qū)、簇和地址等。
根據(jù)所描述的實施例的一個方面,該結(jié)構(gòu)300還包括一個數(shù)組指針306,該指針標(biāo)識該數(shù)組304的可以存儲未完成寫入操作的目標(biāo)位置的下一個可用條目。在圖解的例子中,條目304a、304b、......304n的整個數(shù)組的一部分304提供了相鄰列表條目304a、304b、......304i的一個棧,其中,在每一個棧條目304a、304b、......304i中存儲目標(biāo)位置比如軌道ID。數(shù)組指針306包括指向數(shù)組302的下一個可用條目,從而指示在所存儲的軌道ID的棧304的末尾之后的第一個條目目的棧索引。在圖3A的例子中,棧304的最后一個條目是條目304i,第一個可用條目是條目304a、304b、......304n的數(shù)組中的條目304j。
在這樣的邏輯結(jié)構(gòu)的一個應(yīng)用中,為了確定未完成寫入操作的目標(biāo)位置而對數(shù)組條目的遍歷可以限于實際包含軌道ID的條目304a、304b、......304i的棧304,而不是包括空條目或者無效條目304j、......304n的條目304a、304b、......304n的整個數(shù)組302。在這樣的邏輯結(jié)構(gòu)300的另一個應(yīng)用中,在改變數(shù)組302之后對數(shù)組條目的邏輯冗余校驗可以限于實際包含有效軌道ID的條目304a、304b、......304i的棧,而不包括包括空條目或者無效條目304j、......304n的條目304a、304b、......304n的整個數(shù)組。所述邏輯冗余校驗可以被存儲在一個條目310中。應(yīng)當(dāng)理解,所述棧、條目數(shù)組和指向可用條目的數(shù)組指針可以以其它的形式安排。
圖4圖解了在初始化邏輯結(jié)構(gòu)比如圖3A所示的維護(hù)未完成寫入操作的目標(biāo)位置列表的結(jié)構(gòu)300時,存儲控制器106的操作。在圖4的實施例中,初始化該邏輯結(jié)構(gòu)的數(shù)組指針(方框402)。在圖示的實施例中,通過如圖3B所示將棧302初始化為零可以容易地實現(xiàn)這一點。在此例子中,重置棧索引306,使之指向空的第一數(shù)組條目304a。這樣,當(dāng)如圖3B所示初始化邏輯結(jié)構(gòu)300時,棧304不具有任何條目。
另外,可以初始化邏輯冗余校驗(圖4,方框404)。同樣,在圖示的實施例中,通過將校驗310的內(nèi)容設(shè)定為零,可以容易地初始化圖3B的邏輯冗余校驗310。
圖5圖解了在邏輯結(jié)構(gòu)比如圖3A所示的邏輯結(jié)構(gòu)300中存儲向存儲器比如存儲器104寫入數(shù)據(jù)的未完成寫入操作的目標(biāo)位置標(biāo)識符時,存儲控制器106的操作。在圖5的實施例中,存儲控制器106從寫入操作獲取目標(biāo)位置標(biāo)識符(方框502)。在圖解的實施例中,將寫入操作的目標(biāo)位置標(biāo)識符以指向數(shù)據(jù)結(jié)構(gòu)比如圖6所示的數(shù)據(jù)結(jié)構(gòu)602a、602b、...602n之一的指針的形式提供給存儲控制器106。每一個未完成寫入操作在高速緩存124a、124b中維護(hù)一個關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)602a、602b、...602n。每一個數(shù)據(jù)結(jié)構(gòu)具有許多字段,每一個字段存儲在寫入操作中使用的各種參數(shù)之一。一個這樣的參數(shù)是標(biāo)識正在由寫入操作寫到存儲器104的數(shù)據(jù)的目標(biāo)位置的軌道ID。軌道ID被存儲在該關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)的字段604中。這樣,響應(yīng)對指向數(shù)據(jù)結(jié)構(gòu)602a、602b、...602n之一的指針的接收,存儲控制器106從被指的數(shù)據(jù)結(jié)構(gòu)獲取(方框502)在寫操作中正在被寫入的數(shù)據(jù)的目標(biāo)位置軌道ID。應(yīng)當(dāng)理解,寫入操作的目標(biāo)位置標(biāo)識符可以以多種方式被獲得,包括由寫入操作直接提供目標(biāo)位置標(biāo)識符。
存儲控制器106在數(shù)組指針?biāo)鶚?biāo)識的可用數(shù)組條目中存儲所獲得的位置標(biāo)識符(方框504)。在圖3A的實施例中,由指向下一個可用數(shù)組302條目的棧索引306實現(xiàn)所述數(shù)組指針。在圖3A的例子中,每一個棧條目304a-304i已被填充了關(guān)聯(lián)寫入操作的軌道ID。因此,棧索引306指向下一個可用數(shù)組條目304j。這樣,存儲控制器106在棧索引306所標(biāo)識的可用數(shù)組條目304j中存儲所獲得的軌道ID(方框504)。一旦被填充了寫入操作目標(biāo)位置標(biāo)識符,數(shù)組條目304j就成為棧304的一部分。
另外,在最初從之獲得位置標(biāo)識符的數(shù)據(jù)結(jié)構(gòu)中存儲數(shù)組指針的值(方框506)。在圖3A的例子中,棧索引306的值是一個指向數(shù)組條目304j的偏移。這個偏移值被存儲在從之獲得存儲在數(shù)組條目304j中的軌道ID的數(shù)組結(jié)構(gòu)602a、602b、...602n的字段606中(方框506)。
另外,改變數(shù)組指針的內(nèi)容以標(biāo)識可用的數(shù)組條目。在圖3A的例子中,在用軌道ID填充了數(shù)組條目304j之后,將棧索引306加1以指向下一個可用數(shù)組條目,即數(shù)組條目304k。數(shù)組條304k在數(shù)組302中與數(shù)組條目304j緊鄰。
同樣,可以更新邏輯結(jié)構(gòu)300的內(nèi)容的邏輯冗余校驗(方框510)。在圖解的實施例中,可以對棧304的內(nèi)容(在圖3A的例子中,就是數(shù)組條目304a-304j的內(nèi)容(在數(shù)組條目304j已被填充了軌道ID之后))連同棧索引306的內(nèi)容一起,執(zhí)行邏輯冗余校驗。所更新的邏輯冗余校驗可以被存儲在邏輯冗余校驗310中(方框510)。這樣,在某些應(yīng)用中,在邏輯冗余校驗中,空數(shù)組條目比如數(shù)組條目304k-304n不需要被遍歷,而可以被有效地忽略。
圖7圖解了在從邏輯結(jié)構(gòu)比如圖3A的邏輯結(jié)構(gòu)300移除已經(jīng)完成的寫入操作的目標(biāo)位置標(biāo)識符時,也就是在該寫入操作的所有數(shù)據(jù)都已被成功地寫入存儲器104中正確的目標(biāo)位置之后,存儲控制器106的操作。在接收到完成了寫入操作的通知之后(方框702),存儲控制器106在棧304內(nèi)定位已完成的寫入操作的位置標(biāo)識符,并從棧304中移除該位置標(biāo)識符(方框704)。
從棧304中移除位置標(biāo)識符會留下空白的或者空的條目。在一個實施例中,可以取消棧304中的空的或者空白的數(shù)組條目,以減小棧304的大小(方框706)。這樣的尺寸縮減可以有利于在邏輯冗余校驗更新期間或者在錯誤恢復(fù)期間對棧的遍歷。
在縮減了棧的大小之后,可以更新邏輯結(jié)構(gòu)300的內(nèi)容的邏輯冗余校驗(方框710)。同樣,可以對棧304的內(nèi)容(在圖3A的例子中,是數(shù)組條目304a-304i(當(dāng)數(shù)組條目304j是下一個可用條目時)的內(nèi)容)連同棧索引306的內(nèi)容一起,執(zhí)行邏輯冗余校驗。更新后的邏輯冗余校驗可以被存儲在邏輯冗余校驗310中。這樣,在某些應(yīng)用中,不包含未完成寫入操作的位置標(biāo)識符、不是棧304的一部分的數(shù)組條目,比如數(shù)組條目304j-304n,在邏輯冗余校驗期間不需要被遍歷,實際上可以被忽略。
在圖解的例子中,通過接收指向數(shù)據(jù)結(jié)構(gòu)602a、602b、...602n中,已完成的寫入操作的特定數(shù)據(jù)結(jié)構(gòu)的指針,所述存儲控制器被告知特定寫入操作的完成(圖8,方框802)。所述存儲控制器106然后可以獲得存儲在所述特定數(shù)據(jù)結(jié)構(gòu)的字段606中的棧索引的值(方框804),從而定位存儲已完成的的寫入操作的軌道ID的特定棧條目。然后,如下所述,可以從棧304移除從已完成的寫入操作的數(shù)據(jù)結(jié)構(gòu)獲得的棧索引的值所標(biāo)識的棧條目處所存儲的軌道ID。
應(yīng)當(dāng)理解,可以以各種不同的方式獲得寫入操作的完成通知。還應(yīng)理解,也可以以各種方式確定包含目標(biāo)位置標(biāo)識符的數(shù)組條目的位置。例如,寫入操作可以向存儲控制器106直接提供已完成的寫入操作的軌道ID,或者可以直接提供該軌道ID的數(shù)組條目位置。
在圖解的實施例中,存儲控制器106通過從棧304移除最后一個條目來縮減棧304的大小(方框806)。在圖解的例子中,這是通過減小棧索引306以使其指向棧304的在前數(shù)組條目而實現(xiàn)的。在圖3A的例子中,減小棧索引306會導(dǎo)致棧索引306指向數(shù)組條目304i而不是數(shù)組條目304j。因此,棧304的最后一個數(shù)組條目會是前一數(shù)組條目304h。數(shù)組條目304i不再是棧304的一部分,而是由棧索引306指示為下一個可用的數(shù)組條目。
另外,判斷所移除的最后一個條目是否包含要從棧304移除的已完成寫入操作的目標(biāo)位置標(biāo)識符(方框808)。如果是,則在如方框810所指示的從棧304移除最后一個數(shù)組條目時,已經(jīng)從棧304實際上移除了已完成的寫入操作的目標(biāo)位置標(biāo)識符。在圖解的實施例中,通過將從已完成的寫入操作提供的指針?biāo)鶚?biāo)識的數(shù)據(jù)結(jié)構(gòu)的字段606獲得(方框804)的棧索引的值,與遞減的棧索引的值進(jìn)行比較,可以判斷被移除的最后一個條目是否包含已完成的寫入操作的目標(biāo)位置標(biāo)識符。如果存在匹配,也就是說如果兩個索引值是相同的,則判定被移除的最后一個條目包含已完成的寫入操作的目標(biāo)位置標(biāo)識符,通過從棧304移除最后一個條目從棧304移除之。
在圖3A所描繪的例子中,如前所述,棧304的最后一個條目被指示為數(shù)組條目304i。在遞減棧索引306時,棧索引306會指向數(shù)組條目304i,取代數(shù)組條目304j,作為可用于寫入新的位置標(biāo)識符的下一個條目。因此,棧304的最后一個條目會是在前的數(shù)組條目304h。如果從已完成的寫入操作提供的指針?biāo)鶚?biāo)識的數(shù)據(jù)結(jié)構(gòu)的字段606獲得(方框804)獲得的棧索引的值指向同一個數(shù)組條目304i,則正確的位置標(biāo)識符會已經(jīng)從棧304被移除。換句話說,如果存在匹配,也就是說如果兩個索引值是一樣的,則判定所移除的最后一個條目包含已完成的寫入操作的目標(biāo)位置標(biāo)識符,通過從棧304移除最后一個條目來從棧304移除之。
另一方面,如果判定所移除的最后一個條目不包含已完成寫入操作的目標(biāo)位置標(biāo)識符,則所移除的數(shù)組條目包含未完成寫入操作的有效位置標(biāo)識符。因此,來自從棧304被移除的數(shù)組條目的寫入操作目標(biāo)位置標(biāo)識符被移動(方框812)到包含已完成的寫入操作的位置標(biāo)識符的棧條目。通過將有效位置標(biāo)識符從已移除的數(shù)組條目移動到包含已完成的寫入操作的位置標(biāo)識符的數(shù)組條,已完成的寫入操作的位置標(biāo)識符被蓋寫,實際上被從棧304移除。
如上所述,在圖解的實施例中,通過比較從已完成的寫入操作提供的指針?biāo)鶚?biāo)識的數(shù)據(jù)結(jié)構(gòu)的字段606獲得(方框804)的棧索引的值,與遞減了的棧索引的值,可以判斷所移除的最后一個條目是否包含所述已完成寫入操作的目標(biāo)位置標(biāo)識符。如果不存在匹配,也就是如果兩個索引值不是一樣的,則判定所移除的最后一個條目包含仍然未完成的寫入操作的有效目標(biāo)位置標(biāo)識符,因而不應(yīng)當(dāng)通過從棧304移除最后一個條目來從棧304中被移除。因此,來自從棧304移除的數(shù)組條目的寫入操作目標(biāo)位置標(biāo)識符被移動到包含已完成寫入操作的位置標(biāo)識符的棧條目(方框812),所述位置標(biāo)識符是由從已完成操作提供的指針?biāo)鶚?biāo)識的數(shù)據(jù)結(jié)構(gòu)的字段606獲得(方框804)的棧索引的值標(biāo)識的。
由于寫入操作目標(biāo)位置標(biāo)識符被移動到另一個棧條目,該目標(biāo)位置標(biāo)識符的未完成寫入操作的數(shù)據(jù)結(jié)構(gòu)被更新(方框814),以指示所述目標(biāo)位置標(biāo)識符已被移到的不同棧條目的位置。在圖解的例子中,來自從棧304移除的數(shù)組條目的寫入操作目標(biāo)位置標(biāo)識符被移動(方框812)到包含由從已完成寫入操作提供的指針?biāo)鶚?biāo)識的數(shù)據(jù)結(jié)構(gòu)的字段606獲得(方框804)的棧索引的值標(biāo)識的已完成寫入操作的位置標(biāo)識符的棧條目。因此,所獲得的棧索引值被存儲在被移動的目標(biāo)位置標(biāo)識符的未完成寫入操作的數(shù)據(jù)結(jié)構(gòu)的字段606中。
這樣,在圖示的例子中,每當(dāng)向棧304中添加一個未完成寫入操作的位置標(biāo)識符時,就向棧304添加一個數(shù)組條目。相反,每當(dāng)完成一個寫入操作而從棧中移除已完成寫入操作的位置標(biāo)識符時,從棧304移除一個數(shù)組條目。結(jié)果,在一種應(yīng)用中,可以有效地執(zhí)行邏輯冗余校驗。另外,在另一種應(yīng)用中,在錯誤恢復(fù)操作期間,對數(shù)組302的遍歷可以限于棧304的數(shù)組條目。不是該棧的一部分的數(shù)組條目不包含未完成寫入操作的目標(biāo)位置標(biāo)識符,在一種應(yīng)用中可以被忽略。由于不是棧的一部分的數(shù)組條目被忽略了,在該棧之外的數(shù)組條目中的已完成寫入操作的目標(biāo)位置就不需要被擦除。
另外的實現(xiàn)細(xì)節(jié)使用標(biāo)準(zhǔn)的編程和/或工程技術(shù)來制造軟件、固件、硬件或者它們的任意組合,上面所描述的用于寫入過程管理的技術(shù)可以被實現(xiàn)為方法、設(shè)備或者制品。術(shù)語“制品”在這里是指在硬件邏輯(例如集成電路芯片、可編程門陣列(PGA)、專用集成電路(ASIC)等)或者計算機(jī)可讀介質(zhì)(比如磁存儲介質(zhì)(例如硬盤驅(qū)動器、軟盤、磁帶等)、光存儲器(CD-ROM、光盤等)、易失性和非易失性存儲設(shè)備(例如EEPROM、ROM、PROM、RAM、DRAM、SRAM、固件、可編程邏輯等))中實現(xiàn)的代碼或者邏輯。處理器復(fù)合體訪問和執(zhí)行計算機(jī)可讀介質(zhì)中的代碼。還可以通過傳輸介質(zhì)或者通過網(wǎng)絡(luò)從文件服務(wù)器訪問其中實現(xiàn)了優(yōu)選實施例的代碼。在這種情況下,其中實現(xiàn)了代碼的制品可以包括傳輸介質(zhì),比如網(wǎng)絡(luò)傳輸線路、無線傳輸介質(zhì)、通過空間傳播的信號、無線電波、紅外信號等。這樣,“制品”可以包括其中包含代碼的介質(zhì)。另外,“制品”可以包括在其中實現(xiàn)、處理和執(zhí)行代碼的硬件和軟件。當(dāng)然,本領(lǐng)域的普通技術(shù)人員知道,可以對這樣的配置進(jìn)行許多修改而不偏離本發(fā)明的范圍,所述制品可以包括現(xiàn)有技術(shù)中已知的任何信息承載介質(zhì)。
在所描述的實現(xiàn)方式中,某些操作被描述成由處理器復(fù)合體122a和122b執(zhí)行。在另外的實現(xiàn)方式中,上面描述為由處理器復(fù)合體執(zhí)行的特定操作可以由各種計算機(jī)、處理器和控制器執(zhí)行。
在所描述的實現(xiàn)方式中,特定操作被描述為遞增或者遞減索引或者計數(shù)器。應(yīng)當(dāng)理解,計數(shù)器的“計數(shù)值”可以是正的或者是負(fù)的,取決于具體的應(yīng)用,“遞增”或者“遞減”計數(shù)值可以使實際的計數(shù)值更負(fù)或者更正,或者負(fù)得更少或者正得更少。
在圖4、5、7和8中所圖示的邏輯圖示了按照特定順序發(fā)生的特定事件。在另外的實現(xiàn)方式中,可以按照不同的順序執(zhí)行特定操作,或者可對特定操作進(jìn)行修改或者移除。另外,可以向上述邏輯中添加操作,仍然符合所描述的實現(xiàn)方式。另外,這里所描述的操作可以順序進(jìn)行,或者可以并行處理特定操作。另外,可以用單個處理單元或者由分布式的處理單元執(zhí)行操作。
變量N用來表示所描述的某些元素的任何整數(shù)變量,在不同的情況下使用時,其可以表示相同或者不同的整數(shù)值。
圖9圖解了網(wǎng)絡(luò)部件比如圖2中所示的主機(jī)和存儲控制器群集器的計算機(jī)結(jié)構(gòu)900的實現(xiàn)方式。該結(jié)構(gòu)900可以包括處理器902(例如微處理器)、存儲器904(內(nèi)存,例如易失性存儲器)、存儲器906(例如非易失性存儲器,比如磁盤驅(qū)動器、光盤驅(qū)動器、磁帶驅(qū)動器等)。存儲器906可以包括內(nèi)部存儲設(shè)備或者附加的或者可通過網(wǎng)絡(luò)訪問的存儲器。存儲器906中的程序被裝入存儲器904,并由處理器902以本領(lǐng)域中已知的方式執(zhí)行。該結(jié)構(gòu)還包括網(wǎng)卡908以便能夠與網(wǎng)絡(luò)通信。輸入設(shè)備910用來向處理器902提供用戶輸入,可以包括鍵盤、鼠標(biāo)、輸入筆、麥克風(fēng)、觸摸顯示屏或者現(xiàn)有技術(shù)中已知的任何其它激勵或者輸入機(jī)構(gòu)。輸出設(shè)備912能夠再現(xiàn)從處理器902或者其它部件發(fā)送的信息,比如顯示監(jiān)視器、打印機(jī)、存儲器等。
上面對各種實現(xiàn)方式的描述是用于說明和描述的目的,不是要窮盡本發(fā)明的具體實現(xiàn)方式或者將本發(fā)明限制于所公開的精確形式。在上述教導(dǎo)的啟示下,可以作出許多修改和變化。
權(quán)利要求
1.一種方法,包括獲取寫入操作的目標(biāo)位置的位置標(biāo)識符;將所述位置標(biāo)識符存儲到一個數(shù)組的一個可用條目中,該條目由具有第一值的一個數(shù)組指針標(biāo)識;以及將所述數(shù)組指針的值改變?yōu)榈诙狄詷?biāo)識另一個可用數(shù)組條目。
2.如權(quán)利要求1所述的方法,其中,其中存儲位置標(biāo)識符的數(shù)組的條目形成數(shù)組條目的一個棧,其中,所述存儲步驟將寫入操作的位置標(biāo)識符存儲到所述數(shù)組的下一個可用條目中。
3.如權(quán)利要求2所述的方法,其中,所述數(shù)組指針是一個索引,所述改變步驟包括遞增所述數(shù)組指針?biāo)饕阉鰯?shù)組的下一個條目標(biāo)識為所述數(shù)組的下一個可用條目。
4.如權(quán)利要求3所述的方法,還包括在完成一個寫入操作時,從數(shù)組條目的棧中移除已完成的寫入操作目標(biāo)位置的位置標(biāo)識符,縮減所述數(shù)組條目棧的大小。
5.如權(quán)利要求4所述的方法,其中,所述縮減步驟包括通過遞減所述數(shù)組指針?biāo)饕詫⑺鰯?shù)組的前一條目標(biāo)識為該數(shù)組的下一個可用條目,來移除所述數(shù)組條目棧的最后一個條目。
6.如權(quán)利要求4所述的方法,還包括在完成一個寫入操作時,將存儲在所述數(shù)組條目棧的最后一個條目中的位置標(biāo)識符移動到包含已完成寫入操作的位置標(biāo)識符的棧條目,并用被移動的位置標(biāo)識符蓋寫已完成寫入操作的位置標(biāo)識符;通過遞減所述數(shù)組指針?biāo)饕齺韺⒃摂?shù)組的前一個條目標(biāo)識為該數(shù)組的下一個可用條目,移除所述數(shù)組條目棧的最后一個條目。
7.如權(quán)利要求1所述的方法,還包括在一個數(shù)據(jù)結(jié)構(gòu)條目中存儲所述數(shù)組指針第一值。
8.如權(quán)利要求4所述的方法,還包括更新所述被縮減的棧的內(nèi)容的邏輯冗余校驗。
9.如權(quán)利要求1所述的方法,其中,所述數(shù)組被實現(xiàn)在非易失性存儲器中。
10.一種方法,包括獲取寫入操作的目標(biāo)位置的位置標(biāo)識符;將所述位置標(biāo)識符存儲到一個數(shù)組的一個可用條目中,該條目由具有第一值的一個數(shù)組指針標(biāo)識;在一個數(shù)據(jù)結(jié)構(gòu)條目中存儲所述數(shù)組指針第一值;將所述數(shù)組指針的值改變?yōu)榈诙狄詷?biāo)識另一個可用數(shù)組條目;在完成寫入操作時接收一個數(shù)據(jù)結(jié)構(gòu)指針;從所接收到的數(shù)據(jù)結(jié)構(gòu)指針?biāo)鶚?biāo)識的數(shù)據(jù)結(jié)構(gòu)條目獲取一個數(shù)組指針值;以及從所獲取的數(shù)組指針值標(biāo)識的數(shù)組條目中移除位置標(biāo)識符,其中,所移除的位置標(biāo)識符標(biāo)識一個已完成的寫入操作目標(biāo)位置。
11.如權(quán)利要求10所述的方法,其中,其中存儲位置標(biāo)識符的數(shù)組的條目形成一個數(shù)組條目棧,其中,所述位置標(biāo)識符存儲步驟將寫入操作的位置標(biāo)識符存儲到所述數(shù)組的下一個可用條目中,其中,所述位置標(biāo)識符移除步驟從所述數(shù)組條目棧中移除已完成寫入操作目標(biāo)位置的位置標(biāo)識符,所述方法還包括縮減所述數(shù)組條目棧的大小。
12.一種方法,包括獲取寫入操作的目標(biāo)位置的位置標(biāo)識符;將所述位置標(biāo)識符存儲到非易失性存儲器中的一個條目數(shù)組的一個可用條目中,其中存儲位置標(biāo)識符的數(shù)組的條目形成一個數(shù)組條目棧,其中,所述可用條目由具有第一值的一個索引指針標(biāo)識;將所述數(shù)組指針的值遞增為第二值以將該數(shù)組的下一個條目標(biāo)識為該數(shù)組的下一個可用條目;在完成寫入操作時接收一個數(shù)據(jù)結(jié)構(gòu)指針;從所接收到的數(shù)據(jù)結(jié)構(gòu)指針?biāo)鶚?biāo)識的數(shù)據(jù)結(jié)構(gòu)條目獲取一個數(shù)組指針?biāo)饕?;從所獲得的數(shù)組指針?biāo)饕邓鶚?biāo)識的棧條目移除所述位置標(biāo)識符;遞減所述索引的值;比較所獲得的索引值與所述遞減了的索引值;如果所獲得的索引值與所述遞減了的索引值不同,則從所述遞減了的索引值所標(biāo)識的棧條目將一個寫入操作目標(biāo)位置標(biāo)識符移動到由所獲得的索引值標(biāo)識的棧條目;以及更新包括所述棧的內(nèi)容和所述索引的內(nèi)容的邏輯冗余校驗。
13.如權(quán)利要求12所述的方法,還包括將所獲得索引值存儲在與移動到所獲得的索引值所標(biāo)識的棧條目的位置標(biāo)識符相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)條目中。
14.一種用于數(shù)據(jù)存儲的制品,其中該制品使得下述操作被執(zhí)行獲取寫入操作的目標(biāo)位置的位置標(biāo)識符;將所述位置標(biāo)識符存儲到一個數(shù)組的一個可用條目中,該條目由具有第一值的一個數(shù)組指針標(biāo)識;以及將所述數(shù)組指針的值改變?yōu)榈诙狄詷?biāo)識另一個可用數(shù)組條目。
15.如權(quán)利要求14所述的制品,其中,其中存儲位置標(biāo)識符的數(shù)組的條目形成數(shù)組條目的一個棧,其中,所述存儲步驟將寫入操作的位置標(biāo)識符存儲到所述數(shù)組的下一個可用條目中。
16.如權(quán)利要求15所述的制品,其中,所述數(shù)組指針是一個索引,所述改變步驟包括遞增所述數(shù)組指針?biāo)饕阉鰯?shù)組的下一個條目標(biāo)識為所述數(shù)組的下一個可用條目。
17.如權(quán)利要求16所述的制品,其中所述操作還包括在完成一個寫入操作時,從數(shù)組條目的棧中移除已完成的寫入操作目標(biāo)位置的位置標(biāo)識符,縮減所述數(shù)組條目棧的大小。
18.如權(quán)利要求17所述的制品,其中,所述縮減步驟包括通過遞減所述數(shù)組指針?biāo)饕詫⑺鰯?shù)組的前一條目標(biāo)識為該數(shù)組的下一個可用條目,來移除所述數(shù)組條目棧的最后一個條目。
19.如權(quán)利要求17所述的制品,其中所述操作還包括在完成一個寫入操作時,將存儲在所述數(shù)組條目棧的最后一個條目中的位置標(biāo)識符移動到包含已完成寫入操作的位置標(biāo)識符的棧條目,并用被移動的位置標(biāo)識符蓋寫已完成寫入操作的位置標(biāo)識符;通過遞減所述數(shù)組指針?biāo)饕齺韺⒃摂?shù)組的前一個條目標(biāo)識為該數(shù)組的下一個可用條目,移除所述數(shù)組條目棧的最后一個條目。
20.如權(quán)利要求14所述的制品,其中所述操作還包括在一個數(shù)據(jù)結(jié)構(gòu)條目中存儲所述數(shù)組指針第一值。
21.如權(quán)利要求17所述的制品,其中所述操作還包括還包括更新所述被縮減的棧的內(nèi)容的邏輯冗余校驗。
22.如權(quán)利要求14所述的制品,其中,所述數(shù)組被實現(xiàn)在非易失性存儲器中。
23.一種用于數(shù)據(jù)存儲的制品,其中該制品使得下述操作被執(zhí)行獲取寫入操作的目標(biāo)位置的位置標(biāo)識符;將所述位置標(biāo)識符存儲到一個數(shù)組的一個可用條目中,該條目由具有第一值的一個數(shù)組指針標(biāo)識;在一個數(shù)據(jù)結(jié)構(gòu)條目中存儲所述數(shù)組指針第一值;將所述數(shù)組指針的值改變?yōu)榈诙狄詷?biāo)識另一個可用數(shù)組條目;在完成寫入操作時接收一個數(shù)據(jù)結(jié)構(gòu)指針;從所接收到的數(shù)據(jù)結(jié)構(gòu)指針?biāo)鶚?biāo)識的數(shù)據(jù)結(jié)構(gòu)條目獲取一個數(shù)組指針值;以及從所獲取的數(shù)組指針值標(biāo)識的數(shù)組條目中移除位置標(biāo)識符,其中,所移除的位置標(biāo)識符標(biāo)識一個已完成的寫入操作目標(biāo)位置。
24.如權(quán)利要求23所述的制品,其中,其中存儲位置標(biāo)識符的數(shù)組的條目形成一個數(shù)組條目棧,其中,所述位置標(biāo)識符存儲步驟將寫入操作的位置標(biāo)識符存儲到所述數(shù)組的下一個可用條目中,其中,所述位置標(biāo)識符移除步驟從所述數(shù)組條目棧中移除已完成寫入操作目標(biāo)位置的位置標(biāo)識符,其中所述操作包括縮減所述數(shù)組條目棧的大小。
25.一種用于數(shù)據(jù)存儲的制品,其中該制品使得下述操作被執(zhí)行獲取寫入操作的目標(biāo)位置的位置標(biāo)識符;將所述位置標(biāo)識符存儲到非易失性存儲器中的一個條目數(shù)組的一個可用條目中,其中存儲位置標(biāo)識符的數(shù)組的條目形成一個數(shù)組條目棧,其中,所述可用條目由具有第一值的一個索引指針標(biāo)識;將所述數(shù)組指針的值遞增為第二值以將該數(shù)組的下一個條目標(biāo)識為該數(shù)組的下一個可用條目;在完成寫入操作時接收一個數(shù)據(jù)結(jié)構(gòu)指針;從所接收到的數(shù)據(jù)結(jié)構(gòu)指針?biāo)鶚?biāo)識的數(shù)據(jù)結(jié)構(gòu)條目獲取一個數(shù)組指針?biāo)饕?;從所獲得的數(shù)組指針?biāo)饕邓鶚?biāo)識的棧條目移除所述位置標(biāo)識符;遞減所述索引的值;比較所獲得的索引值與所述遞減了的索引值;如果所獲得的索引值與所述遞減了的索引值不同,則從所述遞減了的索引值所標(biāo)識的棧條目將一個寫入操作目標(biāo)位置標(biāo)識符移動到由所獲得的索引值標(biāo)識的棧條目;以及更新包括所述棧的內(nèi)容和所述索引的內(nèi)容的邏輯冗余校驗。
26.如權(quán)利要求25所述的制品,其中所述操作還包括將所獲得索引值存儲在與移動到所獲得的索引值所標(biāo)識的棧條目的位置標(biāo)識符相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)條目中。
27.一種系統(tǒng),包括存儲設(shè)備,適合存儲具有一個數(shù)組指針的數(shù)組,該數(shù)組指針具有標(biāo)識所述數(shù)組的一個可用條目的第一值;連接到所述存儲設(shè)備的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中,該數(shù)字?jǐn)?shù)據(jù)處理設(shè)備被配置為獲取寫入操作的目標(biāo)位置的位置標(biāo)識符;將所述位置標(biāo)識符存儲到具有所述第一值的所述數(shù)組指針?biāo)鶚?biāo)識的所述數(shù)組的一個可用條目中;以及將所述數(shù)組指針的值改變?yōu)榈诙狄詷?biāo)識另一個可用數(shù)組條目。
28.如權(quán)利要求27所述的系統(tǒng),其中,其中存儲位置標(biāo)識符的數(shù)組的條目形成數(shù)組條目的一個棧,其中,所述存儲步驟將寫入操作的位置標(biāo)識符存儲到所述數(shù)組的下一個可用條目中。
29.如權(quán)利要求28所述的系統(tǒng),其中,所述數(shù)組指針是一個索引,所述改變步驟包括遞增所述數(shù)組指針?biāo)饕?,把所述?shù)組的下一個條目標(biāo)識為所述數(shù)組的下一個可用條目。
30.如權(quán)利要求29所述的系統(tǒng),其中,所述數(shù)字?jǐn)?shù)據(jù)處理設(shè)備被進(jìn)一步配置為在完成一個寫入操作時,從數(shù)組條目的棧中移除已完成的寫入操作目標(biāo)位置的位置標(biāo)識符,縮減所述數(shù)組條目棧的大小。
31.如權(quán)利要求30所述的系統(tǒng),其中,所述縮減步驟包括通過遞減所述數(shù)組指針?biāo)饕詫⑺鰯?shù)組的前一條目標(biāo)識為該數(shù)組的下一個可用條目,來移除所述數(shù)組條目棧的最后一個條目。
32.如權(quán)利要求30所述的系統(tǒng),其中,所述數(shù)字?jǐn)?shù)據(jù)處理設(shè)備被進(jìn)一步配置為在完成一個寫入操作時,將存儲在所述數(shù)組條目棧的最后一個條目中的位置標(biāo)識符移動到包含已完成寫入操作的位置標(biāo)識符的棧條目,并用被移動的位置標(biāo)識符蓋寫已完成寫入操作的位置標(biāo)識符;通過遞減所述數(shù)組指針?biāo)饕齺韺⒃摂?shù)組的前一個條目標(biāo)識為該數(shù)組的下一個可用條目,移除所述數(shù)組條目棧的最后一個條目。
33.如權(quán)利要求27所述的系統(tǒng),還包括一個數(shù)據(jù)結(jié)構(gòu),其中,所述數(shù)字?jǐn)?shù)據(jù)處理設(shè)備進(jìn)一步被配置為在所述數(shù)據(jù)結(jié)構(gòu)條目中存儲所述數(shù)組指針第一值。
34.如權(quán)利要求30所述的系統(tǒng),其中,所述數(shù)字?jǐn)?shù)據(jù)處理設(shè)備進(jìn)一步被配置為更新所述被縮減的棧的內(nèi)容的邏輯冗余校驗。
35.如權(quán)利要求27所述的系統(tǒng),其中,所述存儲設(shè)備是非易失性存儲器。
36.一種存儲控制器,用于與數(shù)據(jù)存儲設(shè)備和具有條目的數(shù)據(jù)結(jié)構(gòu)一起使用,其包括適合連接到所述存儲設(shè)備的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中數(shù)字?jǐn)?shù)據(jù)處理設(shè)備被配置為在所述存儲設(shè)備中存儲一個具有數(shù)組指針的數(shù)組,該數(shù)組指針具有標(biāo)識所述數(shù)組的一個可用條目的第一值;獲取寫入操作的目標(biāo)位置的位置標(biāo)識符;將所述位置標(biāo)識符存儲到由具有所述第一值的所述數(shù)組指針?biāo)鶚?biāo)識的所述數(shù)組的一個可用條目中;在一個數(shù)據(jù)結(jié)構(gòu)條目中存儲所述數(shù)組指針第一值;將所述數(shù)組指針的值改變?yōu)榈诙狄詷?biāo)識另一個可用數(shù)組條目;在完成寫入操作時接收一個數(shù)據(jù)結(jié)構(gòu)指針;從所接收到的數(shù)據(jù)結(jié)構(gòu)指針?biāo)鶚?biāo)識的數(shù)據(jù)結(jié)構(gòu)條目獲取一個數(shù)組指針值;以及從所獲取的數(shù)組指針值標(biāo)識的數(shù)組條目中移除位置標(biāo)識符,其中,所移除的位置標(biāo)識符標(biāo)識一個已完成的寫入操作目標(biāo)位置。
37.如權(quán)利要求36所述的存儲控制器,其中,其中存儲位置標(biāo)識符的數(shù)組的條目形成一個數(shù)組條目棧,其中,所述位置標(biāo)識符存儲步驟將寫入操作的位置標(biāo)識符存儲到所述數(shù)組的下一個可用條目中,其中,所述位置標(biāo)識符移除步驟從所述數(shù)組條目棧中移除已完成寫入操作目標(biāo)位置的位置標(biāo)識符,所述數(shù)字?jǐn)?shù)據(jù)處理設(shè)備進(jìn)一步被配置為縮減所述數(shù)組條目棧的大小。
38.一種存儲控制器,用于與非易失性數(shù)據(jù)存儲設(shè)備和具有條目的數(shù)據(jù)結(jié)構(gòu)一起使用,其包括適合連接到所述存儲設(shè)備的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中數(shù)字?jǐn)?shù)據(jù)處理設(shè)備被配置為在所述存儲設(shè)備中存儲一個包括一個棧的數(shù)組,該數(shù)組具有一個數(shù)組指針,該數(shù)組指針具有標(biāo)識所述數(shù)組的一個可用條目的第一值;獲取寫入操作的目標(biāo)位置的位置標(biāo)識符;將所述位置標(biāo)識符存儲到由具有所述第一值的索引指針標(biāo)識的所述條目中;將所述數(shù)組指針的值遞增為第二值以將該數(shù)組的下一個條目標(biāo)識為該數(shù)組的下一個可用條目,其中,所述索引指針第一值所標(biāo)識的、包含所述位置標(biāo)識符的所述條目變?yōu)樗鰲5囊徊糠郑辉谕瓿蓪懭氩僮鲿r接收一個數(shù)據(jù)結(jié)構(gòu)指針;從所接收到的數(shù)據(jù)結(jié)構(gòu)指針?biāo)鶚?biāo)識的數(shù)據(jù)結(jié)構(gòu)條目獲取一個數(shù)組指針?biāo)饕担粡乃@得的數(shù)組指針?biāo)饕禈?biāo)識的棧條目移除所述位置標(biāo)識符;遞減所述索引的值;比較所獲得的索引值與所述遞減了的索引值;如果所獲得的索引值與所述遞減了的索引值不同,則從所述遞減了的索引值所標(biāo)識的棧條目將一個寫入操作目標(biāo)位置標(biāo)識符移動到由所獲得的索引值標(biāo)識的棧條目;以及更新包括所述棧的內(nèi)容和所述索引的內(nèi)容的邏輯冗余校驗。
39.如權(quán)利要求38所述的存儲控制器,其中,所述數(shù)字?jǐn)?shù)據(jù)處理設(shè)備進(jìn)一步被配置為將所獲得索引值存儲在與移動到所獲得的索引值所標(biāo)識的棧條目的位置標(biāo)識符相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)條目中。
全文摘要
本申請涉及寫入過程管理方法和系統(tǒng)。其中,在具有數(shù)組指針的數(shù)組中維護(hù)未完成寫入操作的目標(biāo)位置標(biāo)識符的一個列表,所述數(shù)組指針標(biāo)識該數(shù)組的下一個可用條目。在一個實施例中,該數(shù)組包括一個可變大小的棧。添加一個未完成寫入操作的目標(biāo)位置標(biāo)識符會增加棧的大小。移除已完成寫入操作的目標(biāo)位置標(biāo)識符會縮減棧的尺寸。當(dāng)添加寫入操作目標(biāo)位置標(biāo)識符時可以遞增棧索引,當(dāng)從棧中移除寫入操作目標(biāo)位置標(biāo)識符時可以遞減棧索引。
文檔編號G06F9/45GK1677333SQ20051005959
公開日2005年10月5日 申請日期2005年3月30日 優(yōu)先權(quán)日2004年3月31日
發(fā)明者肯尼思·韋恩·托德, 凱文·約翰·阿什 申請人:國際商業(yè)機(jī)器公司