CN101253500A - 用于管理i/o的方法 - Google Patents

用于管理i/o的方法 Download PDF

Info

Publication number
CN101253500A
CN101253500A CN200680031546.7A CN200680031546A CN101253500A CN 101253500 A CN101253500 A CN 101253500A CN 200680031546 A CN200680031546 A CN 200680031546A CN 101253500 A CN101253500 A CN 101253500A
Authority
CN
China
Prior art keywords
subclauses
clauses
file
processing queue
protection table
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.)
Granted
Application number
CN200680031546.7A
Other languages
English (en)
Other versions
CN101253500B (zh
Inventor
W·T·博伊德
J·L·赫非尔德
A·梅纳三世
R·雷西奥
M·维加
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101253500A publication Critical patent/CN101253500A/zh
Application granted granted Critical
Publication of CN101253500B publication Critical patent/CN101253500B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1063Discovery through centralising entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Abstract

提供了一种系统、方法和计算机程序产品,其使得用户空间中间件或应用能够在没有来自本地操作系统(OS)的运行时参与的情况下,将基于文件名的存储请求直接传递至物理I/O适配器。所提供的机制使用可以包括文件名保护表(FNPT)和文件扩展保护表(FEPT)在内的文件保护表(FPT)数据结构来控制用户空间和用户空间外的输入/输出(I/O)操作。所述FNPT具有由所述OS的文件系统所管理的每个文件的条目以及指向所述FEPT的区段的指针。所述FEPT中的每个条目均可以包括保护域以及其它的保护表上下文信息,可以根据这些信息来检查I/O请求,以确定提交所述I/O请求的应用实例是否可以访问所述I/O请求中所标识的文件。

Description

用于管理I/O的方法
技术领域
本发明一般涉及主计算机与输入/输出(I/O)适配器之间的通信协议。更具体地,本发明针对的是一种系统和方法,其用于在没有来自本地操作系统(OS)(或在虚拟系统中,本地管理体(hypervisor))的运行时参与的情况下,使得用户空间中间件或应用能够将基于文件名的存储请求直接传递至物理I/O适配器。
背景技术
根据现有的技术情况,操作系统不允许诸如数据库的用户空间中间件或应用直接访问通过操作系统的本地文件系统的文件模式I/O接口所标识的永久性存储器。因此,用户空间中间件必须在每次进行I/O操作时调用操作系统(OS)调用并引发多次任务切换。当中间件或应用将存储请求传送给OS时导致第一任务切换。在OS完成处理中间件或应用存储请求并将存储请求传递至存储适配器之后,当OS将控制传递回给用户空间中间件或应用时,发生第二任务切换。
当存储适配器完成关联的I/O存储操作并中断正在由应用进行的处理以便OS可以处理存储适配器的完成时,发生第三任务切换。当OS结束处理存储适配器的完成并将控制返回给向OS传送存储请求的中间件或应用时,发生最后的任务切换。除了这些任务切换之外,存储适配器通常还具有单个请求队列来处理来自操作系统的工作。
上述四次任务切换可被视为浪费的处理器周期,因为对于正在切换的线程的所有工作均会停止,直到任务切换完成。在某些服务器中,用户空间中间件或应用程序所进行的存储操作数可能相当大。现代的高端服务器每秒可以有数百万次这些操作,这导致每秒数百万次的任务切换。
发明内容
鉴于上述内容,获得一种这样的方法、系统和具有计算机可读指令的计算机程序产品会是有利的,即其用于处理输入/输出(I/O)存储请求,其中,对此类任务切换进行了最小化。此外,获得一种改进的方法、系统和计算机指令会是有利的,即其在没有来自本地操作系统(OS)(或在虚拟系统中,本地管理体)的运行时参与的情况下使得用户空间中间件或应用能够将基于文件名的I/O存储请求直接传递至物理I/O适配器。将该机制应用于InfiniBand、TCP/IP卸载引擎、启用RDMA(远程直接存储器访问)的NIC(网络接口控制器)、iSCSI适配器、iSER(用于RDMA的iSCSI扩展)适配器、并行SCSI适配器、光纤通道适配器、串行附加SCSI适配器、ATA适配器、串行ATA适配器以及任何其它类型的存储适配器也会是有利的。
进一步地,获得一种改进的方法、系统和计算机指令会是有利的,即其使得保护机制能够确保从应用实例直接发送至物理I/O适配器的基于文件名的存储请求仅被完成到先前已经为了随该应用实例的用户空间外I/O而分配的存储设备部分。此外,获得一种这样的方法、系统和计算机指令会是有利的,即其使得能够创建、修改、查询和删除用于促进应用实例与物理I/O适配器之间基于文件名的直接I/O操作的数据结构条目。另外,获得一种这样的方法、系统和计算机指令会是有利的,即其用于处理用户空间操作以便进行存储设备资源管理和直接I/O操作数据结构管理。最后,获得一种这样的方法、系统和计算机指令会是有利的,即其使用运行在主机系统上的操作系统的文件系统来实现以上目的。
本发明提供了一种方法、计算机程序产品和数据处理系统,其使得用户空间中间件或应用能够在没有来自本地操作系统(OS)(或在虚拟系统中,本地管理体)的运行时参与的情况下,使用运行在主机系统上的操作系统的文件系统将基于文件名的存储请求直接传送至物理I/O适配器。本发明中所描述的机制应用于InfiniBand主机通道适配器、TCP/IP卸载引擎、启用RDMA(远程直接存储器访问)的NIC(网络接口控制器)、iSCSI适配器、iSER(用于RDMA的iSCSI扩展)适配器、并行SCSI适配器、光纤通道适配器、串行附加SCSI适配器、ATA适配器、串行ATA适配器以及任何其它类型的存储适配器。
具体而言,本发明针对的是一种用于提供和使用文件保护表(FPT,file protection table)数据结构来控制用户空间以及用户空间外的输入/输出(I/O)操作的机制。在本发明的一个方面中,所述FPT包括文件名保护表(FNPT,file name protection table),其具有由操作系统的文件系统管理的每个文件的条目。所述FNPT中的条目包括指向与文件名相对应的文件扩展保护表(FEPT,file extension protection table)的区段的指针。所述FEPT中的条目可以包括关键字实例(key instance)和保护域,以及其它的保护表上下文信息,可以根据这些信息来检查I/O请求以确定提交所述I/O请求的应用实例是否可以访问与所述I/O请求中所标识的文件名相对应的存储设备部分。以这样的方式,只有已经分配给所述应用实例的那些存储设备部分才可以被所述应用实例访问。此外,只有为其分配了所述存储设备部分的应用实例才可以访问所述存储设备部分。
所述FPT可以进一步包括LBA表,在所述LBA表中的是标识了与所述文件扩展保护表(FEPT)中的条目相关联的逻辑块地址的LBA表条目。所述LBA表可以用于将基于文件名的I/O请求中所引用的LBA映射到物理存储设备的LBA。本发明进一步提供了一种机制,其用于处理用户空间操作,以便管理所述文件名保护表、文件扩展保护表和LBA表中的条目的创建、修改、查询和删除。这样的机制与物理I/O适配器的存储管理接口进行连接,以便对与应用实例关联的文件、文件扩展以及LBA进行分配、修改、查询和解除分配。
另外,本发明提供了用于处理用户空间操作以便生成工作队列条目来将基于文件名的I/O操作直接传递至物理I/O适配器的机制。此外,本发明提供了这样的机制,即其用于在工作队列条目已经由物理I/O适配器进行处理时,从所述物理I/O适配器中检索完成队列条目以便通知应用实例完成处理。
如下文所阐述的,在本发明的一个示例性实施例中,提供了一种在其中处理队列条目是从与应用实例关联的处理队列接收的方法、计算机程序产品、装置和系统,其中所述处理队列条目引用文件,使用文件保护表数据结构检验关联于所述处理队列条目的文件与所述应用实例关联,并且如果所述处理队列条目所引用的文件与所述应用实例相关联,则处理所述处理队列条目。可以在没有主机系统的系统映像干预的情况下在输入/输出(I/O)适配器中直接从所述应用实例接收所述处理队列条目。可以在耦合于运行所述应用实例的主机系统的I/O适配器中实现所述方法,并且可以在耦合于运行所述应用实例的主机系统的I/O适配器上执行所述计算机程序产品。
所述处理队列条目可以包括引用了文件名保护表中的条目的文件名关键字(FN_Key)值。所述文件名保护表可以具有由操作系统或系统映像的文件系统管理的每个文件的条目。
所述处理队列条目可以包括引用了文件扩展保护表中的条目的文件扩展关键字(FE_Key)值,并且其中所述文件扩展保护表具有分配给由操作系统或系统映像的文件系统管理的文件的每组线性块地址的条目。所述文件保护表数据结构可以包括所述文件名保护表的I/O适配器常驻高速缓存部分以及所述文件扩展保护表的I/O适配器常驻高速缓存部分。所述文件保护数据结构可以包括所述文件名保护表以及所述文件扩展保护表。所述文件名保护表和文件扩展保护表可以驻留在所述主机系统上。
通过以下操作可以检验所述处理队列条目所引用的文件是与所述应用实例关联的:处理所述处理队列条目中的FN_Key值,以便标识与所述FN Key相对应的文件名保护表条目;处理所述文件名保护表条目,以便标识与所述文件名保护表条目相对应的文件扩展保护表的区段;处理所述处理队列条目中的FE_Key值,以便标识与所述FE_Key相对应的文件扩展保护表条目;以及确定是否分配了由所述文件扩展保护表条目所标识的存储设备部分来由所述应用实例进行访问。
可以通过将所述文件扩展保护表条目中所引用的第一保护域和与所述处理队列条目关联的处理队列上下文中所含的第二保护域进行比较,确定是否分配了由标识的文件扩展保护表条目所引用的存储设备的一个或多个部分来由所述应用实例进行访问。基于该比较,如果所述第一保护域与所述第二保护域相匹配,则可以确定分配了由所标识的文件扩展保护表条目引用的存储设备的一个或多个部分来由所述应用实例进行访问。
如果所述处理队列条目所引用的文件与所述应用实例相关联,则可以通过基于所述文件扩展保护表条目,在存储块地址表中进行查找操作,以便标识与所述文件扩展保护表条目相对应的至少一个存储块地址表条目,来实现对所述处理队列条目的处理。然后可以在由包括在所述文件扩展保护表条目中的存储块地址所引用的存储设备中的存储位置上进行I/O操作。
本发明的机制可以进一步包括:基于所述处理队列条目中所提供的FN_Key和FE_Key,标识与所述处理队列条目的目标文件相关联的存储设备部分的获准访问类型。此外,基于与所述处理队列条目的目标文件相关联的存储设备部分的获准访问类型,可以在所述处理队列条目上进行验证检查,其中仅当成功完成在所述处理队列条目上的验证检查时才处理所述处理队列条目。在标识与所述处理队列条目的目标文件相关联的存储设备部分的获准访问类型中,可以从文件名保护表(FNPT)数据结构中检索与所述FN_Key相对应的文件名保护表条目,并且可以标识与所述文件名保护表条目相对应的文件扩展保护表(FEPT)数据结构的区段。基于所述FEPT的标识区段和FE_Key,可以从所述FEPT数据结构中检索FEPT条目,并且可以标识所检索的FEPT条目中的验证信息,用于在进行获准访问类型的标识中使用以及用于进行所述验证检查。
所述FEPT条目可以存储一个或多个访问控制值,其标识了在与所述FEPT条目关联的存储设备部分上获准的访问类型。所述一个或多个访问控制值可以包括有效标识访问控制值和获准操作访问控制值。如果所述有效标识访问控制值具有第一值,则所述FEPT条目有效,并且其中如果所述获准操作访问控制值具有所述第一值,则准许在所述存储设备的关联部分上进行读和写操作。
举例来说,通过确定所述FEPT条目的有效标识访问控制值的值是否指示所述FEPT条目有效,本发明的机制可以在所述处理队列条目上进行验证检查。如果所述FEPT条目的有效标识访问控制值指示所述FEPT条目有效,并且所述处理队列条目正请求的访问类型是读操作,那么成功完成在所述处理队列条目上的验证检查。如果所述FEPT条目的有效标识访问控制值指示所述FEPT条目有效,所述获准操作访问控制值指示准许写操作,并且所述处理队列条目正请求的访问类型是写操作,那么成功完成在所述处理队列条目上的验证检查。
此外,通过确定与所述处理队列条目的目标文件相关联的存储设备部分是否处于与所述FEPT条目相关联的存储设备部分的范围内,本发明可以在所述处理队列条目上进行验证检查。如果与所述处理队列条目的目标文件相关联的存储设备部分处在与所述FEPT条目相关联的存储设备部分的范围之外,则可以拒绝对与所述处理队列条目的目标文件相关联的存储设备部分的访问。
举例来说,根据本发明的装置可以包括处理器和耦合于所述处理器的存储设备(例如存储器)。举例来说,根据本发明的系统可以包括处理器以及耦合于所述处理器的I/O适配器。
将在以下对本发明的示例性实施例的详细描述中对本发明的这些和其它特征和优点进行描述,或者鉴于以下对本发明的示例性实施例的详细描述,本发明的这些和其它特征和优点对于本领域的普通技术人员将变得显而易见。
附图说明
在所附权利要求中阐述了被认为是本发明特色的新颖特征。然而,当结合附图阅读时,通过参照以下对说明性实施例的详细描述,可以最好地理解本发明本身以及优选的使用模式、进一步的目的及其优点,在附图中:
图1是依照本发明的示例性实施例的主处理器节点的功能框图;
图2是依照本发明的示例性实施例说明了用于启用用户空间外基于文件名的存储I/O访问的主处理器节点的主要操作元件的示图;
图3是依照本发明的示例性实施例说明了用于转换和保护基于文件名的存储的示例性控制结构的示图;
图4是依照本发明的示例性实施例说明了用于从用户空间中间件或应用实例将存储请求传递至存储适配器的示例性控制结构的示图;
图5是依照本发明的示例性实施例说明了用于保证允许用户空间中间件或应用实例所提交的基于文件名的存储I/O请求引用基于文件名的存储I/O请求中所引用的文件的示例性控制结构的示图;
图6是依照本发明的示例性实施例概括了用于处理用户空间操作的调用的示例性操作的流程图;
图7是概括了当所调用的用户空间操作是要求进行生成和处理或工作队列元素的工作队列操作时本发明的一个示例性实施例的示例性操作的流程图;
图8是概括了当进行验证检查以确定工作队列条目是否有效以及是否可以由物理I/O适配器处理时本发明的一个示例性实施例的示例性操作的流程图;
图9是概括了当所调用的用户空间操作是完成队列检索过程操作时本发明的一个示例性实施例的示例性操作的流程图;
图10是依照本发明的示例性实施例概括了当创建文件保护表条目时本发明的一个示例性实施例的示例性操作的流程图;
图11是概括了当处理作为资源修改操作的用户空间操作时本发明的一个示例性实施例的示例性操作的流程图;
图12是概括了当处理查询用户空间操作时本发明的一个示例性实施例的示例性操作的流程图;以及
图13是概括了当处理撤销(destroy)或删除用户空间操作时本发明的一个示例性实施例的示例性操作的流程图。
具体实施方式
本发明应用于使用诸如PCI系列I/O适配器、虚拟I/O适配器、端点设备、虚拟端点设备等的I/O适配器来直接依附于存储器或通过网络依附于存储器的任何通用或专用主机。网络可以包括端节点、交换机、路由器和互连这些组件的链路。网络链路可以是光纤通道、以太网、InfiniBand、高级交换互连、其它标准存储网络互连,或者使用专有或标准协议的专有链路。虽然下文的描述和说明将参照网络和主节点的特定布置,但是应当理解,下面的示例性实施例只是示例性的,并且可以在不背离本发明的范围的情况下,对具体描述和说明的布置进行修改。
重要的是要注意,本发明可以采取全硬件实施例、全软件实施例或者既含有硬件元素又含有软件元素的实施例的形式。在示例性实施例中,以软件实现本发明,其包括但不限于固件、常驻软件、微码等。
此外,本发明可以采取可访问于计算机可用或计算机可读介质的计算机程序产品的形式,该计算机可用或计算机可读介质提供由计算机或任何指令执行系统使用的或者与计算机或任何指令执行系统结合使用的程序代码。对于该描述来说,计算机可用或计算机可读介质可以是能够容纳、存储、通信、传播或传送由指令执行系统、装置或设备使用的或者与指令执行系统、装置或设备结合使用的程序的任何装置。
介质可以是电子、磁性、光学、电磁、红外或半导体系统(或装置或设备)或者传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可装卸计算机磁盘、随机访问存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前的例子包括只读光盘存储器(CD-ROM)、读/写光盘(CD-R/W)和DVD。
适于存储和/或执行程序代码的数据处理系统可以包括通过系统总线直接地或间接地耦合于存储元件的至少一个处理器。存储元件可以包括在程序代码的实际执行期间所采用的局部存储器、大容量存储器,以及为了减少在执行期间必须从大容量存储器检索代码的次数而提供对至少一些程序代码的临时存储的高速缓冲存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等)可以直接地或者通过插入I/O控制器耦合于系统。网络适配器耦合于系统,从而使得数据处理系统能够适于通过介入专用或公用网络耦合于其它的数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡正是几种当前可用类型的网络适配器。
现参照附图,并且特别参照图1,其依照本发明的一个示例性实施例描绘了主节点的功能框图。在该例中,主节点102包括通过链路101互连的两个处理器I/O层次100和103。为了便于描述主节点102的元件,仅完全描绘了处理器I/O层次100,且处理器I/O层次103具有类似的(尽管未示出)如下文讨论的元件布置。
如所示出的,处理器I/O层次100包括处理器芯片107,处理器芯片107包括一个或多个处理器及其关联的高速缓存。处理器芯片107通过链路108连接至存储器112。处理器芯片上的链路之一,例如链路120,连接至PCI系列I/O桥接器128。PCI系列I/O桥接器128具有一个或多个PCI系列(PCI、PCI_X、PCI_Express或任何将来推出的PCI)链路,该链路用于通过诸如链路132、136和140的PCI链路连接其它的PCI系列I/O桥接器或PCI系列I/O适配器(例如PCI系列适配器1145和PCI系列适配器2144)。诸如PCI系列适配器1145的PCI系列适配器可以用于通过诸如到网络164的链路156这样的网络链路连接至依附网络的存储器152,链路156连接至交换机或路由器160,而交换机或路由器160又通过链路158连接至依附网络的存储器152。诸如PCI系列适配器2144的PCI系列适配器还可以用于通过链路148连接直接依附的存储设备162。
重要的是要注意,诸如PCI系列适配器1145或PCI系列适配器2144这样的PCI系列适配器可以与主节点102上的其它组件集成。例如,PCI系列适配器1145或PCI系列适配器2144可以与PCI系列I/O桥接器128集成。其它例子是诸如PCI系列适配器1145或PCI系列适配器2144这样的PCI系列适配器可以与处理器芯片107集成。
虽然将关于PCI系列适配器来描述本发明的示例性实施例,但是应当理解本发明并不限于此类适配器。相反,物理I/O适配器可以是包括PCI系列适配器、虚拟I/O适配器、端点设备、虚拟端点设备、虚拟I/O适配器端点设备等在内的任何类型的I/O适配器。举例来说,在题为“DataProcessing System,Method and Computer Program Product for Creationand Initialization of a Virtual Adapter on a Physical Adapter thatSupports Virtual Adapter Level Virtualization,”(2005年2月25日提出申请,在此通过引用的方式将其纳入本说明书)的共同受让和共同未决的美国专利申请11/065,829中描述了可以随本发明一起使用的虚拟I/O适配器的一个例子。在不背离本发明的范围的情况下,可以使用其它类型的I/O适配器。
现参照图2,其描绘了与本发明的一个示例性实施例相关的系统组件的功能框图。在所描绘的例子中,物理I/O适配器200是诸如图1中的PCI系列适配器1145或PCI系列适配器2144这样的PCI适配器的例子。
在该例中,图2中所示的物理I/O适配器200包括诸如处理队列集236这样的处理队列(PQs)的一个集合,及其关联的处理队列上下文,例如PO上下文204。举例来说,处理队列(PQs)可以包括工作队列(例如发送队列和/或接收队列)以及完成队列。工作队列用于将基于文件名的I/O存储请求直接提交给物理I/O适配器。为了直接访问存储设备的部分,使用本发明的机制,将基于文件名的I/O存储请求中的文件名转换成线性块地址(Linear Block Address)。线性块地址(LBA)是从存储设备的逻辑起点的块(即,存储设备的固定大小部分)的索引。完成队列用于将工作队列条目的完成传达回给提交了基于文件名的I/O存储请求的应用实例。
物理I/O适配器200还具有诸如FPT上下文208这样的文件保护表(FPT)上下文,其用于容纳诸如FPT 232或FPT 252这样的主机常驻文件保护表的上下文。FPT上下文208还可以用于容纳FPT 232或252本身或来自主机常驻FPT 232或FPT 252的条目的高速缓存。
FPT 232和252驻留在诸如OS 1220或OS 2240这样的操作系统(OS)中。OS(例如OS1220或OS2240)可以驻留在管理体216之上,管理体216是管理物理硬件资源的分区和虚拟化以及控制OS执行的软件、固件或二者的混合。OS可以托管一个或多个中间件或应用实例。在图2中,OS1220正托管两个中间件或应用实例App1224和App2228。类似地,OS2240正托管应用App1224和App2228。OS在诸如处理器212的处理器上运行。
中间件或应用实例(例如App 1 224)使用诸如处理队列集236这样的处理队列集来将基于文件名的I/O存储请求传递至物理I/O适配器。当物理I/O适配器200处理基于文件名的I/O存储请求时,物理I/O适配器200使用在基于文件名的I/O存储请求中所传递的关键字来在FPT上下文208中查找条目。如果FPT上下文208与用于处理队列的PQ上下文204关联于相同的保护域,那么处理基于文件名的I/O存储请求。否则,错误地完成基于文件名的I/O存储请求。
接下来转至图3,其描绘了文件保护表(FPT)的例子。图3中示出了三个表:文件名保护表302、文件扩展保护表312和线性块地址(LBA)表322,其一起可以构成文件保护表数据结构。文件名保护表302含有由操作系统或系统映像300的文件系统管理的每个文件的条目。文件名保护表302中的条目指向与文件名保护表条目所表示的文件相对应的文件扩展保护表312的区段。
文件扩展保护表312含有每个文件扩展的条目。这些条目中的每个条目均描述了访问控制、文件名、指向线性块地址(LBA)表322的指针(其含有与对应的文件扩展保护表条目相关联的LBA的范围),以及稍后将在本说明书中涵盖的其它字段。在所描绘的例子中,文件扩展保护表312含有每个逻辑卷(LV)的条目,并且因而文件扩展保护表312是LV文件扩展保护表312。
可以将文件扩展保护表312分段成一组文件扩展保护表段,例如文件扩展保护表段1 314。可以使用包括B树、由非叶节点中的指针和叶节点中的指针组成的树、简单链接的列表等在内的若干数据结构来互连区段。在所描绘的例子中,文件扩展保护表段1314使用简单链接的列表,其中该表中的第一条目是指向含有文件扩展保护表条目的下一表的指针。
文件扩展保护表条目N 320描绘了诸如文件扩展保护表段1 314这样的文件扩展保护表段中的示例条目。文件扩展保护表段1314中的每个条目均含有用于定义该条目的一组字段。文件扩展保护表条目N 320含有以下字段:访问控制、保护域、关键字实例、文件名、逻辑卷号、SCSI标识符号、SCSI逻辑单元号、LBA表大小、扇区大小、长度、LBA表指针。
在一个示例性实施例中,适配器的FE_Key映射逻辑386(举例来说,其可以是I/O适配器的处理器中的逻辑,或者可以是单独的专用逻挥单元)对文件扩展保护表条目(例如文件扩展保护表条目N 320)中的字段进行所有的检查。未通过FE_Key映射逻辑386的任何检查均导致操作错误地完成。在出现错误的情况下,操作系统(OS)可以拆卸在操作中进行传递的中间件或应用实例,或者采取不那么激烈的手段,例如返回带有错误完成的操作。
访问控制字段描述了文件扩展保护表(FEPT)条目是否有效以及可以对FEPT条目进行何种类型的操作。可以对该条目进行的可能的操作是:读、写,以及读/写。如果通过中间件或应用实例传递的基于文件名的I/O存储请求访问有效的FEPT条目,那么操作通过有效/无效检查。如果通过中间件或应用实例传递的基于文件名的存储I/O请求尝试进行读访问操作并且FEPT条目设置了有效比特,那么操作通过该检查。如果通过中间件或应用实例传递的基于文件名的存储I/O请求尝试进行写访问操作并且FEPT条目设置了读/写比特,那么操作通过该检查。
保护域字段用于将FEPT条目与处理队列(PQ)上下文进行关联。也就是说,如果中间件或应用实例用于在基于文件名的存储I/O请求中传递的PQ上下文在其保护域字段中含有与FEPT条目的保护域字段相同的值,那么对二者进行关联并且操作通过该检查。如果PQ上下文和FEPT条目中的这些保护域之间存在不匹配,那么操作无法通过该检查。
关键字实例用于将来自中间件或应用实例的基于文件名的I/O存储请求中所传递的文件扩展关键字与存储在FEPT条目中的文件扩展关键字进行比较。如果二者相匹配,则操作通过该检查。如果关键字实例与在基于文件名的存储I/O请求中所传递的存储关键字不匹配,那么操作不通过该检查。
文件扩展关键字或“FE_Key”具有两个字段-第一字段是进入FEPT的索引,例如偏移,并且第二字段是将要与第一字段所指向的FEPT条目中的关键字实例进行比较的关键字实例。当中间件或应用实例提交基于文件名的I/O存储请求时,适配器使用文件名和第一字段来从FEPT获取条目。举例来说,这可以通过使用文件名或文件名关键字标识文件名保护表302中指向FEPT 312的区段的起始地址的条目来完成。然后可以使用文件扩展关键字的第一字段中的索引或偏移来标识FEPT 312中的特定条目。然后,适配器将FEPT条目内的关键字实例与通过中间件或应用实例传递的第二字段进行比较。
文件名字段是任选的,并且如果包括了文件名字段,则可以将其用于标识与FEPT 312条目关联的文件名和/或文件名关键字。文件名字段可以用于对基于文件名的存储I/O请求中所传递的文件名或文件名关键字进行检查。如果二者匹配,那么操作通过该检查;否则如果二者不匹配,则操作无法通过该检查。
逻辑卷号是任选的,并且如果包括了逻辑卷号,则可以用其来对在中间件或应用实例的基于文件名的存储I/O请求中所传递的LV号与存储在LV文件扩展保护表条目中的LV号进行比较。如果二者匹配,则操作通过该检查。如果逻辑卷号与通过基于文件名的存储I/O请求中所传递的LV号不匹配,那么操作无法通过该检查。
SCSI标识符号(ID)和SCSI逻辑单元号(LUN)用于将条目分别与特定的SCSI设备和该设备内的特定LUN相关联。
LBA表大小用于定义与FEPT条目关联的每个LBA表段(例如LBA表段1324)可含的条目的最大数目。扇区大小用于定义与FEPT条目关联的盘上的每个扇区的大小。长度字段用于定义与FEPT条目关联的盘LBA集(the set of disk LBAs)的总长度。
FEPT条目320的LBA表指针指向LBA表322中的一个或多个对应的LBA表条目。因而,利用LBA表指针字段,可以标识与FEPT 312中的FEPT条目关联的线性块地址,以便提供对与处理队列(在适配器316中从该处理队列接收基于文件名的I/O请求)相关联的物理存储设备上的存储位置的线性块地址的访问。
还可以将LBA表322分段成一组LBA表段,例如LBA表段1324。可以使用包括B树、由非叶节点中的指针和叶节点中的指针组成的树、简单链接的列表等在内的若干数据结构来互连区段。在所描绘的例子中,LBA表段1 324使用简单链接的列表,其中,该表中的第一条目是指向含有LBA表条目的下一表的指针。
诸如LBA表段1 324这样的LBA表段中的每个条目均描述了与该条目关联的盘线性块地址(LBA)的范围。对于该描述来说,条目可以使用起始LBA和长度、起始LBA和结束LBA等。
诸如适配器316的物理I/O适配器可以选择存储整个文件保护表、部分文件保护表,或者不存储文件保护表。所示出的适配器316具有持有一个区段的文件名保护表高速缓存和文件扩展保护表高速缓存,例如高速缓存的文件名保护表段1 390和文件扩展保护表段1 392。
类似地,适配器316可以选择存储整个LBA表、部分LBA表,或者不存储LBA表。在所描绘的例子中,所示出的适配器316具有持有一个区段的LBA表高速缓存,例如高速缓存的LBA表段1 398。
接下来参照图4,其依照本发明的示例性实施例示出了用于为用户空间中间件或应用实例将基于文件名的I/O存储请求传递至物理I/O适配器的示例性控制结构的示例图。为了进行说明,举例来说,所示出的系统映像(其可以是诸如Windows XPTM、AIXTM、LinuxTM等的操作系统,或者诸如基于文件名的I/O存储服务器或文件模式I/O存储服务器的专用软件映像)具有使用存储或网络适配器从存储设备调用存储操作的应用。为了进行以下描述,可以交换使用术语“系统映像”和“操作系统”来指代系统映像,即系统存储器的当前内容,其可以包括操作系统和任何运行的应用实例。
诸如系统映像1 412的系统映像具有与存储适配器420关联的设备驱动器,例如适配器驱动器440。适配器驱动器440可以含有处理队列(PQ)表后备存储444,其含有适配器的PQ表中的条目的副本,例如系统映像1的处理队列表段1 400。
当应用实例X 432进行基于文件名的I/O访问时,应用实例通过使用处理队列(PQ)门铃436来通知关联的适配器420。举例来说,PQ1门铃436通知适配器420:在用于实现应用实例X 432与适配器420之间通信的处理队列集的发送队列428中存在存储工作请求。
来自PQ1门铃436的数据提供了需要由加法器422添加到适配器420中的挂起工作请求的当前数目的工作请求数。也就是说,由中间件或应用实例生成的基于文件名的I/O请求发送可以包括存储在发送队列中作为工作队列条目的多个实际工作请求。PQ1门铃436标识出作为基于文件名的I/O请求的一部分的工作请求的数目。
提供工作请求数作为PQ计数字段,该PQ计数字段存储在与系统映像关联的相关处理队列表条目PQ N中,例如来自系统映像1的PQ段1的高速缓存的PQ条目N 424。一旦完成存储工作请求,就将用于通知应用已经完成工作请求的消息添加到完成队列450。
如图4中所示,来自系统映像1的PQ段1的高速缓存的PQ条目N 424包括PQ上下文信息,其包括PQ头地址、PQ起始地址、PQ结束地址、PQ计数,以及附加的PQ上下文信息。PQ起始地址字段存储应用的处理队列428中的第一工作队列条目的系统存储地址。PQ结束地址字段存储与处理队列428最后的工作队列条目关联的最后的系统存储地址。PQ头地址字段存储适配器打算处理的下一处理队列条目的系统存储地址。适配器在处理循环处理队列中的处理队列条目时更改PQ头地址。PQ计数字段存储已由应用实例432递送但尚未由适配器处理的处理队列条目的数目。
接下来参照图5,其依照本发明的一个示例性实施例,提供了对用于保证用户空间中间件或应用实例所提交的基于文件名的I/O存储请求被授权引用该基于文件名的I/O存储请求中所引用的存储设备区域的示例性控制结构的描述。图5集中于通过确保只有与存储设备上的那些存储块相关联的应用实例才是仅有的可以访问那些存储块的应用实例来保护与应用实例关联的存储块。
如图5中所示,系统映像1 500托管应用实例X 532。该应用实例X 532使用以上参照图4所描述的机制来实现基于文件名的I/O存储请求。该机制使用处理队列528将基于文件名的I/O存储请求作为工作队列条目(WQEs)(例如WQE 536)提交给所期望的物理I/O适配器,例如适配器516。将基于文件名的I/O存储工作请求放入发送队列528,发送队列528是作为与应用实例X 532和适配器516相关联的处理队列集的一部分的工作队列。适配器516上的处理队列上下文517(例如在来自系统映像(SI)1的PQ段1的高速缓存的PQ条目N 524中的处理队列上下文)含有保护域字段518。
当应用X 532提交诸如基于文件名的I/O存储请求536这样的基于文件名的I/O存储请求时,部分请求将含有FN_Key 538和FE_Key 539。取决于本发明的特定实现,FN_Key 538被系统映像500用作进入文件名保护表(FNPT)510的索引或者被适配器516用作进入适配器516的FNPT高速缓存530中的高速缓存的文件名保护表段535的索引。举例来说,FN_Key538可以是进入FNPT 510或高速缓存的FNPT段535的偏移,其中FN_Key538准许标识FNPT 510或高速缓存的FNPT段535中与文件名I/O存储工作请求的目标文件的文件名相对应的特定条目。
FE_Key 539由系统映像500用于访问文件扩展保护表(FEPT)502的区段中由对应于FN_Key 538的FNPT条目所引用的特定条目。可选地,在优选实施例中,FE_Key 539可以由适配器516用来访问FEPT的高速缓存段545中与FN_Key 538所标识的高速缓存的FNPT条目相对应的特定条目。
只有在适配器的文件名保护表高速缓存530和文件扩展保护表段高速缓存540中分别存在所需区段的情况下,才进行对高速缓存的文件名保护表段535和高速缓存的文件扩展保护表段545的访问。举例来说,如果适配器的高速缓存530和540内不存在所需区段,则可能需要将所需要的文件名和/或文件扩展保护表段从系统映像500加载到适配器的高速缓存530和540中。可选地,FE_Key检查逻辑519可以在系统映像500中直接访问文件名和/或文件扩展保护表段,例如,文件名保护表段511和/或文件扩展保护表段1 504。
当应用实例或中间件请求分配操作系统的文件系统中的文件时,生成FN_Key和FE_Key。也就是说,操作系统将分配适当的存储设备块来存储文件并且将为该文件在FNPT和FEPT中生成条目。作为生成这些条目的一部分,操作系统会将FN_Key和FE_Key分派给表中的条目并且将这些关键字报告回给发出请求的应用实例、中间件等。另外,当将新的文件扩展添加到现有文件时(例如,当文件的大小增加到超过已分配的存储设备部分时),可以进一步生成和分派文件扩展保护表条目以及由此的FE_Key。应用实例、中间件等然后可以在提交文件名I/O请求时将这些关键字用作与应用实例、中间件等关联的处理队列中的工作队列条目。
如以上所提及的,FN_Key和FE_Key用于在文件名保护表510和文件扩展保护表502,或者在高速缓存的文件名保护表段535和高速缓存的文件扩展保护表545中查找分别与FN_Key和FE_Key关联的条目。举例来说,FN_Key可以具有用于与存储在文件名保护表510/530的条目中的FN_Key实例相比较的值。类似地,FE_Key可以具有用于与FEPT段504/540中的文件扩展保护表条目的关键字实例字段相比较以便标识与FE_Key匹配的条目的值。可选地,举例来说,FN_Key和FE_Key可以是在表中用于从段起始地址偏移至表中的特定条目的偏移。
在本发明的优选实施例中,适配器516中的FE_Key检查逻辑519用于基于如上所述的FN_Key和FE_Key来进行对FNPT和FEPT中的条目的查找。此后,FE_Key检查逻辑519进行保护域检查以检验来自适配器516中的PQ上下文524的保护域与由基于文件名的I/O存储请求536中的FN_Key和FE_Key所指向的保护表条目N 520中的保护域相匹配。未通过FE_Key检查逻辑519的任何检查均导致操作错误地完成。在这样的情况下,操作系统(例如系统映像1500)可以拆卸在操作中进行传递的中间件或应用实例(例如应用实例X 532),或者可以采取不那么激烈的手段,例如返回带有错误完成的操作。
假设通过了先前在上面讨论的所有检查,那么由适配器516处理基于文件名的I/O存储请求,以便向/从由高速缓存的LBA表段550(或者可选地,与系统映像500关联的LBA表段570)中与FEPT段中的文件扩展保护表条目相对应的条目所引用的物理存储设备560(例如硬盘)的线性块地址读、写或读/写数据。
本发明使用FNPT、FEPT和LBA表来管理“用户空间”和“用户空间外”的基于文件名的I/O操作。用户空间是用于运行用户应用的系统存储器部分。在“用户空间”中进行的基于文件名的I/O操作包括与创建、修改、查询和删除FNPT、FEPT和LBA表条目有关的操作、应用对工作队列请求的提交和处理、系统映像所进行的其它I/O操作,等等。就本发明而言,在“用户空间外”进行的基于文件名的I/O操作包括在I/O适配器516中进行以便促进验证和执行对诸如物理存储设备560的物理存储设备的I/O请求的操作。
在应用实例与物理I/O适配器之间基于文件名的直接I/O操作期间,上述数据结构和机制用于控制诸如应用X 532的应用对存储设备560的各部分的访问。以下描述提供了与依照先前的上述机制来分配资源、创建工作队列条目和处理完成队列条目的方法有关的细节。
图6是依照本发明的示例性实施例概括了用于处理用户空间操作的调用的示例性操作的流程图。在本发明的示例性实施例中,图6中所概括的操作是由系统映像或操作系统响应于用户空间操作的调用而进行的。虽然示例性实施例使得这些操作在系统映像或操作系统中进行,但是本发明并不限于此。相反,举例来说,可以在用户空间应用、管理体等中进行该操作。
应当理解,可以通过计算机程序指令实现图6中流程图说明以及此后描述的后续附图中的流程图说明的块的组合。可以将这些计算机程序指令提供给处理器或其它可编程数据处理装置来产生机器,从而使得在处理器或其它可编程数据处理装置上执行的指令创建用于实现流程图块中所指定的功能的装置。还可以将这些计算机程序指令存储在可以指导处理器或其它可编程数据处理装置以特定方式运行的计算机可读存储器或存储介质中,从而使得存储在计算机可读存储器或存储介质中的指令产生包括实现流程图块中所指定的功能的指令装置在内的制品。
相应地,流程图说明的块支持用于实现指定功能的装置的组合、用于实现指定功能的步骤以及用于实现指定功能的程序指令装置的组合。还应该理解,流程图说明中的每个块以及流程图说明中块的组合可以由实现指定功能或步骤的基于硬件的专用计算机系统或者由专用硬件和计算机指令的组合来实现。
如图6中所示,操作开始于调用用户空间操作(步骤610)。例如,可以借助于用户管理接口、自动脚本/工作流等来实现调用。可以通过应用实例、系统映像等进行调用。可以实现此类调用的用户管理接口的一个例子是高级交互执行(AIX)操作系统中的原始模式(raw mode)I/O。其它操作系统可以具有类似的接口。调用该用户管理接口用于像创建卷、撤销卷之类的管理操作以及诸如读或写的功能操作。
对关于正调用的用户空间操作是否是资源管理操作进行确定(步骤615)。操作系统在此限制对基础硬件的访问,从而使得应用不能访问与其它应用关联的资源。因而,资源管理操作是必须由操作系统实现的操作,因为没有其它备选方案用于将应用的访问限于其拥有的资源。这样的操作的例子包括创建卷、查询卷、撤销卷。非资源管理操作是这样的操作,即在该操作下,通过本发明的机制,物理适配器可以将应用的访问限于其拥有的资源。非资源管理操作的例子是读和写操作。
如果操作不是资源管理操作,那么该操作便是处理队列操作。因此,对关于操作是否用于工作队列处理(例如,与发送队列中的条目关联的处理)进行确定(步骤620)。如果是的话,则调用工作队列条目插入过程来创建工作队列条目(步骤625)。如先前所讨论的以及此后在图7中概括的,该工作队列条目插入过程用于将工作请求提交给I/O适配器。
如果操作并非用于工作队列处理,那么调用完成队列条目检索过程(步骤630)。如此后较为详细描述的,完成队列条目检索过程用于为已由物理I/O适配器完成的工作请求而从物理I/O适配器中检索完成队列条目。
如果用户空间操作是资源管理操作(步骤615),那么对关于该操作是否是资源查询操作进行确定(步骤640)。如果该操作是资源查询操作,那么系统映像/操作系统从物理I/O适配器检索资源属性并将结果返回给调用用户空间操作的元件,例如,系统映像或应用实例(步骤645)。如此后较为详细讨论的,举例来说,该操作用于从LBA表条目和文件扩展保护表条目获取属性信息。
如果操作不是资源查询操作,那么对关于该操作是否是资源创建操作进行确定(步骤650)。如果该操作是资源创建操作,则对关于物理I/O适配器是否具有可用于分配给调用用户空间操作的元件的资源进行确定(步骤660)。举例来说,如以上所讨论的,适配器保护表中的每个文件扩展保护表条目均含有LBA表大小、扇区大小和长度。这些参数可以限制可供适配器用于分配的资源数。因而,物理I/O适配器可以确定没有足够的资源可用于分配给调用用户空间操作的元件。
如果存在可供分配的足够资源,那么在物理I/O适配器上分配这些资源,并且物理I/O适配器将该分配的结果返回给进行调用的元件(步骤665)。如果没有可供分配的足够资源,那么可以生成错误记录并将其返回给调用用户空间操作的元件(步骤670)。
如果操作不是资源创建操作(步骤650),那么对关于该操作是否是资源撤销操作(文中也称为“删除”或“解除分配”操作)进行确定(步骤675)。如果该操作是资源撤销操作,那么撤销物理I/O适配器上的资源并将操作结果返回给调用用户空间操作的元件(步骤680)。如果操作不是资源撤销操作,那么该操作是资源修改操作并在物理I/O适配器上修改指定资源的属性(步骤685)。该操作然后终止。
图7是概括了当所调用的用户空间操作是要求进行生成和处理或者工作队列元素的工作队列操作时本发明的示例性操作的流程图。举例来说,图7中所示出的操作对应于图6中的步骤625。
如图7所示,当应用实例将一个或多个工作队列条目添加到与应用实例和适配器关联的处理队列集的工作队列(例如发送队列)时,操作开始(步骤710)。如以上所讨论的,该工作队列条目包括FN_Key、FE_Key、保护域、将要进行的I/O操作的标识符,以及视情况的逻辑卷号和/或SCSILUN。
将处理队列门铃消息从应用实例发送至物理I/O适配器以通知物理I/O适配器最新递送的工作请求(步骤715)。在本发明的一个示例性实施例中,发送处理队列门铃消息涉及对与工作队列关联的门铃地址进行编程的I/O写入。如以上所讨论的,门铃消息用于将附加工作请求添加到物理I/O适配器的高速缓存的处理队列条目中的处理队列计数。
此后,物理I/O适配器根据文件保护表条目(即文件名保护表条目和文件扩展保护表条目)中存储的数据,对工作队列条目中所存储的信息进行验证检查(步骤720)。如以上所讨论的,这些检查可以包括基于FN_Key来查找文件名保护表中的条目以便由此标识文件扩展保护表的区段,并且然后基于FE_Key来查找所标识的区段内的文件扩展保护表条目。该检查还可以进一步包括,例如,检查所标识的文件扩展保护表条目中的保护域、逻辑卷号、SCSI标识号、SCSI逻辑单元号等与工作队列条目中的类似值之间的匹配。此后将较为详细地描述这些检查。
对关于是否成功完成了所有检查进行确定(步骤725)。如果成功完成了所有检查,则物理I/O适配器使用线性块地址(LBA)表将所标识的文件扩展保护表条目中引用的文件转换成LBA(例如,借助于LBA表指针),并且进行LBA包容性(containment)检查(步骤730)。因为应用实例与存储设备在不同的空间中操作,所以通过应用实例生成的基于文件名的I/O存储请求所引用的地址可能不同于存储设备的实际物理地址。LBA表条目为分配给特定文件的存储设备提供有关实际物理LBA的信息,如从对应的文件扩展保护表条目确定的。因而,可以借助于文件名保护表和文件扩展保护表,实现在基于文件名的I/O存储请求(以及由此的工作队列条目)中所引用的文件与LBA表中所引用的LBA之间的映射,以便确定基于文件名的I/O操作将要导向的实际物理LBA。
举例来说,文件扩展保护表条目中的LBA表指针可以用于访问LBA表中与文件扩展保护表条目相对应的一个或多个条目。从与文件扩展保护表条目相对应的LBA表条目,可以标识与文件扩展保护表条目相对应的盘线性块地址(LBA)的范围。然后可以使用这些LBA将工作队列条目中所引用的文件映射到物理存储设备的LBA。
返回到图7,对关于是否成功完成了LBA包容性检查进行确定(步骤735)。这些LBA包容性检查是这样的检查,即其确定与基于文件名的I/O操作(以及由此的工作队列条目)中所引用的文件相对应的映射LBA是否属于如在对应的LBA表条目中所标识的分配给应用实例的LBA。举例来说,如果应用实例尝试访问未分配给该应用实例的存储设备部分,那么至少一个LBA包容性检查会失败。如果未成功完成验证检查或包容性检查中的任何一个,则生成错误结果(步骤740)。
如果成功完成了验证和包容性检查,则物理I/O适配器将工作队列条目标记为有效(步骤750)并且实现与工作队列条目关联的所有功能,例如读、写、读/写(步骤755)。此后,或者在步骤740中生成错误结果之后,物理I/O适配器创建与工作队列条目关联的完成队列条目,并且进行直接存储器访问(DMA)操作以便将完成队列条目发送给应用实例(步骤760)。
然后对关于是否请求了完成队列事件进行确定(步骤765)。如果是的话,则物理I/O适配器生成完成队列事件(步骤770)并且终止操作。也就是说,在递送到处理队列的发送和接收队列的工作请求完成之后,将完成消息放入完成队列并且如果应用对其进行请求,则可以生成事件。
在图7中重要的是要注意,在步骤710和715之后,系统映像或操作系统不参与工作队列条目的处理。相反,物理I/O适配器实现所有必需的操作来进行有效性和包容性检查,实现与工作队列条目关联的功能,生成完成队列条目,以及将完成队列条目发送至主机。因而,通过本发明,可以避免I/O操作期间在已知系统中经历的多次任务切换,如以上在本发明的背景技术中所描述的,因为在I/O操作已经由操作系统或系统映像提交之后,在该I/O操作的实际检查和处理期间不必涉及操作系统或系统映像。仅再次利用操作系统或系统映像来检索与所处理的工作队列条目关联的完成队列条目,以及将该完成队列条目传递给应用。
图8中说明了用于确定工作队列条目是否有效以及是否可由物理I/O适配器处理而进行的示例性验证检查。举例来说,图8中所概括的验证检查操作可以对应于图7中的步骤720和725。
如图8中所示,操作开始于从工作队列(例如发送队列)为基于文件名的I/O操作检索下一工作队列条目(步骤810)。然后根据高速缓存的或系统映像常驻文件名保护表条目和文件扩展保护表条目检查该工作队列条目,以便确定是否可以进行对应的基于文件名的I/O操作。首先,使用工作队列条目中的FN_Key来查找对应于FN_Key的文件名保护表条目(步骤812)。文件名保护表条目包括指向与文件名保护表条目相对应的文件扩展保护表的区段的起始地址的指针(步骤814)。然后使用工作队列条目中的FE_Key来标识在所标识的文件扩展保护表的区段中的条目(步骤816)。然后检索所标识的文件扩展保护表条目的字段的数据,用于认证应用实例对于与工作队列条目中由FN_Key标识的文件相对应的存储设备部分的访问(步骤820)。
取决于本发明的特定实现,以上对于文件名保护表和文件扩展保护表中的条目的标识可以以多种不同的方式来实现。在一个例子中,FN_Key和FE_Key是表中从所标识的起始地址的偏移。在其它例子中,工作队列条目中的FN_Key和FE_Key具有这样的值,即将该值与文件名保护表和文件扩展保护表的条目中的关键字实例相比较,从而标识具有匹配值的条目。在不背离本发明的范围的情况下,可以使用用于标识每个表中的特定条目的其它机制。
在从所标识的文件扩展保护表条目中检索数据之后,对关于是否已经通过以上查找操作找到有效的文件扩展保护表条目进行确定(步骤830)。如果没有,则生成并返回错误结果(步骤840)。如以上所提及的,这可以通过查看文件扩展保护表的访问控制中的有效/无效比特来确定是否已将该比特设置成有效值来实现。此外,如果文件扩展保护表条目无效,则错误结果可以是,例如,拆卸在生成工作队列条目的工作请求中进行传递的中间件或应用实例,或者可以采取不那么激烈的手段,例如返回带有错误完成的操作。
如果已经找到了有效的文件扩展保护表条目,那么检查关联的文件扩展保护表条目是否支持将要结合工作队列条目而进行的I/O操作(步骤850)。举例来说,将适配器保护表条目的访问控制与工作队列条目中的I/O操作标识符进行比较,以确定文件扩展保护表条目是否指示可否进行I/O操作。
如果基于文件扩展保护表条目中的访问控制的设置不能进行I/O操作,那么该操作生成并返回错误结果(步骤840)。如果按照文件扩展保护表条目的指示可以进行I/O操作,那么对关于工作队列条目的保护域是否对应于文件扩展保护表条目的保护域进行确定(步骤860)。如果保护域不匹配,那么该操作生成并返回错误结果(步骤840)。
如果保护域匹配,那么可以对文件扩展保护表条目中的附加信息进行附加检查,并且可以对关于这些检查是否成功进行确定(步骤870)。如以上所提及的,这些附加检查可以包括,例如,检查文件扩展保护表的文件名字段以确定文件名与通过工作队列条目传递的文件名是否匹配(如果工作队列条目中存在文件名的话)。类似地,如果工作队列条目具有关联的LV号标识符和/或SCSI LUN标识符,那么可以对此信息进行附加检查。与先前的检查一样,如果这些检查的结果是工作队列条目与适配器保护表条目不匹配,那么生成并返回错误结果(步骤840)。应当理解,步骤870是任选的并且不是本发明的所有实施例中都出现此步骤。
如果通过了所有检查,则将工作队列条目预先标记为可由物理I/O适配器处理的有效工作队列条目(步骤880)。此有效性的预先标记仅意味着工作队列条目已通过第一组有效性检查。如上所述,工作队列条目在由物理I/O适配器处理之前还必须通过包容性检查。在步骤880之后,关于有效性检查而言操作结束,但是,如图7中所示,操作继续整个操作中的步骤730或740。
应当理解,虽然图8说明了为了处理基于文件名的I/O操作所进行的一系列检查,但是本发明并不限于所描绘的特定检查系列。相反,图8中所概括的操作仅是示例性的并且可以在不背离本发明的范围的情况下做出许多修改。举例来说,可以根据需要修改实现各种有效性检查的顺序,以便在不同操作顺序的情况下实现不同系列的有效性检查。此外,除了图8中所示出的有效性检查之外,或者代替图8中所示出的有效性检查,还可以将其它有效性检查用于本发明的示例性实施例。
图9是概括了当所调用的用户空间操作是完成队列检索过程操作时本发明的示例性操作的流程图。例如,图9中所示出的操作对应于图6中的步骤630。
如图9中所示,操作开始于轮询完成队列以确定是否存在准备要处理的任何完成队列条目(步骤910)。对关于是否任何完成队列条目准备要被处理进行确定(步骤920)。如果否,则将空结果返回给用户空间应用(步骤930)。如果存在准备要被处理的完成队列条目,则将下一完成队列条目返回给用户空间应用(步骤940)并且操作终止。
应当注意,图6至图9中所描述的以上操作适用于非虚拟和虚拟系统这二者中基于文件名的直接I/O操作。在虚拟系统中,仅有的附加可能是由操作系统或系统映像调用管理体或其它虚拟化机制以便在资源创建、修改、查询或删除期间帮助维护相连范围的虚拟LBA。
如以上所讨论的,关于图6中所概括的操作,本发明的机制涉及确定所调用的用户空间操作是否针对创建、查询、修改或删除对于应用与适配器之间基于文件名的直接I/O的资源分配。基于这些确定,操作系统或系统映像可以调用用于创建、修改、查询或删除资源分配的各种操作。现将参照图10至图13并根据本发明的文件名保护表、文件扩展保护表和线性决地址表来描述这些操作中的每一个。应当理解,可以为虚拟和非虚拟系统实现图10至图13中所示出的操作。因而,举例来说,可以基于逻辑卷、SCSI标识符或SCSI逻辑单元号来进行操作以便创建、修改、查询和删除或撤销文件名、文件扩展和LBA条目。
图10是依照本发明的示例性实施例概括了当在LBA表中创建LBA条目时本发明的示例性操作的流程图。举例来说,图10中所概括的操作对应于图6中的步骤665。
如图10中所示,操作开始于接收请求创建一个或多个文件保护表条目的用户空间操作,即分配与特定文件关联的一组LBA并且通过该组LBA使得应用实例和/或系统映像的直接I/O访问成为可能(步骤1010)。响应于接收到创建用户空间操作,操作系统或系统映像使用物理I/O适配器的存储管理接口来请求物理I/O适配器创建一个或多个文件保护表条目(步骤1020)。可以用多种不同的方式来实现存储管理接口。举例来说,存储管理接口可以是在其中可以将资源管理操作从系统映像传递至适配器的队列。
然后对关于I/O适配器是否具有足够的资源来完成请求进行确定(1030)。例如,I/O适配器可以检查文件保护表以确定条目是否可用,并且如果否,则确定是否可以创建另一文件保护表段。如果这些确定中的任一确定是肯定的,即文件保护表可以接纳分配,那么步骤1030中的确定是:I/O适配器具有足够的资源;否则确定是:I/O适配器没有足够的资源可用于分配。
如果有足够的资源可用于将所请求的文件和对应的LBA存储空间分配给应用实例,那么创建适当的文件名保护表、文件扩展保护表和LBA条目(步骤1040)。LBA条目标识映射到应用实例所请求的文件的物理存储设备LBA。文件扩展保护表条目为分配给文件的LBA标识访问控制、域保护、文件名等。举例来说,可以从请求文件分配的应用实例和用于提交文件分配请求的应用实例的处理队列(例如保护域)获取该信息。
物理I/O适配器然后将创建用户空间操作的结果返回给应用实例(步骤1050)。该结果可以包括,例如,为文件名保护表生成的FN_Key和FE_Key以及为文件创建的文件扩展保护表条目。另外,物理I/O适配器还可以通知应用实例可以由应用实例用来对物理I/O适配器进行基于文件名的直接I/O的LBA。
如果没有足够的资源来分配所请求的文件,那么物理I/O适配器不创建文件保护表条目(步骤1060)。物理I/O适配器然后将所得到的错误作为创建用户空间操作的结果返回给应用实例(步骤1050)。操作然后终止。
图11是概括了当处理作为资源修改操作的用户空间操作时本发明的示例性操作的流程图。举例来说,图11中所概括的操作可以对应于图6的步骤685。
如图11中所示,操作开始于从应用实例、系统映像等接收请求修改一个或多个文件保护表条目的用户空间操作(步骤1110)。系统映像然后使用物理I/O适配器的存储管理接口来请求物理适配器修改与应用实例或系统映像所标识的文件名关联的一个或多个文件保护表条目(步骤1120)。对关于物理I/O适配器是否具有足够的资源来完成修改请求进行确定(步骤1130)。
文件名保护表条目具有固定的字段集,并且因而,在已经创建文件名保护表条目之后,资源不足的情况不会用于该文件名保护表条目。文件扩展保护表在附加文件扩展被创建(即向特定文件分配LBA)时向其添加条目,并且因而受到LBA表段大小的限制。可以向LBA表段添加附加条目,并且如前所述,存在LBA表段可能用尽资源的情况。如果物理I/O适配器没有足够的资源可用于完成修改请求,则物理I/O适配器会将错误消息返回给应用实例,指示无法完成修改(步骤1140)。
如果存在足够的可用资源,则对关于正在被修改的文件保护表条目上是否存在任何有效I/O事务进行确定(步骤1150)。如果正在被修改的文件保护表条目上存在有效I/O事务,则物理I/O适配器启动计时器并且等待达到静点(quiescent point)(步骤1160)。静点是指在该点处,被修改的文件保护表条目上没有有效I/O事务。该检查以及等待静点是必要的,以便不会对文件保护表条目做出修改,该修改将导致系统损坏,因为有效I/O事务操作在先前的文件保护表条目属性下。
然后对关于是否在计时器超时之前达到静点进行确定(步骤1170)。如果否,则将错误消息返回给应用实例,指示无法完成修改(步骤1140)。如果在计时器超时之前达到静点,则物理I/O适配器修改文件保护表条目的属性(步骤1180),并且将经修改资源的属性返回给应用实例(步骤1190)。操作然后终止。
图12是概括了当处理查询用户空间操作时本发明的示例性操作的流程图。举例来说,图12中所概括的操作可以对应于图6的步骤645。
如图12中所示,操作开始于从应用实例、系统映像等接收请求查询文件保护表条目的属性的用户空间操作(步骤1210)。响应于接收到该用户空间操作,系统映像使用适配器的存储管理接口来请求物理I/O适配器查询一个或多个文件保护表条目(步骤1220)。物理I/O适配器然后将文件保护表条目的属性返回给应用实例(步骤1230)。
图13是概括了当处理撤销或删除用户空间操作时本发明的示例性操作的流程图。举例来说,图13中所示出的操作对应于图6的步骤680。例如,如果操作系统或系统映像允许由中间件或应用实例减少逻辑卷,则可以撤销或删除文件保护表条目。举例来说,该减少然后可以导致撤销或删除LBA表条目、文件扩展保护表,以及甚至是文件名保护表条目。
如图13中所示,操作开始于接收撤销或删除用户空间操作(步骤1310)。响应于接收到撤销或删除用户空间操作,系统映像使用物理I/O适配器的存储管理接口来请求物理I/O适配器撤销或删除一个或多个文件保护表条目(步骤1320)。对关于I/O事务在正被删除或撤销的文件保护表条目上是否有效进行确定(步骤1330)。
如果I/O事务在文件保护表条目上有效,则物理I/O适配器启动计时器并且等待达到静点(步骤1340)。然后对关于是否在计时器超时之前达到静点进行确定(步骤1350)。如果否,则物理I/O适配器创建错误结果并将错误结果返回给应用实例(步骤1360)。如果在计时器超时之前达到静点,或者如果文件保护表条目上没有有效I/O事务,则物理I/O适配器撤销或删除现有的文件保护表条目(步骤1370),并且将结果返回给应用实例(步骤1380)。当通过操作系统或系统映像撤销或删除文件保护表条目时,从文件保护表段中移除条目,并且释放盘中的LBA且使之可供其它应用使用。
应当注意,上述流程图中所概括的操作参照了在一个或多个文件保护表条目上进行的操作。当进行这样的操作时,可能还要求改变到其它的文件保护表条目。例如,在创建和修改操作期间,中间件或应用实例可以通过在LBA表中创建附加条目来增加与特定文件关联的LBA数。这又要求文件扩展保护表中的附加条目指向新的LBA表条目。类似地,在删除或撤销操作期间,操作系统或系统映像撤销一个或多个LBA表条目或区段,并且然后将关联的文件扩展保护表条目的访问控制字段设置成无效。
因而,利用本发明,检查所调用的用户空间操作以查看该操作是资源查询操作、资源创建操作、资源撤销操作、资源修改操作、工作队列操作还是完成队列操作。基于该确定,实现用于查询、创建、撤销和修改资源分配、工作队列条目以及完成队列条目的对应操作。因而,如果应用要求资源以便进行基于文件名的直接I/O操作,需要修改资源分配以便进行此类直接I/O操作,或者需要撤销资源分配,则本发明提供了实现这些目的的机制。另外,应用可以提交用于处理的工作队列条目,并且处理完成队列条目以获取与已由物理I/O适配器完成处理的工作队列条目有关的信息。以这样的方式,通过本发明的机制可以管理基于文件名的直接I/O操作。
此外,如上述示例性实施例所说明的,本发明提供了用于处理基于文件名的I/O操作的多个数据结构和机制。这些数据结构和机制提供了使用文件保护表访问控制来处理队列到线性块地址转换。该机制确保只有与文件(以及因而对应的存储设备部分)关联的应用才可以实际访问存储设备部分。包括关键字检查和保护域检查在内的多个验证检查用于维护此安全级别。这些检查确保应用实例正在访问有效的适配器保护表条目,并且应用有权访问与有效的文件扩展保护表条目关联的存储设备部分。
应当注意,虽然本发明的示例性实施例的以上机制利用操作系统或系统映像来进行有关创建和管理文件保护表条目的许多操作,但是这些操作通常并不随适配器所处理的每个工作请求而实现。也就是说,操作系统或系统映像仅参与建立文件保护表条目和注册具有关联的文件/LBA的应用实例/中间件。不需要操作系统或系统映像来处理中间件或应用实例所提交的每个实际工作请求,因为应用和适配器可以使用文件保护表和上述机制来处理工作请求。因此,本发明消除了如以上在本发明的背景技术中所解释的现有技术机制所需的上下文切换及其关联的开销。
重要的是要注意到,虽然已经在全功能数据处理系统的环境中描述了本发明,但是本领域的普通技术人员应该理解,能够以指令的计算机可读介质的形式和各种形式来分布本发明的诸过程,并且本发明可等同地应用而与实际用于实现分布的信号承载介质的特定类型无关。计算机可读介质的例子包括可记录型介质,例如软盘、硬盘驱动、RAM、CD-ROM、DVD-ROM,以及传输型介质,例如数字和模拟通信链路、使用例如像射频和光波传输之类的传输形式的有线或无线通信链路。计算机可读介质可以采取编码格式的形式,可以对其解码以便在特定的数据处理系统中实际使用。
已经出于说明和描述的目的给出了本发明的描述,且并不旨在以所公开的形式穷举或限制本发明。对本领域的普通技术人员来说,很多修改和变形将是显而易见的。选择和描述实施例是为了最好地解释本发明的原理、实际应用,以及使本领域的普通技术人员能够针对适于预期的特定用途的各种实施例以及各种修改来理解本发明。

