CN103870210B - 具有多个处理栈的存储控制器中使用区域锁定转移i/o请求的方法和结构 - Google Patents

具有多个处理栈的存储控制器中使用区域锁定转移i/o请求的方法和结构 Download PDF

Info

Publication number
CN103870210B
CN103870210B CN201310085359.9A CN201310085359A CN103870210B CN 103870210 B CN103870210 B CN 103870210B CN 201310085359 A CN201310085359 A CN 201310085359A CN 103870210 B CN103870210 B CN 103870210B
Authority
CN
China
Prior art keywords
fast path
requests
block address
stack
locking
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310085359.9A
Other languages
English (en)
Other versions
CN103870210A (zh
Inventor
A·维纳
R·L·施费尔德
N·克里施纳姆斯
K·桑德拉尼
R·S·莫西
A·纳拉亚纳莫西
H·C·西米欧纳斯库
J·A·里佐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Avago Technologies International Sales Pte Ltd
Original Assignee
Avago Technologies Fiber IP Singapore Pte Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Avago Technologies Fiber IP Singapore Pte Ltd filed Critical Avago Technologies Fiber IP Singapore Pte Ltd
Publication of CN103870210A publication Critical patent/CN103870210A/zh
Application granted granted Critical
Publication of CN103870210B publication Critical patent/CN103870210B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

存储控制器(100)内的方法和结构,该存储控制器(100)用于使用区域锁定来有效地将从附接的主机系统接收的I/O请求转移到该控制器中的多个处理栈(102、104)的其中之一。控制器内的区域锁定模块(106)允许每个处理栈针对存储装置的一定范围的块地址请求区域锁定。转移类型锁定请求可以被建立,以标识块地址的范围,针对该范围,I/O请求应当被转移到多个处理栈中的特定的一个。

Description

具有多个处理栈的存储控制器中使用区域锁定转移I/O请求 的方法和结构
技术领域
本发明总体上涉及存储控制器,并且,更具体地,涉及使用区域锁定来将I/O请求转移到存储控制器的多个I/O处理栈中的一个的方法与结构。
相关专利
本发明涉及下列共同拥有的美国专利和/或专利申请(在本文中被总称为“相关专利”):
提交于2010年4月14日的名称为“APPARATUS AND METHODS FOR TREE MANAGEMENTASSIST CIRCUIT IN A STORAGE SYSTEM”的美国专利申请12/760,415,
提交于2010年4月14日的名称为“APPARATUS AND METHODS FOR REGION LOCKMANAGEMENT ASSIST CIRCUIT IN A STORAGE SYSTEM”的美国专利申请12/760,434,以及
提交于2005年10月19日的名称为“METHODS AND SYSTEMS FOR LOCKING INSTORAGE CONTROLLERS”的美国专利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-stripe writes)、针对流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的变种,诸如PCI Express)等。存储控制器100可以经由接口152与主机系统130耦接。接口152可以包括用于将存储控制器100与存储装置130耦接的任意合适的通信介质和协议,例如,包括:并行SCSI SAS、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请求并协调块地址的锁定。
虽然已经在附图和前述的描述中示出和描述了本发明,但是这样的图示和描述应当被认为是示例性的而不是限制性的。已经示出和描述了本发明的一个实施例及其较小的变型例。特别地,作为示例性软件或固件实施例示出和描述的特征可以被等效地实现为定制逻辑电路,反之亦然。期望对本发明精神内的所有改变和修改进行保护。本领域技术人员将认识到落在本发明的范围内的上述实施例的变化。因此,本发明并不限于上述的特定的例子和图示,而是,仅由下列权利要求及其等价物来限定。

Claims (9)

