具有多个处理栈的存储控制器中使用区域锁定转移I/O请求的方法和结构与流程

文档序号:13550634阅读:178来源:国知局
具有多个处理栈的存储控制器中使用区域锁定转移I/O请求的方法和结构与流程
本发明总体上涉及存储控制器,并且,更具体地,涉及使用区域锁定来将I/O请求转移到存储控制器的多个I/O处理栈中的一个的方法与结构。相关专利本发明涉及下列共同拥有的美国专利和/或专利申请(在本文中被总称为“相关专利”):提交于2010年4月14日的名称为“APPARATUSANDMETHODSFORTREEMANAGEMENTASSISTCIRCUITINASTORAGESYSTEM”的美国专利申请12/760,415,提交于2010年4月14日的名称为“APPARATUSANDMETHODSFORREGIONLOCKMANAGEMENTASSISTCIRCUITINASTORAGESYSTEM”的美国专利申请12/760,434,以及提交于2005年10月19日的名称为“METHODSANDSYSTEMSFORLOCKINGINSTORAGECONTROLLERS”的美国专利7,529,902。通过引用的方式将上述所有专利并入本文。

背景技术:
存储控制器是这样一种装置,其适于从一个或多个主机系统接收I/O请求并处理所接收的请求,以存储或取回(retrieve)与该存储控制器耦接的存储装置上的数据。例如,RAID(独立驱动器的冗余阵列)存储控制器管理一个或多个逻辑卷,每个逻辑卷都包括一个或多个物理存储装置的若干部分。RAID控制器将逻辑卷的逻辑块地址映射到对应的存储装置的物理块,并提供用于增强可靠性和/或性能的数据的冗余和/或分条(striping)(根据针对逻辑卷定义的特定RAID存储管理技术的冗余和分条策略)。在处理I/O请求中,高性能存储控制器采用高速缓冲存储器来增强该存储控制器的性能是很普遍的。例如,由主机系统写到逻辑卷的数据可以被存储在存储控制器的高速缓冲存储器中,从而通过从高速缓冲存储器取回所述请求的数据可以满足后续的读取I/O请求,通过从高速缓冲存储器取回所请求的数据比通过从包含逻辑卷的存储装置取回所请求的数据要快得多。某些存储控制器可以将高速缓冲存储器作为“直写式”高速缓存来管理,其中,数据被写到高速缓冲存储器和存储装置两者。某些控制器可以管理处于“回写”模式的高速缓冲存储器,其中,数据被写到高速缓冲存储器并且仅在稍后的某一时间被提交(post)/清洗(flush)到存储装置(例如,当存储控制器不是那么忙于处理I/O请求时)。在回写模式中,可能会存在这样的数据(被称为“脏数据”),其驻留在高速缓冲存储器中但还未存储在存储装置上。某些存储控制器(例如,高性能RAID存储控制器)在存储控制器内提供多个处理通路(pathway)或栈以用于处理I/O请求。例如,某些来自LSI公司的存储控制器提供“快速路径”处理电路(例如,第一处理通路/栈),其可以与固件处理栈(例如,通常被实现为由该控制器的通用或专用处理器执行的固件指令的第二/传统处理通路)。LSI公司快速路径处理电路与主机系统上的专用驱动器结合工作,以更快速地处理I/O请求,该I/O请求被格式化以允许快速路径电路快速处理该请求(例如,主机系统增强驱动器理解RAID映射并生成快速路径请求以直接访问下层的物理存储装置,这样允许快速路径电路快速地处理I/O请求)。固件处理通路适于处理从任何主机系统接收的任何类型的I/O请求(例如,用于处理I/O请求,而不管其是否格式化为快速路径I/O请求)。固件栈使用执行指令并提供完全RAID映射和管理的通用处理器来处理各种一般化的处理。这样,尽管更灵活,但是固件处理栈处理I/O请求比快速路径电路慢得多。在具有多个处理栈(例如,具有快速路径电路通路和固件处理栈)的这样的存储控制器中,由存储控制器进行的某些初始处理需要确定多个处理栈中的哪个适合于处理特定的I/O请求。该初始处理可以是依赖于多种因素的复杂处理。例如,如果控制存储器利用它的处于回写模式的高速缓冲存储器,那么如果当前在存储控制器的该高速缓冲存储器中存在仍未被清洗或未提交到存储装置的脏数据,则使用快速路径处理电路会造成数据完整性问题。在这样的控制器中,可以对快速路径电路进行最佳调节,从而使得其不知道高速缓冲存储器的内容,这样,可以将数据写到存储装置,如果脏数据被清洗,那么该存储装置稍后可能被覆写。或者,由于对于快速路径电路所访问的块,在高速缓冲存储器中当前存储有脏数据(更加新的数据),因此快速路径电路可能从存储装置读取不是最新的数据。此外,例如,如果固件处理栈保持在来自逻辑卷或特定存储装置的数据的存储或取回中要避免的坏块的列表,那么快速路径处理电路可能不知道坏块的列表,并且由于试图访问潜在的坏块,因此可能会再次造成数据完整性问题。快速路径电路可能试图读或写数据到这样的坏块,仅有固件处理栈知道该坏块可能是坏的。还可能出现其它的情形,其中,固件I/O请求处理栈当前处于某种优化中,诸如结合(coalescing)较小的I/O请求以形成全带写(full-stripewrites)、针对流I/O请求的优化等。这些以及其它原因可能会造成对存储控制器的某一个I/O请求处理器优先于另一个I/O请求处理器,而不管主机对请求的编码对特定处理器的指定或优选。在确定多个处理栈中的哪个最适合于处理I/O请求时,考虑这些各种情况会是花费时间、复杂的过程。因此,如果会出现某种或某些种情况,那么当前的技术可以简单地禁止使用多个处理栈其中的一个(例如,禁止使用LSI公司存储控制器的快速路径I/O处理电路),以避免这些或其它的潜在问题。例如,如果任何脏数据当前被存储在回写高速缓冲存储器中(不管特定的快速路径I/O请求是否可以访问该脏数据)或者任何块被固件处理栈指定为“坏块”(不管特定的快速路径I/O请求是否可以访问这些坏块),那么固件处理栈禁用快速路径处理电路,并选择通过其更慢但是更通用的处理通路来处理所有的I/O请求。在保守的设计方法中,可以简单地禁用LSI快速路径I/O处理电路,以避免由于被引导到快速路径电路的I/O请求的处理而导致的这些和其它问题。禁用快速路径I/O处理电路可能会降低存储控制器的性能。因此,在没有数据完整性的风险的情况下,有效并高效地确定哪个I/O处理栈最适于处理特定的I/O请求并将接收到的I/O请求转移到该优先选择的I/O处理栈,称为一个持续的挑战。