Claims (37)

1.一种用于管理I/O的方法,其包括以下步骤:
从与应用实例关联的处理队列接收处理队列条目,其中所述处理队列条目引用文件;
使用文件保护表数据结构检验关联于所述处理队列条目的文件与所述应用实例相关联;以及
如果所述处理队列条目所引用的文件与所述应用实例关联,则处理所述处理队列条目,其中在没有主机系统的系统映像干预的情况下,在输入/输出(I/O)适配器中直接从所述应用实例接收所述处理队列条目。
2.根据权利要求1的方法,其中在耦合于运行所述应用实例的主机系统的I/O适配器中实现所述方法。
3.根据权利要求1或2的方法,其中所述处理队列条目包括引用了文件名保护表中的条目的文件名关键字(FN_Key)值,并且其中所述文件名保护表具有由操作系统的文件系统管理的每个文件的条目。
4.根据权利要求3的方法,其中所述处理队列条目包括引用了文件扩展保护表中的条目的文件扩展关键字(FE_Key)值,并且其中所述文件扩展保护表具有分配给由所述操作系统的文件系统管理的文件的每组线性块地址的条目。
5.根据权利要求4的方法,其中所述文件保护表数据结构包括所述文件名保护表的I/O适配器常驻高速缓存部分以及所述文件扩展保护表的I/O适配器常驻高速缓存部分。
6.根据权利要求4或5的方法,其中文件保护数据结构包括所述文件名保护表和文件扩展保护表,并且其中所述文件名保护表和文件扩展保护表驻留在所述主机系统上。
7.根据权利要求4至6中任何一项的方法,其中所述检验步骤进一步包括以下步骤:
处理所述处理队列条目中的FN_Key值,以便标识与所述FN_Key相对应的文件名保护表条目;
处理所述文件名保护表条目,以便标识与所述文件名保护表条目相对应的文件扩展保护表的区段;
处理所述处理队列条目中的FE_Key值,以便标识与所述FE_Key相对应的文件扩展保护表条目;以及
确定是否分配了由所述文件扩展保护表条目所标识的存储设备的一个或多个部分来由所述应用实例进行访问。
8.根据权利要求7的方法,其中所述确定步骤进一步包括以下步骤:
将所述文件扩展保护表条目中所引用的第一保护域和与所述处理队列条目关联的处理队列上下文中所含的第二保护域进行比较;以及
如果所述第一保护域与所述第二保护域相匹配,则确定分配了由所标识的文件扩展保护表条目引用的存储设备的一个或多个部分来由所述应用实例进行访问。
9.根据权利要求8的方法,其中如果所述处理队列条目所引用的文件与所述应用实例关联,则所述处理所述处理队列条目的步骤进一步包括以下步骤:
基于所述文件扩展保护表条目在存储块地址表中进行查找操作,以便标识与所述文件扩展保护表条目相对应的至少一个存储块地址表条目;以及
在由包括在所述文件扩展保护表条目中的存储块地址所引用的存储设备中的存储位置上进行I/O操作。
10.根据权利要求4至9中任何一项的方法,其进一步包括以下步骤:
基于所述处理队列条目中所提供的FN_Key和FE_Key,标识与所述处理队列条目的目标文件相关联的存储设备部分的获准访问类型;以及
基于与所述处理队列条目的目标文件相关联的存储设备部分的获准访问类型,在所述处理队列条目上进行验证检查,其中仅当成功完成在所述处理队列条目上的验证检查时才处理所述处理队列条目。
11.根据权利要求10的方法,其中所述标识步骤进一步包括以下步骤:
从文件名保护表(FNPT)数据结构中检索与所述FN_Key相对应的文件名保护表条目;
标识与所述文件名保护表条目相对应的文件扩展保护表(FEPT)数据结构的区段;
基于所标识的FEPT的区段以及所述FE_Key,从所述FEPT数据结构中检索FEPT条目;以及
标识所检索的FEPT条目中的验证信息,用于在进行对所述获准访问类型的标识中使用以及用于进行所述验证检查。
12.根据权利要求11的方法,其中所述FEPT条目存储了一个或多个访问控制值,所述一个或多个访问控制值标识了在与所述FEPT条目关联的存储设备部分上获准的访问类型。
13.根据权利要求12的方法,其中所述一个或多个访问控制值包括有效标识访问控制值和获准操作访问控制值。
14.根据权利要求13的方法,其中如果所述有效标识访问控制值具有第一值,则所述FEPT条目有效,并且其中如果所述获准操作访问控制值具有所述第一值,则准许在所述存储设备的关联部分上进行读和写操作。
15.根据权利要求13或14的方法,其中在所述处理队列条目上进行验证检查的步骤进一步包括以下步骤:
确定所述FEPT条目的有效标识访问控制值的值是否指示所述FEPT条目有效。
16.根据权利要求15的方法,其中如果所述FEPT条目的有效标识访问控制值指示所述FEPT条目有效,并且所述处理队列条目正请求的访问类型是读操作,那么成功完成在所述处理队列条目上的验证检查。
17.根据权利要求15的方法,其中如果所述FEPT条目的有效标识访问控制值指示所述FEPT条目有效,所述获准操作访问控制值指示准许写操作,并且所述处理队列条目正请求的访问类型是写操作,那么成功完成在所述处理队列条目上的验证检查。
18.根据权利要求11至17中任何一项的方法,其中在所述处理队列条目上进行验证检查的步骤进一步包括以下步骤:
确定与所述处理队列条目的目标文件关联的存储设备部分是否处在与所述FEPT条目关联的存储设备部分的范围内;以及
如果与所述处理队列条目的目标文件关联的存储设备部分处在与所述FEPT条目关联的存储设备部分的范围之外,则拒绝对于与所述处理队列条目的目标文件关联的存储设备部分的访问。
19.一种用于管理I/O的装置,其包括:
处理器;以及
耦合于所述处理器的存储器,其中所述处理器:
从与应用实例关联的处理队列接收处理队列条目,其中所述处理队列条目引用文件;
使用存储在所述存储器中的文件保护表数据结构检验关联于所述处理队列条目的文件与所述应用实例相关联;以及
如果所述处理队列条目所引用的文件与所述应用实例关联,则处理所述处理队列条目,其中在没有主机系统的系统映像干预的情况下,在输入/输出(I/O)适配器中直接从所述应用实例接收所述处理队列条目。
20.根据权利要求19的装置,其中数据处理设备是耦合于运行所述应用实例的主机系统的I/O适配器,并且其中,在所述I/O适配器中进行所述处理器的接收、检验和处理操作。
21.根据权利要求19或20的装置,其中所述处理队列条目包括引用了文件名保护表中的条目的文件名关键字(FN_Key)值,并且其中所述文件名保护表具有由操作系统的文件系统管理的每个文件的条目。
22.根据权利要求21的装置,其中所述处理队列条目包括引用了文件扩展保护表中的条目的文件扩展关键字(FE_Key)值,并且其中所述文件扩展保护表具有分配给由所述操作系统的文件系统管理的文件的每组线性块地址的条目。
23.根据权利要求22的装置,其中所述文件保护表数据结构包括所述文件名保护表的I/O适配器常驻高速缓存部分以及所述文件扩展保护表的I/O适配器常驻高速缓存部分。
24.根据权利要求22或23的装置,其中文件保护数据结构包括所述文件名保护表和文件扩展保护表,并且其中所述文件名保护表和文件扩展保护表驻留在所述主机系统上。
25.根据权利要求22至24中任何一项的装置,其中所述处理器通过以下操作检验所述处理队列条目所引用的文件与所述应用实例关联:
处理所述处理队列条目中的FN_Key值,以便标识与所述FN_Key相对应的文件名保护表条目;
处理所述文件名保护表条目,以便标识与所述文件名保护表条目相对应的文件扩展保护表的区段;
处理所述处理队列条目中的FE_Key值,以便标识与所述FE_Key相对应的文件扩展保护表条目;以及
确定是否分配了由所述文件扩展保护表条目所标识的存储设备的一个或多个部分来由所述应用实例进行访问。
26.根据权利要求25的装置,其中所述处理器通过以下操作确定是否分配了由所标识的文件扩展保护表条目引用的存储设备的一个或多个部分来由所述应用实例进行访问:
将所述文件扩展保护表条目中所引用的第一保护域和与所述处理队列条目关联的处理队列上下文中所含的第二保护域进行比较;以及
如果所述第一保护域与所述第二保护域相匹配,则确定分配了由所标识的文件扩展保护表条目引用的存储设备的一个或多个部分来由所述应用实例进行访问。
27.根据权利要求26的装置,其中如果所述处理队列条目所引用的文件与所述应用实例关联,则所述处理器通过以下操作处理所述处理队列条目:
基于所述文件扩展保护表条目在存储块地址表中进行查找操作,以便标识与所述文件扩展保护表条目相对应的至少一个存储块地址表条目;以及
发布命令,以便在由包括在所述文件扩展保护表条目中的存储块地址所引用的存储设备中的存储位置上进行I/O操作。
28.根据权利要求22至27中任何一项的装置,其中所述处理器进一步:
基于所述处理队列条目中所提供的FN_Key和FE_Key,标识与所述处理队列条目的目标文件相关联的存储设备部分的获准访问类型;以及
基于与所述处理队列条目的目标文件相关联的存储设备部分的获准访问类型,在所述处理队列条目上进行验证检查,其中仅当成功完成在所述处理队列条目上的验证检查时才处理所述处理队列条目。
29.根据权利要求28的装置,其中所述处理器通过以下操作进行标识:
从文件名保护表(FNPT)数据结构检索与所述FN_Key相对应的文件名保护表条目;
标识与所述文件名保护表条目相对应的文件扩展保护表(FEPT)数据结构的区段;
基于所标识的FEPT的区段以及所述FE_Key,从所述FEPT数据结构中检索FEPT条目;以及
标识所检索的FEPT条目中的验证信息,用于在进行对所述获准访问类型的标识中使用以及用于进行所述验证检查。
30.根据权利要求29的装置,其中所述FEPT条目存储了一个或多个访问控制值,所述一个或多个访问控制值标识了在与所述FEPT条目关联的存储设备部分上获准的访问类型。
31.根据权利要求30的装置,其中所述一个或多个访问控制值包括有效标识访问控制值和获准操作访问控制值。
32.根据权利要求31的装置,其中如果所述有效标识访问控制值具有第一值,则所述FEPT条目有效,并且其中如果所述获准操作访问控制值具有所述第一值,则准许在所述存储设备的关联部分上进行读和写操作。
33.根据权利要求31或32的装置,其中所述处理器通过以下操作在所述处理队列条目上进行验证检查:
确定所述FEPT条目的有效标识访问控制值的值是否指示所述FEPT条目有效。
34.根据权利要求33的装置,其中如果所述FEPT条目的有效标识访问控制值指示所述FEPT条目有效,并且所述处理队列条目正请求的访问类型是读操作,那么成功完成在所述处理队列条目上的验证检查。
35.根据权利要求33的装置,其中如果所述FEPT条目的有效标识访问控制值指示所述FEPT条目有效,所述获准操作访问控制值指示准许写操作,并且所述处理队列条目正请求的访问类型是写操作,那么成功完成在所述处理队列条目上的验证检查。
36.根据权利要求29至35中任何一项的装置,其中所述处理器通过以下操作在所述处理队列条目上进行验证检查:
确定与所述处理队列条目的目标文件关联的存储设备部分是否处在与所述FEPT条目关联的存储设备部分的范围内;以及
如果与所述处理队列条目的目标文件关联的存储设备部分处在与所述FEPT条目关联的存储设备部分的范围之外,则拒绝对于与所述处理队列条目的目标文件关联的存储设备部分的访问。
37.一种包括程序代码装置的计算机程序,当所述程序在计算机上运行时,所述程序代码装置适于实现权利要求1至18中任何一项的方法的所有步骤。
CN200680031546.7A 2005-08-31 2006-08-11 用于管理i/o的方法 Expired - Fee Related CN101253500B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/216,832 US7577761B2 (en) 2005-08-31 2005-08-31 Out of user space I/O directly between a host system and a physical adapter using file based linear block address translation
US11/216,832 2005-08-31
PCT/EP2006/065249 WO2007025850A1 (en) 2005-08-31 2006-08-11 A method for managing i/o