1.一种存储控制器(100),适于与一个或多个主机系统(120)耦接,并适于管理与该存储控制器耦接的一个或多个存储装置(130)上的数据,该存储控制器包括:
快速路径电路(102),该快速路径电路(102)适于处理从附接的主机系统接收的针对快速路径处理而格式化的I/O请求;
在该控制器的处理器上操作的固件处理栈(104),该固件处理栈适于处理任何格式的I/O请求;以及
与快速路径电路耦接并与固件处理栈耦接的区域锁定模块(106),该区域锁定模块适于处理来自所述快速路径电路的锁定所述存储控制器的高速缓冲存储器中指定的块地址范围的锁定请求信号,该区域锁定模块还适于基于当前锁定的块地址范围的状态来确定接收到的快速路径格式化的I/O请求是否应当被转移到固件处理栈,
其中,存储控制器适于:响应于确定快速路径格式化的I/O请求的处理应当被转移到固件处理栈,将快速路径格式化的I/O请求转移到固件处理栈以进行处理,
其中,所述固件处理栈适于:响应于确定试图访问块地址范围中的块的快速路径格式化的I/O请求应当由固件处理栈处理,向区域锁定模块施加锁定请求以建立针对所述块地址范围的转移类型区域锁定,
其中,所述区域锁定模块还适于针对响应于从所述固件处理栈接收所述锁定请求的块地址范围建立所述转移类型区域锁定,以及
其中,该控制器还适于:响应于检测到已经针对会受到快速路径格式化的I/O请求的快速路径电路处理的影响的块地址的范围建立了所述转移类型区域锁定,将接收到的快速路径格式化的I/O请求转移到所述固件处理栈。
2.根据权利要求1所述的控制器,其中:
所述高速缓冲存储器适于存储受所述固件处理栈的写I/O请求的处理影响的块地址的写数据,
其中,所述固件处理栈还适于:响应于将数据存储在与块地址范围内的块地址相关的高速缓冲存储器中,针对所述块地址范围将转移类型区域锁定请求施加到区域锁定模块。
3.根据权利要求2所述的控制器,
其中,所述固件处理栈将所述高速缓冲存储器管理作为回写高速缓冲存储器。
4.根据权利要求1所述的控制器,还包括:
与所述固件处理栈耦接的坏块存储器(110),该坏块存储器适于存储标识存储装置的潜在坏块的块地址的坏块信息,
其中,所述固件处理栈还适于:响应于将标识块地址范围内的块地址的条目存储在坏块存储器中,针对所述块地址范围将转移类型区域锁定请求施加到所述区域锁定模块。
5.根据权利要求1所述的控制器,
其中,所述快速路径电路将关于快速路径格式化的I/O请求的内容信息施加到区域锁定模块,并且
其中,所述区域锁定模块还适于将快速路径格式化的I/O请求转移到所述固件处理栈,以根据该内容信息进行处理。
6.根据权利要求1所述的控制器,
其中,所述快速路径电路还适于:响应于来自所述区域锁定模块的、指示快速路径格式化的I/O请求的处理应当被转移到所述固件处理栈的信号,将快速路径格式化的I/O请求转移到所述固件处理栈进行处理。
7.一种能够在存储控制器(100)中操作的方法,该存储控制器(100)适于与一个或多个主机系统(120)耦接,并适于与一个或多个存储装置(130)耦接,该存储控制器具有快速路径电路(102)和固件处理栈(104),快速路径电路(102)用于处理从主机系统接收的快速路径格式化的I/O请求,固件处理栈(104)用于处理任何格式的I/O请求,该方法包括:
从所述快速路径电路接收锁定所述存储控制器的高速缓冲存储器中块地址范围的锁定请求;
接收快速路径格式化的I/O请求;
通过所述控制器的区域锁定模块(106)的操作,基于所述高速缓冲存储器中当前锁定的块地址范围的状态来确定接收到的快速路径格式化的I/O请求是否应当被转移到所述固件处理栈;
响应于快速路径格式化的I/O请求应当被转移到固件处理栈进行处理的确定,将快速路径格式化的I/O请求转移到固件处理栈以进行处理;
响应于接收到快速路径格式化的I/O请求,将来自所述快速路径电路的快速路径锁定请求信号施加到区域锁定模块,其中,所述快速路径锁定请求包含关于快速路径格式化的I/O请求的信息,
其中,所述确定步骤包括:
通过区域锁定模块的操作,基于以快速路径锁定请求信号提供的所述信息,来确定接收到的快速路径格式化的I/O请求是否针对锁定的块地址范围内的块地址;
通过所述固件处理栈的操作,标识块地址范围,对于该块地址范围,试图访问该块地址范围的快速路径格式化的I/O请求应当转移到固件处理栈;
将来自所述固件处理栈的转移类型锁定请求信号施加到所述区域锁定模块,以请求建立针对标识的块地址范围的转移类型锁定;以及
通过区域锁定模块的操作,响应于转移类型锁定请求信号的接收建立针对该转移类型锁定请求信号中标识的块地址范围的转移类型锁定;
其中,所述确定步骤还包括:
基于当前锁定的块地址范围的状态,确定接收到的快速路径格式化的I/O请求是否针对与所建立的转移类型锁定相关联的块地址范围内的块地址,从而使得该快速路径格式化的I/O请求的处理应当被转移到所述固件处理栈。
8.根据权利要求7的方法,
其中,所述固件处理栈将高速缓冲存储器管理作为回写高速缓存,
该方法还包括:
通过所述固件处理栈的操作,响应于由所述固件处理栈的写I/O请求的处理,将写数据存储在所述高速缓冲存储器中,
其中,所述标识步骤还包括:
标识包括与存储在高速缓冲存储器中的写数据相关联的块地址的块地址范围。
9.根据权利要求7的方法,
其中,所述控制器具有与固件处理栈耦接的坏块存储器(110),
所述方法还包括:
通过所述固件处理栈的操作,将标识存储装置上的潜在坏块的块地址的信息存储在坏块存储器中,
其中,所述标识步骤还包括:
标识包括所述坏块存储器中的潜在坏块的块地址的块地址范围。
CN201310085359.9A 2012-12-12 2013-03-18 具有多个处理栈的存储控制器中使用区域锁定转移i/o请求的方法和结构 Active CN103870210B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/711,885 2012-12-12
US13/711,885 US9268695B2 (en) 2012-12-12 2012-12-12 Methods and structure for using region locks to divert I/O requests in a storage controller having multiple processing stacks

