專利名稱:數(shù)據(jù)可用性的掛載時協(xié)調(diào)的制作方法
數(shù)據(jù)可用性的掛載時協(xié)調(diào)
背景技術(shù):
NAND閃存和其他類型的非易失性存儲器(NVM)常被用于大容量存儲。舉例來說,便攜式媒體播放器之類的消費(fèi)類電子設(shè)備往往包含了用于存儲音樂、視頻和其他媒體的閃存。系統(tǒng)可以在NVM中存儲不同類型的文件。當(dāng)系統(tǒng)遭遇到錯誤時,在NVM中存儲的文件的文件系統(tǒng)視圖與NVM中存儲的實(shí)際文件之間有可能會出現(xiàn)分歧。最終,當(dāng)文件系統(tǒng)需要訪問一特定文件時,該系統(tǒng)可能會發(fā)現(xiàn)該文件是損壞的或者在NVM中是不存在的。于是,這種情形將會使得文件系統(tǒng)嘗試從外部來源恢復(fù)文件。對于用戶體驗(yàn)而言,在系統(tǒng)操作期間發(fā)現(xiàn)分歧以及后續(xù)的恢復(fù)處理有可能是破壞性的。
發(fā)明內(nèi)容
所公開的是用于掛載時協(xié)調(diào)數(shù)據(jù)可用性的系統(tǒng)和方法。在系統(tǒng)引導(dǎo)期間,可以枚舉非易失性存儲器(NVM)驅(qū)動器,并且可以獲取NVM驅(qū)動器映射。該NVM驅(qū)動器映射可以包括LBA在NVM中的實(shí)際可用性。然后,文件系統(tǒng)可被掛載,并且可以生成文件系統(tǒng)分配狀態(tài)。所述文件系統(tǒng)分配狀態(tài)可以指示LBA可用性的文件系統(tǒng)視圖。隨后,可以執(zhí)行數(shù)據(jù)可用性協(xié)調(diào)。也就是說。文件系統(tǒng)分配狀態(tài)和NVM驅(qū)動器映射可被相互疊加并比較,以揭示任何分歧。
通過結(jié)合附圖來參考以下的詳細(xì)描述,可以更清楚地了解本發(fā)明的上述和其他方面及優(yōu)點(diǎn),附圖中相同的參考字符始終標(biāo)弓I相同的部分,并且其中:圖1和圖2是根據(jù)本發(fā)明各實(shí)施例配置的電子設(shè)備的框圖;圖3是根據(jù)本發(fā)明各實(shí)施例的用于在系統(tǒng)引導(dǎo)期間協(xié)調(diào)數(shù)據(jù)可用性的例示處理的流程圖;圖4是根據(jù)本發(fā)明各實(shí)施例的從文件系統(tǒng)和非易失性存儲器驅(qū)動器的角度看來的例示可用性狀態(tài)映射的圖形視圖;圖5是根據(jù)本發(fā)明各實(shí)施例的用于恢復(fù)數(shù)據(jù)的例示處理的流程圖;圖6是根據(jù)本發(fā)明各實(shí)施例的用于確定數(shù)據(jù)可用性的例示處理的流程圖;圖7是根據(jù)本發(fā)明各實(shí)施例的用于提供邏輯至物理映射的例示樹的框圖;以及圖8是根據(jù)本發(fā)明各實(shí)施例的用于處理不可校正數(shù)據(jù)的例示處理的流程圖。
具體實(shí)施例方式所提供的是用于掛載時協(xié)調(diào)數(shù)據(jù)可用性的系統(tǒng)和方法。在系統(tǒng)引導(dǎo)期間,非易失性存儲器(NVM)驅(qū)動器可被枚舉,并且NVM驅(qū)動器映射可被獲取。所述NVM驅(qū)動器映射可以包括NVM中LBA的實(shí)際可用性。于是可以掛載文件系統(tǒng)。在掛載期間可以生成用于指示LBA可用性的文件系統(tǒng)視圖的文件系統(tǒng)分配狀態(tài)。隨后,可以執(zhí)行數(shù)據(jù)可用性協(xié)調(diào)。也就是說,文件系統(tǒng)分配狀態(tài)和NVM驅(qū)動器映射可被相互疊加并比較,以便揭示任何分歧。更具體地,對于文件系統(tǒng)分配狀態(tài)中的每一個可用LBA范圍,文件系統(tǒng)可以向系統(tǒng)的NVM接口發(fā)送命令。一旦接收到該命令,NVM接口就能確定NVM驅(qū)動器映射是否具有一致狀態(tài)。如果NVM接口確定NVM驅(qū)動器映射不一致(例如LBA范圍的至少一部分不可用),那么NVM接口可以向文件系統(tǒng)發(fā)送指示這種不一致性的信息。對于這里使用的LBA范圍來說,如果得知所述LBA范圍是不可校正或未映射的,所述LBA范圍就是“不可用的”。一旦接收到該信息,則文件系統(tǒng)可以調(diào)用策略,用以復(fù)原與LBA范圍的該至少一部分相關(guān)聯(lián)的數(shù)據(jù)。圖1示出的是電子設(shè)備100的框圖。在一些實(shí)施例中,電子設(shè)備100可以是或者可以包括便攜式媒體播放器、蜂窩電話、口袋大小的個人計(jì)算機(jī)、個人數(shù)字助理(PDA)、桌上型計(jì)算機(jī)、膝上型計(jì)算機(jī)以及其他任何適當(dāng)類型的電子設(shè)備。電子設(shè)備100可以包括片上系統(tǒng)(SoC) 110和非易失性存儲器(NVM) 120。非易失性存儲器120可以包括基于浮柵或電荷俘獲技術(shù)的NAND閃存、NOR閃存、可擦寫可編程只讀存儲器(EPR0M)、電可擦寫可編程只讀存儲器(EEPR0M)、鐵電式RAM (FRAM)、磁阻RAM(MRAM)或是其任何組合。NVM 120可被組織成“塊”,所述塊可以是最小的可擦寫單元,并且可被進(jìn)一步組織成“頁面”,所述頁面是可被編程或讀取的最小單元。在一些實(shí)施例中,NVM 120可以包括多個集成電路,其中每一個集成電路都可以具有多個塊。來自相應(yīng)集成電路的存儲單元(例如塊或塊的頁面)可以形成“超級塊”。NVM 120的每一個存儲單元(例如頁面或塊)都可以使用物理地址(例如物理頁面地址或物理塊地址)來引用。在一些實(shí)施例中,NVM 120的一個或多個指定塊可以存儲上下文信息。這里使用的“上下文信息”指的是在具體時間點(diǎn)與整個NVM的狀態(tài)相關(guān)聯(lián)的信息。例如,上下文信息可以包括在一具體時刻有關(guān)NVM 120的各個塊的邏輯至物理映射。這里使用的“邏輯至物理映射”可以是數(shù)據(jù)頁面的一個或多個邏輯地址(例如邏輯扇區(qū))與物理頁面地址之間的映射。在一些實(shí)施例中,NVM 120的一個或多個塊可以包括塊內(nèi)容表(T0C)。每一個塊TOC都可以包括將塊頁面映射到相應(yīng)邏輯地址的信息。在一些實(shí)施例中,塊TOC可以只包括用于在塊中被編程的每個頁面的邏輯地址(例如邏輯塊地址(LBA)或邏輯頁面編號)。在其他實(shí)施例中,塊TOC還可以包括針對頁面所進(jìn)行的更新的相對壽命(例如某一個頁面相對于其他頁面的更新時間)。在此類實(shí)施例中,塊TOC可以包括用于被編程的每一個頁面的邏輯地址-壽命配對。片上系統(tǒng)110可以包括SoC控制電路112、存儲器114以及NVM接口 118。SoC控制電路112可以控制SoC 110以及SoC 110或設(shè)備100的其他部件的常規(guī)操作和功能。例如,響應(yīng)于用戶輸入和/或應(yīng)用或操作系統(tǒng)的指令,SoC控制電路112可以向NVM接口 118發(fā)布讀取或?qū)懭朊?,以便從NVM 120中獲取數(shù)據(jù)或者將數(shù)據(jù)寫入NVM120。盡管數(shù)據(jù)未必與用戶或用戶應(yīng)用直接關(guān)聯(lián),但為了清楚起見,在這里可以將SoC控制電路112請求存儲或檢索的數(shù)據(jù)稱為“用戶數(shù)據(jù)”。更確切地說,用戶數(shù)據(jù)可以是由SoC控制電路112生成或獲取(例如經(jīng)由應(yīng)用或操作系統(tǒng))的任何適當(dāng)?shù)臄?shù)字信息序列。
SoC控制電路112可以包括硬件、軟件和固件、以及可以通過操作來驅(qū)動電子設(shè)備100的功能的任何組件、電路或邏輯的任何組合。例如,SoC控制電路112可以包括在NVM120或存儲器114中存儲的軟件/固件的控制下操作的一個或多個處理器。存儲器114可以包括任何適當(dāng)類型的易失性存儲器,例如隨機(jī)存取存儲器(RAM)(例如靜態(tài)RAM (SRAM)、動態(tài)隨機(jī)存取存儲器(DRAM)、同步動態(tài)隨機(jī)存取存儲器(SDRAM)、雙倍數(shù)據(jù)速率(DDR) RAM)、高速緩沖存儲器、只讀存儲器(ROM)或是其任何組合。存儲器114可以包括能夠臨時存儲編程至非易失性存儲器120中或是從中讀取的用戶數(shù)據(jù)的數(shù)據(jù)源。在一些實(shí)施例中,存儲器114可以充當(dāng)作為SoC控制電路112的一部分實(shí)施的任何處理器的主存儲器。存儲器114可以包括用于存儲邏輯至物理映射的一個或多個數(shù)據(jù)結(jié)構(gòu)。例如,存儲器114可以包括能在LBA范圍與NVM 120相應(yīng)物理地址之間提供映射的樹。在下文中將會結(jié)合圖6和圖7來更詳細(xì)地描述這些樹。NVM接口 118可以包括被配置成充當(dāng)SoC控制電路112與NVM 120之間的接口或驅(qū)動器的硬件、軟件和/或固件的任何適當(dāng)組合。對于包含在NVM接口 118中的任何軟件模塊來說,相應(yīng)的程序代碼可以存儲在NVM 120或存儲器114中。NVM接口 118可以執(zhí)行允許SoC控制電路112訪問NVM 120以及管理NVM 120的存儲單元(例如頁面、塊、超級塊、集成電路)和其內(nèi)存儲的數(shù)據(jù)(例如用戶數(shù)據(jù))的多種功能。例如,NVM接口 118可以解釋來自SoC控制電路112的讀取或?qū)懭胝埱?,?zhí)行損耗均衡,以及生成與NVM 120的總線協(xié)議相兼容的讀取和編程指令。雖然將NVM接口 118和SoC控制電路112示出為分開的模塊,但這僅僅是為了簡化關(guān)于本發(fā)明實(shí)施例的描述。應(yīng)該理解的是,這些模塊可以共享各硬件部件、各軟件部件或是這二者。例如,SoC控制電路112可以為NVM接口 118執(zhí)行基于軟件的存儲器驅(qū)動器。在一些實(shí)施例中,電子設(shè)備100可以包括其中包含有NVM 120以及NVM接口 118的一些或全部(例如,如下將討論的轉(zhuǎn)換層)的目標(biāo)設(shè)備,例如閃存驅(qū)動器或安全數(shù)字(SD)卡。在這些實(shí)施例中,SoC 110或SoC控制電路112可以充當(dāng)目標(biāo)設(shè)備的主機(jī)控制器。例如,作為主機(jī)控制器,SoC 110可以向目標(biāo)設(shè)備發(fā)布讀取和寫入請求。圖2例示了根據(jù)各實(shí)施例的電子設(shè)備200的框圖,其中該圖更詳細(xì)地例示了電子設(shè)備100 (圖1)中的一些固件、軟件和/或硬件部件。電子設(shè)備200可以具有以上結(jié)合圖1所述的任何特征和功能,并且反之亦然。如所示,虛線標(biāo)定的是分層。應(yīng)該理解的是,關(guān)于哪些組件落入標(biāo)定線以內(nèi)的描述僅僅是示例性的,并且一個或多個部件可以隸屬于不同的層。電子設(shè)備200可以包括文件系統(tǒng)210、NVM驅(qū)動器212、NVM總線控制器216以及NVM 220。在一些實(shí)施例中,文件系統(tǒng)210和NVM驅(qū)動器212可以是軟件或固件模塊,而NVM總線驅(qū)動器216和NVM 220可以是硬件模塊。相應(yīng)地,在這些實(shí)施例中,NVM驅(qū)動器212可以代表NVM接口 218的軟件或固件方面,并且NVM總線控制器216可以代表NVM接口 218的硬件方面。文件系統(tǒng)210可以包括任何適當(dāng)類型的文件系統(tǒng),例如文件分配表(FAT)文件系統(tǒng)或擴(kuò)展分層文件系統(tǒng)(HFS+),并且可以是電子設(shè)備200的操作系統(tǒng)的一部分(例如圖1的SoC控制電路的一部分)。在一些實(shí)施例中,文件系統(tǒng)210可以包括提供頁面的邏輯至物理映射的閃速文件系統(tǒng)。在這些實(shí)施例中,文件系統(tǒng)210可以執(zhí)行如下所述的NVM驅(qū)動器212的一些或所有功能,由此,文件系統(tǒng)210和NVM驅(qū)動器212既可以是也可以不是分開的模塊。文件系統(tǒng)210可以管理應(yīng)用和操作系統(tǒng)的文件和文件夾結(jié)構(gòu)。文件系統(tǒng)210可以在電子設(shè)備200上運(yùn)行的應(yīng)用或操作系統(tǒng)的控制下工作,并且可以在應(yīng)用或操作系統(tǒng)請求從NVM 220中讀取信息或向其存入信息時向NVM驅(qū)動器212提供讀取和寫入命令。連同每一個讀取或?qū)懭朊睿募到y(tǒng)210還可以提供一邏輯地址以指示用戶數(shù)據(jù)應(yīng)被讀取或是寫入的位置,例如邏輯頁面地址或是具有頁面偏移的LBA。文件系統(tǒng)210可以向不與NVM 220直接兼容的NVM驅(qū)動器212提供讀取和寫入請求。例如,邏輯地址可以使用基于硬驅(qū)動的系統(tǒng)典型遵守的規(guī)約或協(xié)議。與閃存不同,基于硬驅(qū)動的系統(tǒng)可以在不先執(zhí)行塊擦除的情況下蓋寫存儲單元。此外,硬驅(qū)動可以不需要損耗均衡處理來提高設(shè)備的使用壽命。因此,NVM接口 218可以執(zhí)行存儲器特定的功能、廠家特定的功能或是所有這兩種功能,從而以適合NVM220的方式來處理文件系統(tǒng)請求以及執(zhí)行其他管理功能。NVM驅(qū)動器212可以包括轉(zhuǎn)換層214。在一些實(shí)施例中,轉(zhuǎn)換層214可以是或者包括閃速轉(zhuǎn)換層(FTL)。對于寫入命令,轉(zhuǎn)換層214可以將所提供的邏輯地址映射成NVM 220上的已擦除的空閑物理位置。對于讀取命令,轉(zhuǎn)換層214可以使用所提供的邏輯地址來確定存儲了被請求的數(shù)據(jù)的物理地址。由于每一個NVM有可能依照NVM的大小或廠家而具有不同的布局,因此,這種映射操作有可能是特定于存儲器和/或廠家的。除了邏輯-物理地址映射之外,轉(zhuǎn)換層214還可以執(zhí)行其他任何適當(dāng)?shù)墓δ?。舉例來說,轉(zhuǎn)換層214可以執(zhí)行閃速轉(zhuǎn)換層典型具有的其他任何功能,例如垃圾收集(GC )和損耗均衡。舉例來說,轉(zhuǎn)換層214可以通過執(zhí)行垃圾收集來釋放已被編程的NVM 220的塊,以便進(jìn)行擦除。舉例來說,一旦被釋放并擦除,各存儲單元則可用于存儲接收自文件系統(tǒng)210的新的用戶數(shù)據(jù)。在一些情況中,GC處理可以包括將有效數(shù)據(jù)從已編程塊拷貝至具有已擦除的存儲單元的另一個塊,籍此使已編程塊中的有效數(shù)據(jù)無效。一旦使已編程塊中的所有存儲單元無效,則轉(zhuǎn)換層214可以指引總線控制器216對所述已編程塊執(zhí)行擦除操作。這里使用的“有效數(shù)據(jù)”可以是指響應(yīng)于與一個或多個邏輯地址(例如LBA)相對應(yīng)的最近的寫入命令而被編程的用戶數(shù)據(jù),并且由此可以是用于一個或多個邏輯地址的用戶數(shù)據(jù)的有效版本。NVM驅(qū)動器212可以與NVM總線控制器216對接,以便完成NVM存取命令(例如編程、讀取以及擦除命令)??偩€控制器216可以充當(dāng)對接至NVM 220的硬件接口,并且可以使用NVM 220的總線協(xié)議、數(shù)據(jù)速率以及其他規(guī)范來與NVM 220進(jìn)行通信。NVM接口 218可以基于存儲器管理數(shù)據(jù)來管理NVM 220,所述數(shù)據(jù)在這里有時也被稱為“元數(shù)據(jù)”。元數(shù)據(jù)可以是由NVM驅(qū)動器212生成的,或者可以是由在NVM驅(qū)動器212的控制下操作的模塊生成的。舉例來說,元數(shù)據(jù)可以包括用于管理如下的任何信息:邏輯與物理地址之間的映射、壞塊管理、損耗均衡、用于檢測或糾正數(shù)據(jù)錯誤的糾錯碼(ECC)數(shù)據(jù)或是其任何組合。所述元數(shù)據(jù)可以連同用戶數(shù)據(jù)包括文件系統(tǒng)提供的數(shù)據(jù),例如邏輯地址。于是一般而言,“元數(shù)據(jù)”可以是指關(guān)于用戶數(shù)據(jù)或是與用戶數(shù)據(jù)相關(guān)的任何信息,抑或是通常被用于管理非易失性存儲器的操作和存儲單元的任何信息。
NVM接口 218可以被配置成在NVM 220中存儲元數(shù)據(jù)。在一些實(shí)施例中,NVM接口218可以將與用戶數(shù)據(jù)相關(guān)聯(lián)的元數(shù)據(jù)存儲在其中存儲有用戶數(shù)據(jù)的相同存儲單元(例如頁面)。舉個例子,NVM接口 218可以在NVM 220的一個或多個存儲單元存儲用戶數(shù)據(jù)、相關(guān)聯(lián)的邏輯地址以及關(guān)于用戶數(shù)據(jù)的ECC數(shù)據(jù)。NVM接口 218還可以在相同的存儲單元內(nèi)存儲與用戶數(shù)據(jù)相關(guān)的其他類型的元數(shù)據(jù)。NVM接口 218可以存儲邏輯地址,由此在NVM 220通電時或在NVM 220操作期間,電子設(shè)備200可以確定駐留在該存儲單元處的數(shù)據(jù)。更具體地,由于文件系統(tǒng)210可以依照用戶數(shù)據(jù)的邏輯地址而不非其物理位置來引用該用戶數(shù)據(jù),因此NVM接口 218可以將用戶數(shù)據(jù)與邏輯地址存儲在一起,以保持其關(guān)聯(lián)性。由此,舉例來說,即便在NVM 220中保持物理-邏輯映射的索引表過時,NVM接口 218也還是可以在電子設(shè)備200通電或在引導(dǎo)之時確定恰當(dāng)?shù)挠成洹Mǔ?,?dāng)系統(tǒng)在系統(tǒng)操作期間遭遇到錯誤(例如不可恢復(fù)的NVM錯誤,文件系統(tǒng)錯誤,或是常規(guī)系統(tǒng)錯誤)時,有可能會在NVM中存儲的文件的文件系統(tǒng)視圖與NVM中存儲的實(shí)際文件之間出現(xiàn)分歧。舉例來說,在不徹底的重新引導(dǎo)期間,文件系統(tǒng)有可能已經(jīng)為文件分配了 LBA (例如元數(shù)據(jù)已被更新以反映文件已被下載),但是該文件卻仍舊未被編程至NVM。在此類情形下,文件系統(tǒng)有可能假設(shè)一個或多個LBA可用(例如一個或多個LBA與NVM中存儲的可校正用戶數(shù)據(jù)相關(guān)聯(lián)),但是所述一個或多個LBA實(shí)際有可能是不可用的。這里使用的“不可用LBA”可以指的是未被分配/未映射(例如不與NVM中存儲的用戶數(shù)據(jù)相關(guān)聯(lián)的LBA)或是已知不可校正(例如與所述LBA相關(guān)聯(lián)的用戶數(shù)據(jù)的糾錯碼不起作用)的LBA。在稍后的某一時刻,當(dāng)文件系統(tǒng)需要訪問一個或多個LBA時,該系統(tǒng)有可能發(fā)現(xiàn)相關(guān)聯(lián)的用戶數(shù)據(jù)遺失或損壞。于是,文件系統(tǒng)有可能嘗試恢復(fù)與一個或多個LBA相關(guān)聯(lián)的用戶數(shù)據(jù)。然而,該處理有可能會對用戶體驗(yàn)產(chǎn)生負(fù)面影響。在一些實(shí)施例中,與等待用戶截取分歧不同,系統(tǒng)可以在系統(tǒng)操作期間發(fā)起一個完整的NVM掃描。通過將關(guān)于LBA可用性的文件系統(tǒng)視圖與NVM掃描結(jié)果相比較,系統(tǒng)能夠檢測出分歧。這會是一個耗時的處理,并且由于系統(tǒng)需要充分地響應(yīng)于應(yīng)用請求,因此還會在系統(tǒng)操作的同時造成問題。相應(yīng)地,為了避免這些性能問題,系統(tǒng)可以在一較早時刻發(fā)起協(xié)調(diào)處理,尤其是在系統(tǒng)引導(dǎo)期間。這樣可以允許在對系統(tǒng)性能影響最小的情況下執(zhí)行協(xié)調(diào)。更具體地,由于文件系統(tǒng)在引導(dǎo)期間尚未必須對來自應(yīng)用的讀取和寫入請求做出響應(yīng),因此該系統(tǒng)有足夠的時間來執(zhí)行協(xié)調(diào)處理。由此,可以在系統(tǒng)變得全面操作之前確定可用LBA的基線,并且系統(tǒng)訪問可被推延,直至系統(tǒng)達(dá)到一個已知良好的狀態(tài)。此外,由于協(xié)調(diào)處理應(yīng)對的僅僅是存儲在易失性存儲器中的小型數(shù)據(jù)結(jié)構(gòu),因此,與完整地將NVM讀取一遍的處理相比,該協(xié)調(diào)處理可被快得多地執(zhí)行?,F(xiàn)在參考圖3,該圖示出的是在系統(tǒng)引導(dǎo)期間協(xié)調(diào)數(shù)據(jù)可用性的處理300。處理300可以始于步驟302,并且在步驟304,NVM驅(qū)動器(例如圖2的NVM驅(qū)動器212)可被枚舉。更具體地,在枚舉期間可以獲取存儲在易失性存儲器(例如圖1的存儲器114)中的NVM驅(qū)動器映射。所述NVM驅(qū)動器映射可以包括NVM中的LBA的實(shí)際可用性。NVM驅(qū)動器的枚舉可以通過掃描NVM (例如圖1的NVM 120或圖2的NVM 220)來執(zhí)行。例如,NVM接口(例如圖1的NVM接口 118或圖2的NVM接口 218)可以讀取存儲在NVM中的上下文信息,其中所述上下文信息包括邏輯至物理映射。然后,NVM接口可以將邏輯至物理映射加載到易失性存儲器中。在一些情況中,NVM接口可以識別具有未被上下文信息捕捉的邏輯至物理映射的一個或多個塊(例如最近更新的塊)。由此,NVM接口可以掃描一個或多個塊的塊TOC,以便更新易失性存儲器中的邏輯至物理映射。在一些實(shí)施例中,更新的邏輯至物理映射可被存儲在合適的數(shù)據(jù)結(jié)構(gòu)中,例如樹或映射表?;贜VM驅(qū)動器枚舉的結(jié)果(例如更新的邏輯至物理映射),NVM接口可以獲取能夠指示NVM中的LBA的可用性的NVM驅(qū)動器映射。在下文中將會結(jié)合圖6和7來更詳細(xì)地討論樹和NVM驅(qū)動器映射。在其他實(shí)施例中,NVM接口可以通過直接掃描NVM來獲取NVM驅(qū)動器映射(例如通過檢查存儲在NVM中的一個或多個標(biāo)記的狀態(tài))。以下將會結(jié)合圖8對該處理進(jìn)行更詳細(xì)的討論。NVM驅(qū)動器映射可以采用任何合適的形式。舉例來說,現(xiàn)在參考圖4,該圖從文件系統(tǒng)和NVM驅(qū)動器的角度示出了例示的可用性狀態(tài)映射。更具體地,NVM驅(qū)動器映射402可以指示通過NVM接口(例如,圖1的NVM接口 118或圖2的NVM接口 218)確定的LBA范圍1-5的可用性。如所示,可用的LBA(例如與NVM中存儲的可校正用戶數(shù)據(jù)相關(guān)聯(lián)的LBA)是用水平線指示的,而不可用的LBA (例如未映射或不可校正的LBA)則是用空白空格指示的。本領(lǐng)域技術(shù)人員將會了解,NVM驅(qū)動器映射402可以提供任何適當(dāng)數(shù)量的LBA (例如系統(tǒng)中的所有LBA)的可用性。為了簡單起見,在圖4中僅示出了 NVM驅(qū)動器映射的一個子集。NVM驅(qū)動器映射402可以作為任何合適的數(shù)據(jù)結(jié)構(gòu)而被存儲在易失性存儲器(例如圖1的存儲器114)中,其中舉例來說,所述數(shù)據(jù)結(jié)構(gòu)可以是位圖、映射表或是范圍列表。在一些實(shí)施例中,NVM驅(qū)動器映射402的每一個條目都可以對應(yīng)于單個比特。也就是說,所述位圖的每一個條目都可以存儲一個二進(jìn)制值(例如O或I ),其中每一個二進(jìn)制值都可以對應(yīng)于相關(guān)聯(lián)的LBA的可用性狀態(tài)(例如可用或不可用)。作為替換,所述位圖的每一個條目可以對應(yīng)于多個比特,并且由此可以存儲與相關(guān)聯(lián)的LBA的可用性狀態(tài)相關(guān)的附加信息(例如LBA是可用、不可用-未映射還是不可用-不可校正)。由于NVM驅(qū)動器映射402僅需要存儲LBA的可用性,因此NVM驅(qū)動器映射402可以在易失性存儲器中占用相對較小的空間?;剡^來參考圖3,在步驟306,文件系統(tǒng)(例如圖2的文件系統(tǒng)210)可被掛載。在掛載處理期間,從文件系統(tǒng)日志中可以生成文件系統(tǒng)分配狀態(tài)。該文件系統(tǒng)分配狀態(tài)可以指示LBA可用性的文件系統(tǒng)視圖。舉例來說,再次參考圖4,文件系統(tǒng)分配狀態(tài)404可以代表LBA范圍1-5的可用性的文件系統(tǒng)視圖。與NVM驅(qū)動器映射402相似,文件系統(tǒng)分配狀態(tài)404可以作為任何合適的數(shù)據(jù)結(jié)構(gòu)而被存儲,例如位圖、映射表或范圍列表。此外,文件系統(tǒng)分配狀態(tài)404的每一個條目都可以對應(yīng)于一個或多個比特。繼續(xù)圖3的步驟308,可以執(zhí)行引導(dǎo)時未映射。更具體地,文件系統(tǒng)可以向NVM驅(qū)動器提供關(guān)于當(dāng)前未映射的LBA的列表。然后,處理300可以移動到步驟310。在步驟310,可以執(zhí)行數(shù)據(jù)可用性協(xié)調(diào)處理。更具體地,在文件系統(tǒng)與NVM接口之間可以建立新的通信路徑,并且文件系統(tǒng)分配狀態(tài)與NVM驅(qū)動器映射可被相互疊加并比較,以便揭示任何分歧。由于文件系統(tǒng)分配狀態(tài)和NVM驅(qū)動器映射是存儲在易失性存儲器中的相對較小的數(shù)據(jù)結(jié)構(gòu),因此,該比較處理的執(zhí)行速度相對較快。在理想情景中,文件系統(tǒng)分配狀態(tài)和NVM驅(qū)動器映射應(yīng)該是相同的。然而,文件系統(tǒng)分配狀態(tài)與NVM驅(qū)動器映射之間的任何分歧都可以指示其中文件系統(tǒng)假設(shè)一個或多個LBA是可用的而這些LBA實(shí)際在NVM中是不可用的狀況?;谶@些分歧,文件系統(tǒng)可以啟動一個復(fù)處理,以復(fù)原與一個或多個不可用的LBA相關(guān)聯(lián)的數(shù)據(jù)。現(xiàn)在參考圖5,示出的是用于恢復(fù)數(shù)據(jù)的例示處理500。處理500可以始于步驟502,并且在步驟504,文件系統(tǒng)(例如圖2的文件系統(tǒng)210)可以在系統(tǒng)引導(dǎo)期間確定文件系統(tǒng)分配狀態(tài)(例如圖4的文件系統(tǒng)分配狀態(tài)404)。于是,在步驟506,針對文件系統(tǒng)分配狀態(tài)中的每一個可用LBA范圍,文件系統(tǒng)可以向NVM接口(例如圖1的NVM接口 118或圖2的NVM接口 218)傳送命令,以確定NVM驅(qū)動器映射(例如圖4的NVM驅(qū)動器映射402)是否具有一致狀態(tài)。在一些情況中,該命令可以采用應(yīng)用編程接口(API)命令的形式。API可以是允許軟件程序或模塊與其他軟件交互的任何合適的接口。于是,對于文件系統(tǒng)假設(shè)在文件系統(tǒng)分配狀態(tài)中分配的每一個LBA范圍而言(例如圖4的LBA范圍1-5),文件系統(tǒng)可以傳送API命令。在一些實(shí)施例中,所傳送的API命令可以具有以下格式:IsAllValid(LBA, LBA end, callback);(I),其中LBA可以對應(yīng)于LBA范圍的起始LBA,LBA_End可以對應(yīng)于LBA范圍的結(jié)束LBA,以及回調(diào)可以對應(yīng)于回調(diào)函數(shù)。該回調(diào)函數(shù)可以是使得該NVM接口能夠與文件系統(tǒng)對接的函數(shù)。在其他實(shí)施例中,所傳送的API命令可以具有以下格式:IsAllValid(LBA, LBA_end, list []) ; (2),其中LBA可以對應(yīng)于LBA范圍的起始LBA,LBA_end可以對應(yīng)于LBA范圍的結(jié)束LBA,而list[]可以對應(yīng)于其中能夠添加項(xiàng)目的列表。本領(lǐng)域技術(shù)人員將會了解,從文件系統(tǒng)傳送的命令可以具有任何合適的格式。本領(lǐng)域技術(shù)人員還會了解,與在命令中傳遞單個LBA范圍不同,文件系統(tǒng)可以在單個命令中傳送LBA范圍的列表。繼續(xù)步驟508,文件系統(tǒng)可以從NVM接口接收指示一個或多個LBA范圍具有不一致狀態(tài)的信息。也就是說,基于與NVM驅(qū)動器映射的比較,NVM接口可以確定一個或多個LBA范圍中的至少一部分是不可用的(例如未映射或不可校正)。于是,在步驟510,文件系統(tǒng)可以調(diào)用策略來復(fù)原與所述一個或多個LBA范圍相關(guān)聯(lián)的數(shù)據(jù)(例如用戶數(shù)據(jù))。為具體LBA范圍調(diào)用的策略可以基于與所述LBA范圍相關(guān)聯(lián)的文件路徑。舉例來說,如果與LBA范圍相關(guān)聯(lián)的數(shù)據(jù)是臨時數(shù)據(jù)(例如被刪除以及隨后在每次引導(dǎo)設(shè)備的時候重新創(chuàng)建的數(shù)據(jù)),那么文件系統(tǒng)可以停止復(fù)原該數(shù)據(jù)。另一方面,如果與該LBA范圍相關(guān)聯(lián)的數(shù)據(jù)是與文件系統(tǒng)相關(guān)聯(lián)的內(nèi)部數(shù)據(jù),那么文件系統(tǒng)可以使用該內(nèi)部數(shù)據(jù)來復(fù)原數(shù)據(jù)。另舉一例,如果與該LBA范圍相關(guān)聯(lián)的數(shù)據(jù)是應(yīng)用生成的數(shù)據(jù),那么文件系統(tǒng)可以調(diào)用與相應(yīng)應(yīng)用相關(guān)聯(lián)的策略來從外部或備份源恢復(fù)數(shù)據(jù)(例如向外部源發(fā)布復(fù)原命令,請求應(yīng)用備份,或是請求用戶將設(shè)備插入計(jì)算機(jī))。一旦復(fù)原了數(shù)據(jù),則文件系統(tǒng)可以重新掛載該數(shù)據(jù)。處理500于是可在步驟512結(jié)束?,F(xiàn)在參考圖6,示出的是用于確定數(shù)據(jù)可用性的處理600。處理600可以始于步驟602,并且在步驟604,NVM接口(例如圖1的NVM接口 118或圖2的NVM接口 218)能夠檢測到電子設(shè)備正在引導(dǎo)。繼續(xù)步驟606,NVM接口可以從存儲在易失性存儲器(例如圖1的存儲器114)中的數(shù)據(jù)結(jié)構(gòu)(例如樹)獲取LBA的可用性狀態(tài)。舉例來說,現(xiàn)在參考圖7,NVM接口可以使用樹700來獲取LBA的可用性狀態(tài)。樹700可以包括多個節(jié)點(diǎn),其中每一個節(jié)點(diǎn)都可以具有用于存儲分配目的的一致大小(例如,每一個節(jié)點(diǎn)都可以具有64字節(jié)的固定大小)。為了簡單起見,樹700被示出為包括少量節(jié)點(diǎn)。由此,樹700中的虛線框可以指示沒有詳細(xì)示出的樹700的其他節(jié)點(diǎn)。此外,樹700的每一個節(jié)點(diǎn)都可以包括一個或多個條目。舉例來說,如圖7所示,節(jié)點(diǎn)702可以包括兩個條目(例如條目704和706)。節(jié)點(diǎn)的每一個條目都可以與多個字段相關(guān)聯(lián)。例如,樹700的每一個條目都可以與LBA范圍712(例如壓縮行程編碼(rle-壓縮)范圍)以及頁面地址714相關(guān)聯(lián)。此外,樹700的每一個條目都可以包括一個具有特定令牌值的指針字段716。本領(lǐng)域技術(shù)人員將會了解,樹700的每一個條目704-710都可以包括圖7中未示出的附加字段。然而為了簡單起見,在這里只為樹700中的每一個條目顯示了二個字段。在一些實(shí)施例中,條目的每一個指針字段都可以具有與節(jié)點(diǎn)指針、NVM指針、NVM未映射指針或是NVM不可校正指針相對應(yīng)的值。例如,樹700的條目708被示出為包括節(jié)點(diǎn)指針720 (例如指向另一個節(jié)點(diǎn)730的指針)。作為另一個示例,條目706被示出為包括與NVM的一物理地址相對應(yīng)的NVM指針722。作為另一個示例,條目704可以包括NVM未映射指針724,所述指針可以是指向NVM的指針。然而,NVM未映射指針724還可以表明相關(guān)聯(lián)的條目704對應(yīng)的是未映射的空間。作為另一個示例,條目710被示出為包括NVM不可校正指針726,所述指針同樣可以是指向NVM的指針。NVM不可校正指針726可以表明相關(guān)聯(lián)的條目710對應(yīng)的是不可校正的空間。在一些實(shí)施例中,在垃圾收集(“GC”)處理期間可以更新樹700中的指針。例如,在轉(zhuǎn)換層(例如圖2的轉(zhuǎn)換層214)正對NVM的已編程塊執(zhí)行GC的同時,該轉(zhuǎn)換層有可能在讀取塊中的有效數(shù)據(jù)時發(fā)現(xiàn)該數(shù)據(jù)是不可校正的。隨后,轉(zhuǎn)換層可以丟棄該數(shù)據(jù),并且將樹700中的相關(guān)聯(lián)的指針更新成NVM不可校正指針。通過為樹700中的指針保持不同的令牌值,樹700可以保持與LBA的分配狀態(tài)(例如已映射/未映射)以及不可校正狀態(tài)相關(guān)的信息。由此,通過檢測樹700的指針的不同令牌值,NVM接口可以獲取NVM驅(qū)動器映射(例如圖4的NVM驅(qū)動器映射402)。更具體地,與NVM指針相關(guān)聯(lián)的LBA可被認(rèn)為是可用LBA,而與NVM未映射指針以及NVM不可校正指針相關(guān)聯(lián)的LBA可被認(rèn)為不可用的LBA?;剡^來參考圖6,在步驟608,NVM接口可以接收來自文件系統(tǒng)(例如圖2的文件系統(tǒng)210)的與LBA范圍的數(shù)據(jù)可用性相關(guān)的請求。如先前結(jié)合處理500 (圖5)所述,該請求可以采用API命令的形式。然后,在步驟610,NVM接口可以基于LBA的可用性狀態(tài)(例如基于與諸如圖4的NVM驅(qū)動器映射402之類的NVM驅(qū)動器映射的比較)來確定LBA范圍的至少一部分是否不可用(例如未映射或不可校正)。在步驟610,如果NVM接口確定LBA范圍的至少一部分是可用的,那么處理600可以在步驟612結(jié)束。在步驟610,如果相反地NVM接口確定LBA范圍的至少一部分不可用,那么處理600可以移動至步驟614。舉例來說,響應(yīng)于來自文件系統(tǒng)的關(guān)于圖4的LBA范圍4的數(shù)據(jù)可用性的請求,NVM接口可以確定NVM驅(qū)動器映射402中的LBA范圍4的一部分不可用(例如LBA范圍4a與LBA范圍4b之間的部分)。于是,在步驟614,NVM接口可以向文件系統(tǒng)傳送指示LBA范圍的至少一部分不可用的信息。NVM接口可以采用任何合適方式來向文件系統(tǒng)告知這一不可用。在一些實(shí)施例中,NVM接口可以調(diào)用回調(diào)函數(shù)(例如,所述回調(diào)函數(shù)可以由文件系統(tǒng)發(fā)布的初始API命令提供)。在一些情況中,回調(diào)函數(shù)可以在每次檢測到LBA范圍的不可用部分時被調(diào)用。作為替換,無論在LBA范圍中檢測到多少數(shù)量的不可用部分,所述回調(diào)函數(shù)都只被調(diào)用一次。在其他實(shí)施例中,NVM接口可以將該至少一個LBA范圍附加于與API命令相關(guān)聯(lián)的列表(例如,所述列表可以與文件系統(tǒng)發(fā)布的初始API命令相關(guān)聯(lián))。隨后,所述NVM接口可以將該列表傳送至文件系統(tǒng)。在一些情況下,NVM接口可以在所有不可用LBA已被發(fā)現(xiàn)并被附加于列表之后傳送該列表。作為替換,NVM接口也可以一有LBA范圍被添加至列表便傳送該列表。NVM接口可以向文件系統(tǒng)傳送與LBA不可用性相關(guān)的通用或?qū)S眯畔?。例如,NVM接口可以提供與LBA范圍的不可用性相關(guān)的通用信息。作為替換,NVM接口可以提供與LBA范圍中的哪些部分不可用相關(guān)的專用信息。在傳送了所述信息之后,處理600可以在步驟612結(jié)束。因此,通過在系統(tǒng)引導(dǎo)期間協(xié)調(diào)LBA數(shù)據(jù)可用性的文件系統(tǒng)視圖與從數(shù)據(jù)結(jié)構(gòu)獲取的LBA的可用性狀態(tài),NVM接口能在較早的時刻向文件系統(tǒng)傳達(dá)任何不一致性。這使得文件系統(tǒng)能夠在系統(tǒng)引導(dǎo)期間處理所述不一致性,而不是等到系統(tǒng)全面開始工作之后。在一些實(shí)施例中,并非使用樹來獲取關(guān)于LBA可用性的信息(例如一具體LBA是否不可校正),NVM接口可以通過直接掃描NVM來獲取NVM驅(qū)動器映射(例如通過檢查NVM中存儲的一個或多個標(biāo)記的狀態(tài))。例如,LBA的不可校正狀態(tài)可被直接保持在NVM中?,F(xiàn)在轉(zhuǎn)到圖8,示出的是用于處理不可校正數(shù)據(jù)的處理800。處理800可以始于步驟802,并且在步驟804,NVM接口(例如圖1的NVM接口 118或圖2的NVM接口 218)可以確定有必要對NVM (例如圖1的NVM 120或圖2的NVM 220)的第一個塊執(zhí)行垃圾收集。于是,在步驟806,NVM接口可以檢測到存儲在第一個塊中的有效數(shù)據(jù)的至少一部分是不可校正的。處理800隨后可以移動至步驟808。在步驟808,NVM接口可以令牌化或移動有效數(shù)據(jù)至NVM的第二塊。舉例來說,在一些實(shí)施例中,NVM接口可以將有效數(shù)據(jù)移動至第二塊。在其他實(shí)施例中,NVM接口可以令牌化不可校正的數(shù)據(jù)。也就是說,NVM接口分配有效數(shù)據(jù)中的該至少一部分的不可校正狀態(tài)作為邏輯至物理映射系統(tǒng)中的令牌值。繼續(xù)至步驟810,NVM接口可以在NVM上存儲令牌值,或者置位一個或多個頁面中的一個或多個標(biāo)記和/或第二塊的塊T0C,以便指示有效數(shù)據(jù)的所述至少一部分是不可校正的。處理800于是可以在步驟812結(jié)束。由此,通過直接在NVM中保持一個或多個LBA的不可校正狀態(tài),NVM接口不必使用該信息來更新易失性存儲器中的數(shù)據(jù)結(jié)構(gòu)(例如樹)。當(dāng)NVM接口需要獲取NVM驅(qū)動器映射時,NVM接口可以為了 NVM的每一個塊掃描塊TOC。通過掃描塊TOC,NVM接口可以確定一個或多個標(biāo)記的狀態(tài),所述狀態(tài)可以指示塊中存儲的相應(yīng)數(shù)據(jù)(例如用戶數(shù)據(jù))是否是可校正的。NVM接口可以使用該信息來更新NVM驅(qū)動器映射。在其他實(shí)施例中,并非在系統(tǒng)引導(dǎo)期間執(zhí)行該協(xié)調(diào)處理,而是可以在運(yùn)行時期間執(zhí)行該協(xié)調(diào)處理,并且該協(xié)調(diào)處理可被穿插以系統(tǒng)輸入/輸出請求(例如讀取和寫入命令)。也就是說,系統(tǒng)可以在掛載了文件系統(tǒng)并且完成了運(yùn)行時去映射之后在不執(zhí)行數(shù)據(jù)可用性協(xié)調(diào)的情況下行進(jìn)至運(yùn)行時。在一些情況中,在運(yùn)行時期間,系統(tǒng)可以拖延針對某些尚未被協(xié)調(diào)的LBA范圍的讀取命令。然后,一旦發(fā)生特定事件(例如當(dāng)NVM驅(qū)動器首次空閑時,當(dāng)NVM驅(qū)動器發(fā)現(xiàn)不可校正數(shù)據(jù)時,和/或在垃圾收集期間),則可以執(zhí)行數(shù)據(jù)可用性協(xié)調(diào)處理。應(yīng)該理解的是,圖3、5、6和8的處理300、500、600以及800可以由系統(tǒng)(例如圖1的電子設(shè)備100或圖2的電子設(shè)備200)中的一個或多個部件執(zhí)行。例如,這些處理中的至少一些步驟可以由控制電路(例如圖1的SoC控制電路112)執(zhí)行。此外還應(yīng)該理解,圖3、5、6和8的處理300、500、600以及800僅僅是說明性的。在
不脫離本發(fā)明范圍的情況下,這其中任何步驟都是可被移除、修改或組合的,并且任何附加步驟都是可以添加的。本發(fā)明的上述實(shí)施例是出于例示而非限制的目的呈現(xiàn)的。
權(quán)利要求
1.一種用于確定數(shù)據(jù)可用性的方法,該方法包括: 在系統(tǒng)引導(dǎo)期間掃描非易失性存儲器(NVM)以枚舉NVM驅(qū)動器; 基于所枚舉的NVM驅(qū)動器獲取NVM驅(qū)動器映射; 安裝文件系統(tǒng); 接收來自文件系統(tǒng)的關(guān)于至少一個邏輯塊地址(LBA)范圍的數(shù)據(jù)可用性的請求; 基于NVM驅(qū)動器映射確定所述至少一個LBA范圍的至少一個部分是否不可用; 響應(yīng)于確定至少一個LBA范圍的至少一個部分不可用而向文件系統(tǒng)傳送表明所述至少一個LBA范圍的至少一個部分不可用的信息;以及 在系統(tǒng)引導(dǎo)期間發(fā)起恢復(fù)處理來復(fù)原與所述至少一個LBA范圍的所述至少一個部分相關(guān)聯(lián)的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其中NVM驅(qū)動器映射是位圖、映射表以及范圍列表中的至少一種。
3.根據(jù)權(quán)利要求1或2所述的方法,其中該掃描還包括: 讀取存儲在NVM中的上下文信息,其中所述上下文信息包括邏輯至物理映射;以及 將邏輯至物理映射加載到易失性存儲器中。
4.根據(jù)權(quán)利要求3所述的方法,還包括: 識別帶有尚未被上下文信息捕捉的邏輯至物理映射的至少一個塊;以及 掃描所述至少一個塊的塊 內(nèi)容表(TOC)以更新易失性存儲器中的邏輯至物理映射。
5.根據(jù)權(quán)利要求4所述的方法,還包括:基于經(jīng)更新的邏輯至物理映射獲取NVM驅(qū)動器映射。
6.根據(jù)權(quán)利要求1或2所述的方法,其中NVM包括多個塊。
7.根據(jù)權(quán)利要求6所述的方法,還包括: 針對多個塊中的每一個塊,掃描該塊的塊TOC以便確定標(biāo)記狀態(tài),其中所述標(biāo)記狀態(tài)指示存儲在該塊中的相應(yīng)數(shù)據(jù)是否是可校正的;以及基于所述標(biāo)記狀態(tài)來更新NVM驅(qū)動器映射。
8.根據(jù)權(quán)利要求1或2所述的方法,還包括:通過調(diào)用回調(diào)函數(shù)向文件系統(tǒng)傳送所述信息。
9.根據(jù)權(quán)利要求1或2所述的方法,還包括: 將所述至少一個LBA范圍附加于列表;以及 將該列表傳送到文件系統(tǒng)。
10.一種系統(tǒng),包括: 非易失性存儲器(NVM); 操作以保持NVM驅(qū)動器映射的存儲器接口 ;以及 文件系統(tǒng),操作用于: 在系統(tǒng)引導(dǎo)期間確定文件系統(tǒng)分配狀態(tài); 針對文件系統(tǒng)分配狀態(tài)中的每一個可用邏輯塊地址(LBA)范圍,向存儲器接口傳送應(yīng)用編程接口(API)命令,以確定NVM驅(qū)動器映射是否具有一致狀態(tài); 從存儲器接口接收表明至少一個LBA范圍具有不一致狀態(tài)的信息;以及 調(diào)用策略以在系統(tǒng)引導(dǎo)期間復(fù)原與所述至少一個LBA范圍相關(guān)聯(lián)的數(shù)據(jù)。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中文件系統(tǒng)操作以將文件系統(tǒng)分配狀態(tài)存儲成位圖、映射表以及范圍列表中的至少一種。
12.根據(jù)權(quán)利要求10或11所述的系統(tǒng),其中用于復(fù)原數(shù)據(jù)的所述策略基于與所述至少一個LBA范圍相關(guān)聯(lián)的文件路徑。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其中文件系統(tǒng)操作用于: 確定與所述至少一個LBA范圍相關(guān)聯(lián)的所述數(shù)據(jù)是臨時數(shù)據(jù);以及 停止復(fù)原該數(shù)據(jù)。
14.根據(jù)權(quán)利要求12所述的系統(tǒng),其中文件系統(tǒng)操作用于: 確定與所述至少一個LBA范圍相關(guān)聯(lián)的所述數(shù)據(jù)是與文件系統(tǒng)相關(guān)聯(lián)的內(nèi)部數(shù)據(jù); 使用該內(nèi)部數(shù)據(jù)來復(fù)原所述數(shù)據(jù);以及 重新安裝復(fù)原的所述數(shù)據(jù)。
15.根據(jù)權(quán)利要求12所述的系統(tǒng),其中文件系統(tǒng)操作用于: 確定與所述至少一個LBA范圍相關(guān)聯(lián)的所述數(shù)據(jù)是應(yīng)用生成的數(shù)據(jù); 調(diào)用與特定應(yīng)用相關(guān)聯(lián)的策略來恢復(fù)所述數(shù)據(jù);以及重新安裝恢復(fù)的所述數(shù)據(jù)。
16.一種操作用于在設(shè)備引導(dǎo)期間執(zhí)行數(shù)據(jù)可用性調(diào)和的存儲器接口,所述存儲器接口包括控制電路以操作用于: 從易失性存儲器中存儲的數(shù)據(jù)結(jié)構(gòu)獲取邏輯塊地址(LBA)的可用性狀態(tài); 在電子設(shè)備的引導(dǎo)期間,協(xié)調(diào)LBA數(shù)據(jù)可用性的文件系統(tǒng)視圖與從數(shù)據(jù)結(jié)構(gòu)獲取的LBA的所述可用性狀態(tài);以及 將所述文件系統(tǒng)視圖與LBA的所述可用性狀態(tài)之間的不一致性傳達(dá)給文件系統(tǒng),由此使得文件系統(tǒng)能夠在電子設(shè)備的引導(dǎo)期間處理所述不一致性。
17.根據(jù)權(quán)利要求16所述的存儲器接口,其中所述數(shù)據(jù)結(jié)構(gòu)是存儲在易失性存儲器中的樹。
18.根據(jù)權(quán)利要求16或17所述的存儲器接口,其中所述控制電路操作以檢測樹結(jié)構(gòu)是否包含指向NVM的未映射指針。
19.根據(jù)權(quán)利要求16或17所述的存儲器接口,其中所述控制電路操作以檢測樹結(jié)構(gòu)是否包含指向NVM的不可校正指針。
20.根據(jù)權(quán)利要求16或17所述的存儲器接口,其中所述控制電路操作用于: 接收來自文件系統(tǒng)的與邏輯塊地址(LBA)范圍的數(shù)據(jù)可用性相關(guān)的請求;以及 基于LBA的所述可用性狀態(tài)確定LBA范圍的至少一個部分是否不可用。
21.根據(jù)權(quán)利要求20所述的存儲器接口,其中所述控制電路操作用于: 確定LBA范圍的至少一個部分不可用;以及 向文件系統(tǒng)傳送表明LBA范圍的至少一個部分不可用的信息。
22.根據(jù)權(quán)利要求20所述的存儲器接口,其中所述控制電路操作以確定LBA范圍的至少一個部分是未映射或不可校正中的至少一種。
23.一種用于確定數(shù)據(jù)可用性的系統(tǒng),該系統(tǒng)包括: 在系統(tǒng)引導(dǎo)期間掃描非易失性存儲器(NVM)以枚舉NVM驅(qū)動器的裝置; 基于所枚舉的NVM驅(qū)動器獲取NVM驅(qū)動器映射的裝置;安裝文件系統(tǒng)的裝置; 接收來自文件系統(tǒng)的關(guān)于至少一個邏輯塊地址(LBA)范圍的可用性的請求的裝置; 基于NVM驅(qū)動器映射來確定所述至少一個LBA范圍的至少一個部分是否不可用的裝置; 響應(yīng)于確定至少一個LBA范圍的至少一個部分不可用而向文件系統(tǒng)傳送表明所述至少一個LBA范圍的至少一個部分不可用的信息的裝置;以及 在系統(tǒng)引導(dǎo)期間發(fā)起恢復(fù)處理來復(fù)原與所述至少一個LBA范圍的所述至少一個部分相關(guān)聯(lián)的數(shù)據(jù)的裝置。
24.根據(jù)權(quán)利要求23所述的系統(tǒng),其中NVM驅(qū)動器映射是位圖、映射表以及范圍列表中的至少一種。
25.根據(jù)權(quán)利要求23或24所述的系統(tǒng),其中用于掃描的裝置還包括: 讀取存儲在NVM中的上下文信息的裝置,其中所述上下文信息包括邏輯至物理映射;以及 將邏輯至物理映射加載到易失性存儲器中的裝置。
26.根據(jù)權(quán)利要求25所述的系統(tǒng),還包括: 識別帶有尚未被上下文信息捕捉的邏輯至物理映射的至少一個塊的裝置;以及 掃描所述至少一個塊的塊內(nèi)容表(TOC)以更新易失性存儲器中的邏輯至物理映射的裝置。
27.根據(jù)權(quán)利要求26所述的系統(tǒng),還包括:基于經(jīng)更新的邏輯至物理映射獲取NVM驅(qū)動器映射的裝置。
28.根據(jù)權(quán)利要求23或24所述的系統(tǒng),其中NVM包括多個塊。
29.根據(jù)權(quán)利要求28所述的系統(tǒng),還包括: 針對多個塊中的每一個塊,掃描該塊的塊TOC以便確定標(biāo)記狀態(tài)的裝置,其中所述標(biāo)記狀態(tài)指示存儲在該塊中的數(shù)據(jù)是否是可校正的;以及基于所述標(biāo)記狀態(tài)來更新NVM驅(qū)動器映射的裝置。
30.根據(jù)權(quán)利要求23或24所述的系統(tǒng),還包括:通過調(diào)用回調(diào)函數(shù)來向文件系統(tǒng)傳送所述信息的裝置。
31.根據(jù)權(quán)利要求23或24所述的系統(tǒng),還包括: 將所述至少一個LBA范圍附加于列表的裝置;以及 將該列表傳送到文件系統(tǒng)的裝置。
全文摘要
提供了用于確定數(shù)據(jù)可用性的方法和系統(tǒng)。用于掛載時協(xié)調(diào)數(shù)據(jù)可用性的系統(tǒng)和方法被公開。在系統(tǒng)引導(dǎo)期間,可以枚舉非易失性存儲器(“NVM”),并且可以獲取NVM驅(qū)動器映射。所述NVM驅(qū)動器映射可以包括NVM中LBA的實(shí)際可用性。文件系統(tǒng)于是可被掛載,并且生成產(chǎn)生文件系統(tǒng)分配狀態(tài)。所述文件系統(tǒng)分配狀態(tài)能夠指示LBA可用性的文件系統(tǒng)視圖。隨后,可以執(zhí)行數(shù)據(jù)可用性協(xié)調(diào)處理。也就是說,文件系統(tǒng)分配狀態(tài)和NVM驅(qū)動器映射可被相互疊加并比較,以揭示任何分歧。
文檔編號G06F12/02GK103164342SQ201210534198
公開日2013年6月19日 申請日期2012年12月12日 優(yōu)先權(quán)日2011年12月12日
發(fā)明者D·J·波斯特, N·J·瓦卡拉特, V·科麥爾尼斯基 申請人:蘋果公司