技术实现要素:
通过提供用于使用区域锁定来高效地将从附接的主机系统接收的I/O请求转移到控制器中的多个处理栈的其中之一的存储控制器内的结构和方法,本发明解决了上述和其它问题,从而改进了现有实用技术。控制器内的区域锁定模块允许每个处理栈针对存储装置的一块地址范围请求区域锁定。可以建立转移类型锁定请求,以标识块地址的范围,针对该范围,I/O请求应当被转移到多个处理栈中的特定的一个。在具有用于处理快速路径格式化的I/O请求的快速路径电路和用于处理任何形式的I/O请求的固件处理栈的控制器的一个示例性实施例中,固件处理栈可以请求区域锁定模块针对块地址范围建立转移类型区域锁定。该范围的块地址与高速缓存中的脏数据和/或潜在的坏块地址相关联。当快速路径电路试图锁定块的范围以处理I/O请求时,覆盖针对该I/O请求的块的范围的任意部分的转换类型锁定将使得该I/O请求被转移到固件处理栈。在一个方面中,提供了一种存储控制器,其适于与一个或多个主机系统耦接,并且适于管理与该存储控制器耦接的一个或多个存储装置上的数据。所述存储控制器包括:适于处理从附接的主机系统接收的、针对快速路径处理而格式化的I/O请求的快速路径电路,和在所述控制器的处理器上操作的固件处理栈,该固件处理栈适于处理任何格式的I/O请求。该控制器还包括与快速路径电路耦接并且与固件处理栈耦接的区域锁定模块。区域锁定模块适于接收锁定特定范围的块地址的锁定请求信号,并且还适于基于当前锁定的块地址的范围的状态,来确定所接收到的快速路径格式化的I/O请求是否应当被转移到所述固件处理栈。所述存储控制器还适于:响应于确定快速路径格式化的I/O请求应当被转移到所述固件处理栈,将快速路径格式化的I/O请求转移到所述固件处理栈以进行处理。其它方面提供了实现方法的计算机可读介质和方法本身。该方法可以在适于与一个或多个主机系统耦接并且适于与一个或多个存储装置耦接的存储控制器中进行操作。该存储控制器具有用于处理从主机系统接收的快速路径格式化的I/O请求的快速路径电路和用于处理任何格式的I/O请求的固件处理栈。该方法包括:接收快速路径格式化的I/O请求,并基于当前锁定的块地址的范围的状态,通过控制器的区域锁定模块的操作,来确定所接收的快速路径格式化的I/O请求是否应当被转移到所述固件处理栈。然后,该方法响应于快速路径格式化的I/O请求应当被转移到固件处理栈的确定,将快速路径格式化的I/O请求转移到固件处理栈以进行处理。附图说明图1是根据本发明的特征和方面增强的示例性存储控制器的框图,其提供转移类型区域锁定的管理以将I/O请求的处理从控制器的一个处理栈的转移到另一个处理栈。图2到图8是描述根据本发明的特征和方面来提供转移类型区域锁定的管理,以将I/O请求的处理从控制器的一个处理栈转移到另一个处理栈的流程图。图9是适于接收实现图2到图8的方法的计算机可读介质的存储控制器(诸如图1所示出的存储控制器)的示例性计算装置的框图。具体实施方式图1是包含适于与一个或多个主机系统120耦接并与一个或多个存储装置130耦接的增强的存储控制器100的系统的框图。主机系统120可以是生成访问存储装置130的I/O请求的任何合适的计算装置或其它系统。存储装置130可以是任何用于存储数据的合适的装置,诸如:磁或光盘驱动器、固态驱动器等。存储控制器100可以通过接口150与主机系统120耦接。接口150可以包含用于将存储控制器100与主机系统120耦接的任何合适的通信介质和协议,例如,包括:串行连接的SCSI(SAS)、并行SCSI、并行高级技术附件(PATA)、串行ATA(SATA)、外围组件互连(PCI,包括PCI的变种,诸如PCIExpress)等。存储控制器100可以经由接口152与主机系统130耦接。接口152可以包括用于将存储控制器100与存储装置130耦接的任意合适的通信介质和协议,例如,包括:并行SCSISAS、PATA、SATA、PCI、光纤信道等。存储控制器100包括快速路径电路102和固件处理栈104,两者都适于通过访问存储装置130来处理从附接的主机系统接收I/O请求。电路102和栈104两者都可以被称为处理“栈”。这样,控制器100包括多个用于处理I/O请求的栈。此外,作为设计选择的一项,可以在控制器100的实施例中提供任意数量的这样的处理栈。基于包括区域锁定的转移信息(将在下文中进一步讨论),控制器100通常可以操作用来将I/O请求从一个处理栈的转移到另一个处理栈。通过区域锁定进行的这样的转移可以被用于避免由于一个处理栈不能正确地处理I/O请求而导致数据的潜在的损坏。例如,出于性能增强和优化的目的,转移区域锁定还可以被用于使一个处理栈比对另一个处理栈更优先。固件处理栈104包括通用或专用处理器(未示出)及相关程序,以及存储用于由通用或专用处理器执行的编程指令和数据的数据存储器(未示出)。固件处理栈104的编程指令使得栈104能够从主机系统120接收根据任何合适的命令结构进行格式化的I/O请求,并处理接收到的I/O请求,以访问在存储装置130上的信息。如上所述,尽管栈104提供了处理任意的和所有的I/O请求的灵活性,包括与针对逻辑卷的I/O请求相关联的RAID存储管理,但是栈104可能会比对某些类型的I/O请求所期望的处理要慢。因此,存储控制器100还包括快速路径电路102。快速路径电路102包括被特别设计来处理从系统120内的增强驱动器接收的、被针对由快速路径电路102进行的处理进行格式化的I/O请求的电路。某些来自LSI公司的存储控制器示例说明了结合增强驱动器模块的这样的快速路径电路的使用以改进在访问数据时的存储控制器100的性能。通常,主机系统120的增强驱动器(未示出)可以访问由存储控制器100管理的针对RAID逻辑卷的映射信息,其类似于用于RAID管理的控制器100维护的映射信息。主机120的增强驱动器可以比采用固件处理栈104的存储控制器100更快地和更有效地选择性地执行必须的逻辑到物理映射。在这种情况中,针对任何需要的逻辑到物理映射或其它需要的逻辑卷管理计算,主机系统120的增强驱动器利用其自身的处理能力来准备快速路径格式化的I/O请求。然后,快速路径格式化的I/O请求被转发到存储控制器100,以用于快速路径电路102的处理。通过合适的处理器或系统总线154,固件处理栈104与高速缓冲存储器108和坏块存储器110耦接。高速缓冲存储器108和坏块存储器110每一可以包括任意的合适的存储器部件,例如,包括:动态随机存取存储器(DRAM)、闪存等。正如在本领域中通常知道的,固件处理栈104采用高速缓冲存储器108来存储预定到存储装置130的与写I/O请求相关联的数据。在管理高速缓冲存储器108的直写式模式下,固件处理栈104在高速缓冲存储器108中存储与写I/O请求相关联的写数据,并且还(基本上同时)将写数据存储在存储装置130上。于是,在苏醒(awake)时,如此存储在高速缓冲存储器108中的数据可以被固件处理栈104使用,以更快速地完成请求其数据当前被存储在高速缓冲存储器中的块地址的数据的后续读请求。另外,固件处理栈104可以标识可能是潜在坏块的特定块地址或块地址范围。在固件处理栈104内的任何合适的技术都可以被用来标识可能被认为是“坏的”的块。固件处理栈104将这些块地址记录在坏块存储器110中,以便注意这些块以在其处理I/O请求时进行规避。控制器100内的这些和其它功能可以得益于转移类型区域锁定的特征及其诸方面。在控制器100内的针对一个请求处理栈或电路的请求应当被转移到不同的处理栈或电路时的任何情形中,转移类型区域锁定的特征及其诸方面提供了以最小的开销处理来有效地进行确定。快速路径电路102和固件处理栈104两者都与控制器100的区域锁定模块106进行交互(例如,分别经由通信路径156和158)。区域锁定模块106包括用于从快速路径电路102和固件处理栈104接收锁定请求和区域锁定释放请求的任何合适的电路。区域锁定请求一般标识I/O请求处理栈需要访问的块地址的范围(即,针对读取的临时共享访问、针对某些操作的排他访问等)。例如,当控制数据电路102标识用于接收到的快速路径格式化的I/O请求的处理所需的受影响的块地址的范围时,其经由路径156向区域锁定模块106发出锁定请求。区域锁定模块106将数据结构保持在相关的区域锁定存储器(未示出)中,其标识当前被锁定到快速路径电路102或固件处理栈104的块的范围。响应于新的锁定请求,区域锁定模块106确定新请求标识的块地址的范围是否同与当前被准予的(granted)区域锁定相关联的块地址的范围的任何部分重叠。如果检测到这样的重叠,那么区域锁定模块106拒绝该锁定或推迟准予该锁定,直到诸如针对该新请求的块地址的范围同与当前被准予的锁定相关联的块地址的范围的任何部分不重叠之时。以相同的方式,当其对访问的需求完成时(即,当相关联的I/O请求已经被处理时),快速路径处理电路102和固件处理栈104还向区域锁定模块106发出锁定释放请求。在某些示例性实施例中,区域锁定模块106还可以充当初始路由部件,以检测接收到的I/O请求是被格式化为快速路径I/O请求或没有被这样格式化。在这样的示例性实施例中,模块106可以与主机120直接耦接(通过恰当的通信介质和协议),而电路102和栈104与模块106直接耦接(并因此直接耦接到主机120)。作为设计选择,控制器100的元件的这些和其它的配置和布置对本领域普通技术人员来说是显然的。根据本发明的特征和方面,固件处理栈104可以向区域锁定模块106发出转移类型锁定请求(经由路径158)。转移类型锁定请求标识这样的块地址的范围,针对所述块地址的范围的所有可能影响所标识的块地址的范围的I/O请求应当被转移到多个I/O请求处理栈中的一个或另一个(例如,快速路径电路102或固件处理栈104),以避免可能的数据损坏和/或准许用于性能增强的优化。更具体地,例如,固件处理栈104可以管理高速缓冲存储器108和坏块存储器110的使用。如上所述,当固件处理栈104管理处于回写模式的高速缓冲储器108时,与接收到的写I/O请求相关联的写数据可以被存储在高速缓冲存储器108中,并被标记为“脏数据”。当固件处理栈104将这样的脏数据存储在高速缓冲储器108中时,其还可以向区域锁定模块106发出转移类型锁定请求,以标识对应的块地址的范围,对于该对应的块地址的范围的另外的I/O请求应当被转移到固件处理栈104的。当接下来快速路径电路102试图锁定针对快速路径格式化的I/O请求的块地址的范围时,区域锁定模块106将检测被准予的转移类型锁定的重叠,并强制将快速路径格式化的请求转移到固件处理栈104,以进行进一步的处理。这样,目的地为固件处理栈已经对其获取了转移类型区域锁定的块地址的范围的快速路径格式化的I/O请求将被从快速路径电路102转移开,以便由固件处理栈104处理。如上所述,区域锁定可以由固件处理栈104出于许多原因来利用,以将快速路径格式化的I/O请求从快速路径电路102转移开,以便由固件处理栈104来处理。除了上述的避免数据损坏以外,转移区域锁定可以由固件处理栈104使用以确保可用的各种优化的适当操作,诸如:将较小的操作结合为较大的操作、I/O处理栈之间的负荷均衡、流化I/O优化等。粗体虚线箭头160和162表示由快速路径电路102接收的快速路径格式化的I/O请求的转移,以供固件处理栈104进一步处理。在某些示例性实施例中,响应于快速路径电路102在处理快速路径格式化的I/O请求前试图锁定块地址范围,区域锁定模块106可以执行转移(如虚线箭头162所示)。在另一个示例性实施例中,快速路径电路102可以请求针对要由快速路径格式化的I/O请求访问的块地址范围的它的访问锁定请求,并从区域锁定模块106接收拒绝信号,该拒绝信号指示受影响的块地址范围应当被转移到固件处理栈104,以进行进一步的处理。在这样的示例性实施例中,如虚线箭头160所示,快速路径电路102本身可以执行将快速路径格式化的I/O请求转移到固件处理栈104的处理。在某些示例性实施例中,区域锁定模块106将关于当前被准予的锁定(访问锁定以及转移类型锁定)的信息以树型结构保持,以准许对潜在的重叠的锁定请求进行快速搜索。该树型结构条目按照块地址的范围来组织,以允许通过区域锁定模块106来进行快速搜索。可以通过适当设计的区域锁定模块106内的定制电路,或者,在其它示例性实施例中,可以通过与区域锁定模块106的电路相关联的附加的定制电路逻辑,来维持该树型结构。上述的相关专利提供了用于实现这样的树型结构和适于管理这样的树型结构的定制电路的示例性细节。应当理解,这样的树型结构表示了一种可能的实施例。可以采用许多其它的数据结构和对应的控制逻辑来记录和取回关于锁定的信息。例如,出于这些目的,可以采用哈希表结构。下面针对本文中的其它附图来讨论关于快速路径格式化的I/O请求的转移和转移类型区域锁定的相关管理的方法的示例性的附加细节。本领域的普通技术人员将很容易地认识到,本发明的转移类型区域锁定的特征和方面可以被应用于具有至少两个处理栈/处理器的任意存储控制器架构(例如,LSI公司的与其固件/传统处理栈相结合的快速路径电路)。本发明的特征和方面可以有利地应用于任何如下的存储控制器架构,在该存储控制器架构中,希望进行快速决策以将请求从一个处理栈(请求名义上所针对的)转移到控制器的另一个处理栈。此外,本领域的普通技术人员将很容易地认识到可以出现在全功能存储控制器中的许多附加的和等效的元件。为了本讨论的简单和简明,在本文中省略这些附加的和等效的元件。图2到图8是描述根据本发明的特征和方面的用于管理将快速路径格式化的I/O请求从存储控制器的快速路径处理电路转移到固件处理栈的示例性方法的流程图。图2到图8方法通常可在诸如图1的存储控制器100的增强存储控制器中操作。在步骤200,增强存储控制器接收快速路径格式化的I/O请求。这样的请求可以由增强存储控制器的快速路径电路直接接收,或者最初可以由控制器的选择模块来接收,该选择模块能够操作来确定接收到的I/O请求是否被格式化为快速路径I/O请求,并且如果是,则将该请求转送到快速路径电路。在步骤202,基于被准予的锁定(尤其是基于将在下面进一步讨论的转移类型锁定)的当前状态,增强存储控制器确定快速路径格式化的I/O请求是否试图访问应当由固件处理栈处理的任何块地址。通常,快速路径电路将对增强存储控制器的区域锁定模块施加锁定请求信号,请求对在接收到的、快速路径格式化的I/O请求中标识的块地址的范围的访问。然后,区域锁定模块作出如步骤202所示的对所标识的块地址的范围是否同与任意当前准予的锁定相关联的块地址的范围重叠的决定。特别地,区域锁定模块将确定所请求的块地址的范围是否与之前由区域锁定模块准予的任何转移类型锁定重叠。如果没有识别到这样的块地址重叠,那么步骤204继续快速路径电路的正常处理,以根据快速路径格式化的I/O请求访问所标识的块地址的范围(并然后,释放由区域锁定模块准予的访问锁定)。替代地,如果区域锁定模块确定要由快速路径格式化的I/O请求访问的块地址的范围与之前被准予的转移类型锁定请求中的块地址的范围的任何部分重叠,那么接下来,步骤206可操作来将快速路径格式化的I/O请求转移到固件处理栈,以用于完成I/O请求。通过这样将快速路径格式化的I/O请求转移到增强存储控制器的固件处理栈,可以避免数据损坏,并且可以有利地利用固件处理栈优化,而无需如当前实践那般完全禁止增强存储控制器的快速路径电路。因此,对于可以由快速路径电路处理的快速路径格式化的I/O请求可以保持期望的增强存储控制器的性能水平,而应当被转移到固件处理栈的请求可以被快速地如此识别出来。图3是描述根据本发明的特征和方面的通过使用区域锁定将快速路径格式化的I/O请求从增强存储控制器的快速路径电路转移到固件处理栈的方法的示例性附加细节的流程图。图3的方法反应了由增强存储控制器的可结合增强存储控制器的区域锁定模块操作的快速路径电路的处理。在步骤300,从主机系统接收快速路径格式化的I/O请求(即,直接从主机接收,或通过增强存储控制器的初级选择部件间接地接收)。然后,步骤302,对区域锁定模块施加锁定请求信号,请求对被标识用于由快速路径格式化的I/O请求访问的块地址的范围进行访问。该块地址的范围通过接收到的快速路径格式化的I/O请求内的信息来标识。因此,被这样施加到区域锁定模块的信号可以指示针对访问锁定的请求以及受I/O请求影响的块地址的范围两者。在某些示例性实施例中,被这样施加到区域锁定模块的信号还可以包括内容信息,其足以为区域锁定模块提供将该请求转移到增强存储控制器的固件处理栈可能需要的所有信息。在步骤304,快速路径电路确定其请求的锁定是否已经被准予。在某些示例性实施例中,区域锁定模块可以向快速路径电路返回信号,以指示请求的锁定已经被准予或拒绝。如果请求的锁定已经被准予,那么步骤306和308可操作来通过快速路径电路的操作完成快速路径格式化的I/O请求的处理(步骤306),然后,通过向区域锁定模块施加恰当的释放信号来释放被准予的、访问锁定(步骤308)。在某些实施例中,如果由于所请求的要被锁定的块的范围与由固件处理栈获取的转移类型锁定重叠,那么基于在步骤302施加的锁定请求信号中提供的内容信息,区域锁定模块执行将I/O请求转移到固件处理栈所需的所有处理。在这样的实施例中,快速路径电路不需要执行进一步的处理,而是仅仅等待接收到下一个快速路径格式化的I/O请求。在其它示例性实施例中,区域锁定模块向快速路径电路返回信号,指示拒绝了它的区域锁定请求,并另外指示该拒绝是由于之前准予的转移类型区域锁定请求。在这样的示例性实施例中,接下来,步骤312可操作来将快速路径格式化的I/O请求传送或转移到固件处理栈(例如,通过快速路径电路的操作而不是通过区域锁定模块本身,I/O请求被转移到固件处理栈)。图4是提供增强存储控制器内的区域锁定模块(例如,图1的存储控制器100的区域锁定模块106)的处理的示例性附加细节的流程图。图4的处理从原理上描述了区域锁定模块响应于从增强存储控制器的快速路径电路接收的锁定请求信号的处理。可以响应于从固件处理栈接收的访问锁定请求的接收来执行类似的处理。对于本领域的普通技术人员这样的类似的处理将是明显的,因此为了本讨论的简单和简明,在本文中将其省略。响应于从快速路径电路接收到访问锁定请求,步骤400,向锁定的树型结构添加新的条目(添加在通过与每个条目相关联的块地址的范围确定的恰当的位置)。接下来,步骤402,确定锁定请求中标识的块地址的范围是否同与先前被准予的缩请求相关联的块地址的范围的任何部分重叠(即,先前被准予的任何类型的锁定请求,包括访问锁定或转移类型锁定)。如果没有,那么步骤404,针对所标识的块地址范围,将该新的锁定条目标记为准予给快速路径电路,并且发送信号通知快速路径电路继续操作以执行所述I/O请求。如果步骤402确定所请求的要被锁定的块地址的范围同与一个或多个先前被准予的锁定请求相关联的块地址的范围重叠,那么步骤406,确定任意的重叠的先前被准予的锁定请求是否是转移类型锁定。如果是,那么步骤408将新添加的锁定条目标记为用于现在已经被(很快将会被)转移到固件处理栈的I/O请求的转移锁定。在步骤408之后,或者如果步骤406确定新的锁定请求不与被准予的转移类型锁定重叠,那么处理在步骤410继续以确定是否任何其它的锁定(例如,非转移类型的,诸如访问锁定)会与从快速路径电路接收的锁定请求的块地址范围重叠。如果重叠,那么步骤412等待所有其它的这样的先前被准予的锁定被释放。在步骤412之后,或者如果步骤410确定没有其它的这样的锁定重叠,那么处理在步骤414继续进行,以确定新添加至锁定树中的条目是否已经被标记为现在转移。如果没有,那么步骤404标记用于标识块的范围该锁定条目现在已经准予快速路径电路,并且发送信号通知快速路径电路该准予,从而允许该快速路径电路继续其对快速路径格式化的I/O请求的处理。步骤414确定新的锁定条目已经被标记为现在转移,并且步骤416将新添加的锁定条目标记为对于所标识的块的范围准予固件处理栈。这样,快速路径格式化的I/O请求被转移到固件处理栈,以最终在适当的时候进行处理。快速路径电路不执行该请求的进一步的处理。在其它示例性实施例中,如上所述,区域锁定模块可以简单地发送信号通知快速路径电路,其锁定请求已经被拒绝并且该请求应当被转移到固件处理栈,从而允许快速路径电路本身来执行将该请求转移到快速固件处理栈的处理。在图4的方法中还描述了用于释放先前准予的锁定请求的处理步骤的方法。在I/O请求处理栈(例如,快速路径电路或固件处理栈)已经完成其得到准予的锁定的I/O请求的处理时,响应于从处理栈接收的适当的释放信号,步骤420释放先前准予的锁定。图5、图6和图7示出增强存储控制器的固件处理栈(例如,图1的存储控制器100的固件处理栈104)内的请求转移类型区域锁定以及响应于固件处理栈内的特定处理释放先前准予的转移类型区域锁定的处理的示例性附加细节。如上所述,当固件处理栈利用其处于回写模式的高速缓冲存储器来处理写请求时,其请求针对脏数据(即,仍未被清洗或提交到存储装置的脏数据)驻留在高速缓冲存储器中的块地址的范围准予转移类型区域锁定。图5描述响应于将脏数据存储在其高速缓冲存储器中,固件处理栈请求这样的转移类型锁定的处理的示例性附加细节。在步骤500,固件处理栈通过将数据存储在其处于回写模式的高速缓冲存储器中,来处理写I/O请求。在步骤502,固件处理栈将高速缓冲存储器中受影响的块标记为“脏数据”,以表示该高速缓冲存储器包含与仍未被提交或清洗到存储装置的块地址对应的数据。在步骤504,固件处理栈将转移类型锁定请求信号施加到区域锁定模块,以标识已经脏数据被存储到高速缓冲存储器中的块地址的范围。图6示出当脏数据被成功地清洗或提交到存储装置时,固件处理栈释放先前准予的转移类型锁定的另外的处理。在步骤600,固件处理栈执行适当的处理以将来自高速缓冲存储器的脏数据清洗或将提交到存储装置以用于持久性存储。然后,步骤602,向区域锁定模块施加转移类型锁定释放信号,以标识不再与高速缓冲存储器中的“脏数据”相关联的块地址的范围。然后,区域锁定模块可以释放先前准予的转移类型锁定。图7是描述固件处理栈针对可能表示坏块的块地址的范围请求准予转移类型锁定的处理的示例性附加细节的流程图。如上所述,固件处理栈可以响应于采用特定块或块地址的范围时遭遇的任何各种类型的错误将块指定为“坏的”。在步骤700,固件处理栈将一个或多个块地址添加到其存储在与固件处理栈相关联的坏块存储器中的坏块列表。在步骤702,固件处理栈对区域锁定模块施加转移类型锁定请求信号,以请求针对通过固件处理栈的处理被标识为“坏”块的所标识的块地址的范围准予转移类型区域锁定。图8描述当先前被标记为坏的块(通过使用对应的转移类型锁定标记为坏的块的范围)已经被成功地更新时(例如,在对先前标记的坏块进行成功的写入时),固件处理栈释放之前被准予的转移类型锁定的另外的处理。在步骤800,固件处理栈执行适当的处理以从坏块列表去除一个或多个块(例如,与完成对坏块/多个坏块的成功的写操作相关联地)。然后,步骤802,向区域锁定模块施加转移类型锁定释放信号,以标识不再与更新的坏块列表中的坏块相关联的块地址的范围。然后,区域锁定模块可以释放先前准予的转移类型锁定。本领域的普通技术人员将容易地认识到可以在诸如参考图2到图8描述的方法的全功能方法中出现的大量附加的和等效的步骤。为了本讨论的简单和简明,在本文中省略这些附加的和等效的步骤。本文中公开的实施例可以采用软件、硬件、固件或它们的各种组合的形式。在一个特定实施例中,软件被用于指引存储装置的处理系统(例如,存储控制器)来执行在本文中公开的各种操作。图9示出处理系统900(诸如图1的存储控制器100内的固件处理栈104),其可操作来执行存储在计算机可读介质中的编程指令,以执行示例性实施例中的期望的功能。处理系统900可操作来通过执行有形地实施在计算机可读存储介质912上的编程指令来执行上述操作。鉴于此,本发明的实施例可以采取可经由计算机可读介质912访问的计算机程序的形式,以提供由计算机或任何其它指令执行系统使用的程序代码。出于本描述的目的,计算机可读存储介质912可以是能够包含或存储由计算机使用的程序的任何事物。计算机可读存储介质912可以是电子装置、磁装置、光装置、电磁装置、红外装置或半导体装置。计算机可读存储介质912的例子包括:固态存储器(例如,闪存)、磁带、可移除计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘、以及光盘。光盘的当前例子包括:压缩盘只读存储器(CD-ROM)、读/写压缩盘(CD-R/W)和DVD。适于存储和/或执行程序代码的处理系统900包括通过系统总线950耦接到程序和数据存储器904和高速缓冲存储器子系统908的至少一个处理器902。程序和数据存储器904可以包括:在程序代码的实际执行期间采用的本地存储器、大容量储存器、以及高速缓冲存储器,为了降低在执行期间从大容量储存器取回代码和/或数据的次数,高速缓冲存储器提供至少某些程序代码和/或数据的临时存储。还可以包括输入/输出或I/O装置906(例如,用于与存储装置和主机系统耦接的装置)。快速路径电路908和区域锁定模块914还可以与该系统集成,以使得处理系统900能够如上所述地快速地处理快速路径格式化的I/O请求并协调块地址的锁定。虽然已经在附图和前述的描述中示出和描述了本发明,但是这样的图示和描述应当被认为是示例性的而不是限制性的。已经示出和描述了本发明的一个实施例及其较小的变型例。特别地,作为示例性软件或固件实施例示出和描述的特征可以被等效地实现为定制逻辑电路,反之亦然。期望对本发明精神内的所有改变和修改进行保护。本领域技术人员将认识到落在本发明的范围内的上述实施例的变化。因此,本发明并不限于上述的特定的例子和图示,而是,仅由下列权利要求及其等价物来限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1