Publications (2)

Publication Number Publication Date
CN103870210A CN103870210A (zh) 2014-06-18
CN103870210B true CN103870210B (zh) 2018-01-26

Family

ID=49322206

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310085359.9A Active CN103870210B (zh) 2012-12-12 2013-03-18 具有多个处理栈的存储控制器中使用区域锁定转移i/o请求的方法和结构

Country Status (6)

Country Link
US (1) US9268695B2 (zh)
EP (1) EP2743822B1 (zh)
JP (1) JP2014120151A (zh)
KR (1) KR101612155B1 (zh)
CN (1) CN103870210B (zh)
TW (1) TWI541653B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9250832B2 (en) * 2013-06-03 2016-02-02 Avago Technologies General Ip (Singapore) Pte. Ltd. Confirmed divert bitmap to synchronize raid firmware operations with fast-path hardware I/O processing
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
JP2016057876A (ja) * 2014-09-10 2016-04-21 富士通株式会社 情報処理装置、入出力制御プログラム、及び入出力制御方法
US10452557B2 (en) * 2015-01-28 2019-10-22 Hitachi, Ltd. Storage apparatus, computer system, and method for improved read operation handling
US9632843B1 (en) * 2015-04-20 2017-04-25 Microsemi Storage Solutions (U.S.), Inc. Memory allocation for RAID systems
US10013173B2 (en) 2015-07-29 2018-07-03 Sandisk Technologies Llc Data storage device with command buffer management module and method of operating same
JP6930978B2 (ja) 2016-03-02 2021-09-01 ジェイ・ピィ・サイエンティフィック・リミテッドJp Scientific Limited 固相マイクロ抽出用コーティング
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
JP6803400B2 (ja) 2016-05-10 2020-12-23 ジェイ・ピィ・サイエンティフィック・リミテッドJp Scientific Limited 固相マイクロ抽出装置上に吸着された分析物を脱着および検出するためのシステムおよび方法
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10528438B2 (en) * 2017-05-25 2020-01-07 Avago Technologies International Sales Pte. Limited Method and system for handling bad blocks in a hardware accelerated caching solution
US10852966B1 (en) * 2017-10-18 2020-12-01 EMC IP Holding Company, LLC System and method for creating mapped RAID group during expansion of extent pool
US10852951B1 (en) * 2017-10-18 2020-12-01 EMC IP Holding Company, LLC System and method for improving I/O performance by introducing extent pool level I/O credits and user I/O credits throttling on Mapped RAID
CN110618834B (zh) * 2019-09-05 2021-10-15 苏州浪潮智能科技有限公司 I/o栈请求响应方法、系统和i/o栈请求响应控制方法及系统

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5285528A (en) 1991-02-22 1994-02-08 International Business Machines Corporation Data structures and algorithms for managing lock states of addressable element ranges
US5761659A (en) 1996-02-29 1998-06-02 Sun Microsystems, Inc. Method, product, and structure for flexible range locking of read and write requests using shared and exclusive locks, flags, sub-locks, and counters
US6032216A (en) 1997-07-11 2000-02-29 International Business Machines Corporation Parallel file system with method using tokens for locking modes
US6574749B1 (en) 1999-10-29 2003-06-03 Nortel Networks Limited Reliable distributed shared memory
US6675157B1 (en) 1999-11-01 2004-01-06 International Business Machines Corporation System and method for balancing binary search trees
US6779063B2 (en) 2001-04-09 2004-08-17 Hitachi, Ltd. Direct access storage system having plural interfaces which permit receipt of block and file I/O requests
JP4162184B2 (ja) 2001-11-14 2008-10-08 株式会社日立製作所 データベース管理システムの実行情報を取得する手段を有する記憶装置
US6986015B2 (en) 2001-12-10 2006-01-10 Incipient, Inc. Fast path caching
US6898688B2 (en) 2001-12-28 2005-05-24 Storage Technology Corporation Data management appliance
US6912621B2 (en) 2002-04-17 2005-06-28 International Business Machines Corporation Method and apparatus for updating data in mass storage subsystem using emulated shared memory
US7082390B2 (en) 2002-04-30 2006-07-25 Lsi Logic Corporation Advanced storage controller
US7290105B1 (en) 2002-12-16 2007-10-30 Cisco Technology, Inc. Zero overhead resource locks with attributes
US7328364B1 (en) 2003-03-21 2008-02-05 Network Appliance, Inc. Technique for coherent suspension of I/O operations in a RAID subsystem
US7730222B2 (en) 2004-08-24 2010-06-01 Symantec Operating System Processing storage-related I/O requests using binary tree data structures
US7827362B2 (en) 2004-08-24 2010-11-02 Symantec Corporation Systems, apparatus, and methods for processing I/O requests
US7269588B1 (en) 2003-09-24 2007-09-11 Oracle International Corporation Neighborhood locking technique for increasing concurrency among transactions
US7362762B2 (en) 2003-11-12 2008-04-22 Cisco Technology, Inc. Distributed packet processing with ordered locks to maintain requisite packet orderings
EP1735712A1 (en) 2004-03-26 2006-12-27 Koninklijke Philips Electronics N.V. Integrated circuit and method for transaction abortion
US7206875B2 (en) 2004-03-31 2007-04-17 Intel Corporation Expander device capable of persistent reservations and persistent affiliations
US7386692B1 (en) 2004-08-20 2008-06-10 Sun Microsystems, Inc. Method and apparatus for quantized deadline I/O scheduling
US7260703B1 (en) 2004-08-20 2007-08-21 Sun Microsystems, Inc. Method and apparatus for I/O scheduling
US7418545B2 (en) 2004-10-28 2008-08-26 Intel Corporation Integrated circuit capable of persistent reservations
US7370128B2 (en) 2004-10-29 2008-05-06 Intel Corporation Expander device capable of communication protocol translation
US7305537B1 (en) 2005-03-01 2007-12-04 Sun Microsystems, Inc. Method and system for I/O scheduler activations
US7562200B1 (en) 2005-06-10 2009-07-14 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for locking and synchronizing input/output operations in a data storage system
US7529902B2 (en) * 2005-10-19 2009-05-05 Lsi Corporation Methods and systems for locking in storage controllers
US7478179B2 (en) 2005-11-04 2009-01-13 Sun Microsystems, Inc. Input/output priority inheritance wherein first I/O request is executed based on higher priority
US7447698B2 (en) 2005-12-13 2008-11-04 International Business Machines Corporation Method for balancing binary search trees
US8654045B2 (en) 2006-07-31 2014-02-18 Sony Corporation Display and method for manufacturing display
US7627744B2 (en) 2007-05-10 2009-12-01 Nvidia Corporation External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level
US9424315B2 (en) * 2007-08-27 2016-08-23 Teradata Us, Inc. Methods and systems for run-time scheduling database operations that are executed in hardware
US20100268904A1 (en) * 2009-04-15 2010-10-21 Sheffield Robert L Apparatus and methods for region lock management assist circuit in a storage system
US8176218B2 (en) 2010-08-11 2012-05-08 Lsi Corporation Apparatus and methods for real-time routing of received commands in a split-path architecture storage controller
US8402183B2 (en) * 2010-10-06 2013-03-19 Lsi Corporation System and method for coordinating control settings for hardware-automated I/O processors

