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