Publications (2)

Publication Number Publication Date
CN101253500A true CN101253500A (zh) 2008-08-27
CN101253500B CN101253500B (zh) 2012-09-19

Family

ID=37192663

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200680031546.7A Expired - Fee Related CN101253500B (zh) 2005-08-31 2006-08-11 用于管理i/o的方法

Country Status (4)

Country Link
US (1) US7577761B2 (zh)
CN (1) CN101253500B (zh)
TW (1) TWI391835B (zh)
WO (1) WO2007025850A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102314514A (zh) * 2011-09-20 2012-01-11 北京航空航天大学 一种表格数据结构化的作用域方法
CN104077198A (zh) * 2014-06-19 2014-10-01 华为技术有限公司 门铃db恢复方法及装置、具有该装置的输入/输出i/o设备
CN107111495A (zh) * 2015-01-05 2017-08-29 谷歌公司 用于虚拟和接口方法调用的装置和方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7464189B2 (en) * 2005-05-23 2008-12-09 International Business Machines Corporation System and method for creation/deletion of linear block address table entries for direct I/O
GB2507339A (en) * 2012-10-29 2014-04-30 Ibm Accessing privileged objects in a server by means of semi privileged instruction
US9183161B2 (en) 2012-12-28 2015-11-10 Intel Corporation Apparatus and method for page walk extension for enhanced security checks
US9584628B2 (en) 2015-03-17 2017-02-28 Freescale Semiconductor, Inc. Zero-copy data transmission system
US20180077125A1 (en) * 2016-09-09 2018-03-15 Quirklogic, Inc. Method and system for securely sharing content