Also Published As

Publication number Publication date
TW201423410A (zh) 2014-06-16
EP2743822A1 (en) 2014-06-18
EP2743822B1 (en) 2016-12-07
KR20140076463A (ko) 2014-06-20
KR101612155B1 (ko) 2016-04-26
US20140164715A1 (en) 2014-06-12
US9268695B2 (en) 2016-02-23
TWI541653B (zh) 2016-07-11
JP2014120151A (ja) 2014-06-30
CN103870210A (zh) 2014-06-18

Similar Documents

Publication Publication Date Title
CN103870210B (zh) 具有多个处理栈的存储控制器中使用区域锁定转移i/o请求的方法和结构
US7979631B2 (en) Method of prefetching data in hard disk drive, recording medium including program to execute the method, and apparatus to perform the method
CN102576293B (zh) 固态存储设备和分层存储系统中的数据管理
CN102150144B (zh) 使用写入配置快照的动态存储分层的方法和系统
CN104049908B (zh) 基于动态颗粒的中间存储
US20150212938A1 (en) Garbage collection and data relocation for data storage system
US20120246403A1 (en) Write spike performance enhancement in hybrid storage systems
JP5870213B2 (ja) ストレージシステム及びストレージシステムにおけるデータ転送制御方法
KR20120050891A (ko) 스토리지 시스템에서 요청에 대한 응답과 연관된 지연의 감소
US20160085446A1 (en) Control device and storage system
EP1582971A2 (en) Diskarray system
US9430168B2 (en) Recording medium storing a program for data relocation, data storage system and data relocating method
US9298636B1 (en) Managing data storage
US9244868B2 (en) Leased lock in active-active high availability DAS systems
JP5729479B2 (ja) 仮想テープ装置及び仮想テープ装置の制御方法
US9323476B2 (en) Hardware based cache scan with divert node handling
US10037289B1 (en) Data storage system with efficient processing of single mapping callback for host I/O requests
US10235053B1 (en) Method and system for using host driver for flexible allocation fast-sideways data movements
US9384135B2 (en) System and method of caching hinted data
US9146803B2 (en) Storage apparatus, control apparatus, and storage apparatus control method
US10007437B2 (en) Management apparatus, storage system, method, and computer readable medium
US20030177367A1 (en) Controlling access to a disk drive in a computer system running multiple operating systems
JP2006113882A (ja) データ管理装置
US8688916B2 (en) Storage system and data processing method using cache memory
Xu et al. An active method to mitigate the long latencies for host-aware shingle magnetic recording drives

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) CORPORAT

Free format text: FORMER OWNER: INFINEON TECHNOLOGIES CORP.

Effective date: 20150819

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150819

Address after: Singapore Singapore

Applicant after: Avago Technologies General IP (Singapore) Pte. Ltd.

Address before: California, USA

Applicant before: LSI Corp.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20181023

Address after: Singapore Singapore

Patentee after: Avago Technologies General IP (Singapore) Pte. Ltd.

Address before: Singapore Singapore

Patentee before: Avago Technologies General IP (Singapore) Pte. Ltd.

TR01 Transfer of patent right