Family Cites Families (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4796178A (en) 1985-10-15 1989-01-03 Unisys Corporation Special purpose processor for off-loading many operating system functions in a large data processing system
US5369749A (en) 1989-05-17 1994-11-29 Ibm Corporation Method and apparatus for the direct transfer of information between application programs running on distinct processors without utilizing the services of one or both operating systems
US5414851A (en) 1992-06-15 1995-05-09 International Business Machines Corporation Method and means for sharing I/O resources by a plurality of operating systems
US5313592A (en) 1992-07-22 1994-05-17 International Business Machines Corporation Method and system for supporting multiple adapters in a personal computer data processing system
EP0610677A3 (en) 1993-02-12 1995-08-02 Ibm Communication device management module operating in two modes.
US5377337A (en) 1993-06-08 1994-12-27 International Business Machines Corporation Method and means for enabling virtual addressing control by software users over a hardware page transfer control entity
US5991753A (en) 1993-06-16 1999-11-23 Lachman Technology, Inc. Method and system for computer file management, including file migration, special handling, and associating extended attributes with files
US5845331A (en) 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US5901312A (en) 1994-12-13 1999-05-04 Microsoft Corporation Providing application programs with unmediated access to a contested hardware resource
US5732269A (en) 1995-04-21 1998-03-24 International Business Machines Corporation Data adapter transparent to application I/O path
US5680640A (en) 1995-09-01 1997-10-21 Emc Corporation System for migrating data by selecting a first or second transfer means based on the status of a data element map initialized to a predetermined state
US6009476A (en) 1995-11-21 1999-12-28 Diamond Multimedia Systems, Inc. Device driver architecture supporting emulation environment
US5968143A (en) 1995-12-13 1999-10-19 International Business Machines Corporation Information handling system for transfer of command blocks to a local processing side without local processor intervention
KR0164106B1 (ko) 1995-12-26 1998-12-01 양승택 에이티엠 가상 경로 교환 시스템에서 예약형 가상 경로 제어를 위한 발신 및 착신 처리 방법
US5659798A (en) 1996-02-02 1997-08-19 Blumrich; Matthias Augustin Method and system for initiating and loading DMA controller registers by using user-level programs
JPH1040211A (ja) 1996-04-30 1998-02-13 Texas Instr Inc <Ti> パケット化されたデータ通信インタフェース機器内での直接メモリアクセス優先順位を割り当てるための方法ならびにdmaチャンネル回路
US5893919A (en) 1996-09-27 1999-04-13 Storage Computer Corporation Apparatus and method for storing data with selectable data protection using mirroring and selectable parity inhibition
US6092168A (en) 1996-10-25 2000-07-18 Hewlett-Packard Co. Data storage system and method for deallocating space by writing and detecting a predefined data pattern
US5926833A (en) 1997-03-24 1999-07-20 International Business Machines Corporation Method and system allowing direct data access to a shared data storage subsystem by heterogeneous computing systems
JPH10289158A (ja) 1997-04-11 1998-10-27 Hitachi Ltd タスク管理装置
US6192408B1 (en) 1997-09-26 2001-02-20 Emc Corporation Network file server sharing local caches of file access information in data processors assigned to respective file systems
US6061794A (en) 1997-09-30 2000-05-09 Compaq Computer Corp. System and method for performing secure device communications in a peer-to-peer bus architecture
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6360282B1 (en) 1998-03-25 2002-03-19 Network Appliance, Inc. Protected control of devices by user applications in multiprogramming environments
US6145030A (en) 1998-03-27 2000-11-07 Intel Corporation System for managing input/output address accesses at a bridge/memory controller
US6336187B1 (en) 1998-06-12 2002-01-01 International Business Machines Corp. Storage system with data-dependent security
US6421711B1 (en) 1998-06-29 2002-07-16 Emc Corporation Virtual ports for data transferring of a data storage system
US6493825B1 (en) 1998-06-29 2002-12-10 Emc Corporation Authentication of a host processor requesting service in a data processing network
US6115772A (en) 1998-09-18 2000-09-05 International Business Machines, Inc. System and method for host expansion and connection adaptability for a SCSI storage array
US6247024B1 (en) 1998-09-25 2001-06-12 International Business Machines Corporation Method and system for performing deferred file removal in a file system
CA2292041A1 (en) 1998-12-22 2000-06-22 Scott Alan Thomson Software program protection mechanism
US6345301B1 (en) 1999-03-30 2002-02-05 Unisys Corporation Split data path distributed network protocol
US6584612B1 (en) * 1999-07-15 2003-06-24 International Business Machines Corporation Transparent loading of resources from read-only memory for an application program
WO2001018688A2 (en) 1999-09-10 2001-03-15 Avantgo, Inc. System, method, and computer program product for interactive interfacing with mobile devices
US6594787B1 (en) 1999-09-17 2003-07-15 Silicon Graphics, Inc. Input/output device managed timer process
US6345347B1 (en) 1999-09-27 2002-02-05 International Business Machines Corporation Address protection using a hardware-defined application key
US6665747B1 (en) 1999-10-22 2003-12-16 Sun Microsystems, Inc. Method and apparatus for interfacing with a secondary storage system
US6550061B1 (en) 1999-12-02 2003-04-15 Dell Usa, L.P. System and method for modifying configuration files in a secured operating system
US6718372B1 (en) 2000-01-07 2004-04-06 Emc Corporation Methods and apparatus for providing access by a first computing system to data stored in a shared storage device managed by a second computing system
US6757291B1 (en) 2000-02-10 2004-06-29 Simpletech, Inc. System for bypassing a server to achieve higher throughput between data network and data storage system
US6654818B1 (en) 2000-06-22 2003-11-25 International Business Machines Corporation DMA access authorization for 64-bit I/O adapters on PCI bus
US6728721B1 (en) 2000-06-23 2004-04-27 Microsoft Corporation System and method for maintaining a user's state within a database table
WO2002001410A1 (en) 2000-06-26 2002-01-03 International Business Machines Corporation Data management application programming interface for a parallel file system
US6842784B1 (en) 2000-06-27 2005-01-11 Emc Corporation Use of global logical volume identifiers to access logical volumes stored among a plurality of storage elements in a computer storage system
US6813635B1 (en) 2000-10-13 2004-11-02 Hewlett-Packard Development Company, L.P. System and method for distributing load among redundant independent stateful world wide web server sites
US6704831B1 (en) 2000-11-16 2004-03-09 Sun Microsystems, Inc. Method and apparatus for converting address information between PCI bus protocol and a message-passing queue-oriented bus protocol
US20020104008A1 (en) 2000-11-30 2002-08-01 Cochran Robert A. Method and system for securing control-device-lun-mediated access to luns provided by a mass storage device
US20020071567A1 (en) 2000-12-12 2002-06-13 Kurn David Michael Scalable computer system using remote agents to manipulate cryptographic keys
US6925547B2 (en) 2000-12-14 2005-08-02 Silicon Graphics, Inc. Remote address translation in a multiprocessor system
DE60142152D1 (de) 2000-12-15 2010-07-01 Ibm Virtualisierung von E/A-Adapterressourcen
US6931450B2 (en) 2000-12-18 2005-08-16 Sun Microsystems, Inc. Direct access from client to storage device
US7085705B2 (en) 2000-12-21 2006-08-01 Microsoft Corporation System and method for the logical substitution of processor control in an emulated computing environment
US6938138B2 (en) 2001-01-11 2005-08-30 International Business Machines Corporation Method and apparatus for managing access to memory
US6753873B2 (en) 2001-01-31 2004-06-22 General Electric Company Shared memory control between detector framing node and processor
US6721847B2 (en) * 2001-02-20 2004-04-13 Networks Associates Technology, Inc. Cache hints for computer file access
US6578122B2 (en) 2001-03-01 2003-06-10 International Business Machines Corporation Using an access key to protect and point to regions in windows for infiniband
US7631160B2 (en) 2001-04-04 2009-12-08 Advanced Micro Devices, Inc. Method and apparatus for securing portions of memory
US6952746B2 (en) 2001-06-14 2005-10-04 International Business Machines Corporation Method and system for system performance optimization via heuristically optimized buses
JP2003022206A (ja) 2001-07-06 2003-01-24 Fujitsu Ltd ファイル管理プログラムおよびファイル管理装置
US6681311B2 (en) 2001-07-18 2004-01-20 Ip-First, Llc Translation lookaside buffer that caches memory type information
US6725296B2 (en) 2001-07-26 2004-04-20 International Business Machines Corporation Apparatus and method for managing work and completion queues using head and tail pointers
JP2003044420A (ja) 2001-07-27 2003-02-14 Fujitsu Ltd デバイスドライバ装置
US6834332B2 (en) 2001-08-30 2004-12-21 International Business Machines Corporation Apparatus and method for swapping-out real memory by inhibiting i/o operations to a memory region and setting a quiescent indicator, responsive to determining the current number of outstanding operations
US6789143B2 (en) 2001-09-24 2004-09-07 International Business Machines Corporation Infiniband work and completion queue management via head and tail circular buffers with indirect work queue entries
US7177935B2 (en) 2001-10-05 2007-02-13 International Business Machines Corporation Storage area network methods and apparatus with hierarchical file system extension policy
JP2003131924A (ja) 2001-10-19 2003-05-09 Fujitsu Ltd リモートアクセスプログラム、リモートアクセス要求処理プログラム、およびクライアントコンピュータ
US7272832B2 (en) 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
US6845403B2 (en) 2001-10-31 2005-01-18 Hewlett-Packard Development Company, L.P. System and method for storage virtualization
US6748499B2 (en) * 2001-11-15 2004-06-08 International Business Machines Corporation Sharing memory tables between host channel adapters
US6763423B2 (en) 2001-11-30 2004-07-13 International Business Machines Corporation Storage area network methods and apparatus for logical-to-physical block address mapping
US20030110445A1 (en) 2001-12-07 2003-06-12 Ferdouse Khaleque Method and architecture for building client-server applications
US20030110205A1 (en) 2001-12-07 2003-06-12 Leith Johnson Virtualized resources in a partitionable server
US7113937B2 (en) * 2001-12-18 2006-09-26 International Business Machines Corporation Systems, methods, and computer program products to improve performance of ported applications, such as a database, operating on UNIX system services for the OS/390
US8234360B2 (en) 2002-04-23 2012-07-31 Microsoft Corporation System for processing messages to support network telephony services
JP4382328B2 (ja) 2002-06-11 2009-12-09 株式会社日立製作所 セキュアストレージシステム
US7024672B2 (en) 2002-06-26 2006-04-04 Microsoft Corporation Process-mode independent driver model
JP4007873B2 (ja) 2002-07-09 2007-11-14 富士通株式会社 データ保護プログラムおよびデータ保護方法
US20040049580A1 (en) 2002-09-05 2004-03-11 International Business Machines Corporation Receive queue device with efficient queue flow control, segment placement and virtualization mechanisms
US20040049603A1 (en) 2002-09-05 2004-03-11 International Business Machines Corporation iSCSI driver to adapter interface protocol
US20040078521A1 (en) 2002-10-17 2004-04-22 International Business Machines Corporation Method, apparatus and computer program product for emulating an iSCSI device on a logical volume manager
US8214531B2 (en) 2002-10-24 2012-07-03 Emulex Design & Manufacturing Corporation Network configuration synchronization for hardware accelerated network protocol
US7266083B2 (en) 2003-02-26 2007-09-04 International Business Machines Corporation Method and apparatus for implementing queue pair connection protection over infiniband
US7103744B2 (en) 2003-03-27 2006-09-05 Hewlett-Packard Development Company, L.P. Binding a memory window to a queue pair
US6996638B2 (en) 2003-05-12 2006-02-07 International Business Machines Corporation Method, system and program products for enhancing input/output processing for operating system images of a computing environment
JP3649226B2 (ja) 2003-05-20 2005-05-18 セイコーエプソン株式会社 データ転送制御装置、電子機器及びデータ転送制御方法
CN100363855C (zh) 2003-07-04 2008-01-23 诺基亚有限公司 密钥存储管理方法、装置及其系统
US7124207B1 (en) 2003-08-14 2006-10-17 Adaptec, Inc. I2O command and status batching
US20050066076A1 (en) 2003-09-18 2005-03-24 International Business Machines Corporation Method for fast recovery of I/O failure on a file system
US20050091383A1 (en) 2003-10-14 2005-04-28 International Business Machines Corporation Efficient zero copy transfer of messages between nodes in a data processing system
US7234004B2 (en) 2003-12-19 2007-06-19 International Business Machines Corporation Method, apparatus and program product for low latency I/O adapter queuing in a computer system
JP4227035B2 (ja) 2004-02-03 2009-02-18 株式会社日立製作所 計算機システム、管理装置、ストレージ装置及びコンピュータ装置
US20050246453A1 (en) 2004-04-30 2005-11-03 Microsoft Corporation Providing direct access to hardware from a virtual environment
US8131674B2 (en) * 2004-06-25 2012-03-06 Apple Inc. Methods and systems for managing data
DE602005003987T2 (de) 2004-07-23 2008-12-11 Stmicroelectronics S.A. Verfahren zur Programmierung einer System auf Chip DMA Steuerung, sowie ein System auf Chip dafür.
US7386637B2 (en) 2005-02-25 2008-06-10 International Business Machines Corporation System, method, and computer program product for a fully trusted adapter validation of incoming memory mapped I/O operations on a physical adapter that supports virtual adapters or virtual resources
US7376770B2 (en) 2005-02-25 2008-05-20 International Business Machines Corporation System and method for virtual adapter resource allocation matrix that defines the amount of resources of a physical I/O adapter

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102314514A (zh) * 2011-09-20 2012-01-11 北京航空航天大学 一种表格数据结构化的作用域方法
CN104077198A (zh) * 2014-06-19 2014-10-01 华为技术有限公司 门铃db恢复方法及装置、具有该装置的输入/输出i/o设备
CN104077198B (zh) * 2014-06-19 2017-06-06 华为技术有限公司 门铃db恢复方法及装置、具有该装置的输入/输出i/o设备
CN107111495A (zh) * 2015-01-05 2017-08-29 谷歌公司 用于虚拟和接口方法调用的装置和方法
CN107111495B (zh) * 2015-01-05 2020-11-17 谷歌有限责任公司 用于虚拟和接口方法调用的装置和方法

Also Published As

Publication number Publication date
US7577761B2 (en) 2009-08-18
TWI391835B (zh) 2013-04-01
WO2007025850A1 (en) 2007-03-08
TW200745882A (en) 2007-12-16
US20070061493A1 (en) 2007-03-15
CN101253500B (zh) 2012-09-19

Similar Documents

Publication Publication Date Title
CN100465898C (zh) 用于i/o适配器的方法和装置
CN1924842B (zh) 用于i/o适配器的方法和装置
CN101253500B (zh) 用于管理i/o的方法
US7502872B2 (en) Method for out of user space block mode I/O directly between an application instance and an I/O adapter
US7464189B2 (en) System and method for creation/deletion of linear block address table entries for direct I/O
CN101233514B (zh) 管理输入/输出的方法
US6647423B2 (en) Direct message transfer between distributed processes
CN1983185A (zh) 在操作系统实例中共享输入/输出适配器的方法和系统
US7149865B2 (en) Memory allocation using mask-bit pattern to encode metadata within memory address
JP4521865B2 (ja) ストレージシステム、計算機システムまたは記憶領域の属性設定方法
JP2003271429A (ja) 記憶装置資源管理方法、記憶資源管理プログラム、該プログラムを記録した記録媒体、及び記憶資源管理装置
US20070005815A1 (en) System and method for processing block mode I/O operations using a linear block address translation protection table
US7552240B2 (en) Method for user space operations for direct I/O between an application instance and an I/O adapter
US20060265525A1 (en) System and method for processor queue to linear block address translation using protection table control based on a protection domain
JPWO2009066611A1 (ja) 仮想マシン向けデータ格納システム、データ格納方法およびデータ格納用プログラム
US7502871B2 (en) Method for query/modification of linear block address table entries for direct I/O
JP5183448B2 (ja) 情報処理装置及び情報処理方法及びプログラム
US8200935B2 (en) Storage capacity allocation control apparatus and method thereof
JP3752193B2 (ja) ホスト・オペレーティング・システムとゲスト・オペレーティング・システムとの間でアクセス装置の使用を割り振る方法
US8639856B2 (en) SCSI reservation status information on a SAN disk
JP5760592B2 (ja) 共有ファイルシステムのストレージアクセス制御方法
JP4060890B2 (ja) 階層化ドライバ入出力システム内の複数ドライバによる入出力要求の再処理を可能にするファイル・システム・プリミティブ
JP3691873B2 (ja) 複合計算機システムにおけるファイル転送システム
Commands dpANS Project T10/1416-D
JPH10320359A (ja) コンピュータネットワーク環境におけるスワップ領域管理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120919

Termination date: 20200811

CF01 Termination of patent right due to non-payment of annual fee