CN1924842B - 用于i/o适配器的方法和装置 - Google Patents
用于i/o适配器的方法和装置 Download PDFInfo
- Publication number
- CN1924842B CN1924842B CN2006101083312A CN200610108331A CN1924842B CN 1924842 B CN1924842 B CN 1924842B CN 2006101083312 A CN2006101083312 A CN 2006101083312A CN 200610108331 A CN200610108331 A CN 200610108331A CN 1924842 B CN1924842 B CN 1924842B
- Authority
- CN
- China
- Prior art keywords
- list item
- file
- protection table
- adapter
- resource
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/85—Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
Abstract
本发明提供了在没有来自本地操作系统(OS)的运行时参与的情况下,使得用户空间中间件或应用能够直接将基于文件名的存储请求传送给物理I/O适配器的系统、方法。提供了使用可以包括文件名保护表(FNPT)和文件扩展名保护表(FEPT)的文件保护表(FPT)数据结构来控制用户空间和用户空间外的输入/输出(I/O)操作的机制。此外,还提供了用于根据用户空间操作来管理所述文件保护表以创建、查询、修改和删除所述文件保护表中的表项的机制。
Description
技术领域
本发明一般地涉及主机与输入/输出(I/O)适配器之间的通信协议。更具体地说,本发明涉及用于在没有来自本地操作系统(OS)(或在虚拟系统中,本地系统管理程序)的运行时参与的情况下直接处理应用实例与I/O适配器之间的用户空间操作的系统和方法。
背景技术
根据现有的技术情况,操作系统不允许用户空间中间件或者应用(如数据库)直接访问通过操作系统的本地文件系统的文件模式I/O接口标识的永久性存储。因此,用户空间中间件必须在每次执行I/O操作时调用操作系统(OS)调用并引发多次任务切换。当中间件或应用将存储请求传送给操作系统时会导致第一次任务切换。在操作系统完成处理中间件或应用存储请求并将存储请求传递给存储适配器之后,当操作系统将控制传递回用户空间中间件或应用时会导致第二次任务切换。
当存储适配器完成关联的I/O存储操作并中断应用正在执行的处理以便操作系统可以处理存储适配器的完成时会出现第三次任务切换。当操作系统结束处理存储适配器的完成并将控制返回向操作系统传送存储请求的中间件或应用时会出现最后一次任务切换。除了这些任务切换之外,存储适配器通常具有单个请求队列以处理来自操作系统的工作。
上述四次任务切换可视为浪费的处理器周期,因为在任务切换完成之前,对正在切换的线程的所有工作均会停止。在某些服务器中,用户空间中间件或应用程序执行的存储操作的数量可以相当大。现代的高端服务器每秒可以执行数百万次这些操作,导致每秒执行数百万次任务切换。
发明内容
鉴于上述内容,具有一种用于处理输入/输出(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)数据结构来控制用户空间以及用户空间外的输入/输出(I/O)操作的机制。在本发明的一个方面中,FPT包括具有由操作系统的文件系统管理的每个文件的表项的文件名保护表(FNPT)。FNPT中的表项包括指向与文件名对应的文件扩展名保护表(FEPT)的段的指针。FEPT中的表项可以包括关键词实例和保护域以及其他保护表上下文信息,可以根据这些信息来检查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适配器是否具有可用于分配的资源。只有当I/O适配器具有要分配的可用资源时才能通过创建资源分配来分配资源。在文件保护表数据结构的文件保护表表项中创建资源分配可以包括:在存储块地址表中创建至少一个标识存储设备的至少一个部分的表项,所述存储设备将被分配给为其请求资源分配的文件。此外,可以为存储块地址表中的至少一个表项创建文件扩展名保护表中的表项,其中所述文件扩展名保护表中的表项具有指向存储块地址表中至少一个表项的指针并具有关联的文件扩展名关键词。此外,可以在文件名保护表中创建与要为其分配资源的文件对应的表项,其中所述文件名保护表表项具有指向文件扩展名保护表的段的指针并具有关联的文件名关键词。可以将文件扩展名关键词和文件名关键词返回应用实例以在提交I/O请求中使用。通过使用I/O适配器的存储器管理接口来创建文件保护表表项,可以在文件保护表表项中创建资源分配。
执行至少一个资源管理操作可以包括判定所述用户空间操作是否为资源修改操作。如果所述用户空间操作是资源修改操作,则可以修改至少一个与文件保护表表项中的资源分配关联的属性。此修改过程可以包括:如果在文件保护表表项上存在活动的I/O事务,则启动计时器;判定在所述计时器超时之前是否达到静态点;以及只有在所述计时器超时之前达到所述静态点时才修改所述文件保护表表项。例如,修改与文件保护表表项中的资源分配关联的至少一个属性可以包括修改存储块地址表表项中的属性。
执行至少一个处理队列操作可以包括:建立至少一个工作队列表项并将所述至少一个工作队列表项添加到与数据处理系统中运行的应用实例关联的工作队列;以及通知I/O适配器已将所述至少一个工作队列表项添加到所述工作队列。此外,可以例如在I/O适配器中执行至少一个验证检查,以便确保应用实例可以访问与所述至少一个工作队列表项中引用的文件关联的存储设备部分。可以例如在I/O适配器中执行至少一个包含性检查,以便确保与由所述至少一个工作队列表项引用的文件关联的存储设备部分在已分配给应用实例的存储设备部分中。
执行至少一个处理队列操作可以包括为已完成的用户空间外的输入/输出操作从完成队列检索完成队列表项。例如,根据本发明的装置可以包括处理器和与所述处理器相连的存储设备。例如,根据本发明的系统可以包括处理器和与所述处理器相连的I/O适配器。
本发明的这些和其他特征和优点将在以下对本发明的示例性实施例的详细说明中进行描述,或者鉴于以下对本发明的示例性实施例的详细说明,本发明的这些和其他特征和优点将对本领域的技术人员变得显而易见。
附图说明
在所附权利要求中说明了被认为是本发明特性的新颖特征。但是,当结合附图阅读时,通过参考以下对示例性实施例的详细说明,可以最佳地理解发明本身及其优选使用方式、进一步的目的和优点,这些附图是:
图1是根据本发明的一个示例性实施例的主机处理器节点的功能性方块图;
图2是示出根据本发明的一个示例性实施例的用于启用用户空间外基于文件名的存储I/O访问的主机处理器节点的主要操作元素的示意图;
图3是示出根据本发明的一个示例性实施例的用于转换和保护基于文件名的存储的示例性控制结构的示意图;
图4是示出根据本发明的一个示例性实施例的用于从用户空间中间件或应用实例将存储请求传送到存储适配器的示例性控制结构的示意图;
图5是示出根据本发明的一个示例性实施例的用于确保允许由用户空间中间件或应用实例提交的基于文件名的存储I/O请求引用基于文件名的存储I/O请求中引用的一个或多个文件的示例性控制结构的示意图;
图6是概述根据本发明的一个示例性实施例的用于处理用户空间操作的调用的示例性操作的流程图;
图7是概述当所调用的用户空间操作是要求生成和处理工作队列元素的工作队列操作时的本发明的一个示例性实施例的示例性操作的流程图;
图8是概述当执行验证检查以判定工作队列表项是否有效和是否可以由物理I/O适配器处理时的本发明的一个示例性实施例的示例性操作的流程图;
图9是概述当所调用的用户空间操作是完成队列检索处理操作时的本发明的一个示例性实施例的示例性操作的流程图;
图10是概述当根据本发明的一个示例性实施例创建文件保护表表项时的本发明的一个示例性实施例的示例性操作的流程图;
图11是概述当处理是资源修改操作的用户空间操作时的本发明的一个示例性实施例的示例性操作的流程图;
图12是概述当处理查询用户空间操作时的本发明的一个示例性实施例的示例性操作的流程图;以及
图13是概述当处理破坏或删除用户空间操作时的本发明的一个示例性实施例的示例性操作的流程图。
具体实施方式
本发明应用于任何使用I/O适配器(如PCI族I/O适配器、虚拟I/O适配器、端点设备、虚拟端点设备等)来直接连接存储或通过网络连接存储的通用或专用主机。网络可以包括端节点、交换机、路由器和互连这些组件的链路。网络链路可以是光纤通道、以太网、InfiniBand、高级交换互连、其他标准存储网络互连,或使用专用或标准协议的专用链路。尽管后面的描写和说明将参考网络和主机节点的特定布置,但是应该理解,下面的示例性实施例只是示例性的,并且可以在不偏离本发明的精神和范围的情况下,对具体描述和说明的布置做出修改。
重要的是指出,本发明可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元素两者的实施例的形式。在一个示例性实施例中,本发明以软件实现,所述软件包括但不限于固件、驻留软件、微代码等。
此外,本发明可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,所述计算机可用或计算机可读介质提供了可以被计算机或任何指令执行系统使用或与计算机或任何指令执行系统结合的程序代码。为了说明,计算机可用或计算机可读介质可以是任何能够包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的装置。
所述介质可以是电、磁、光、电磁、红外线或半导体系统(或装置或设备)或传播介质。计算机可读介质的实例包括半导体或固态存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前实例包括光盘-只读存储器(CD-ROM)、光盘-读/写(CR-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)链路,所述链路用于通过PCI链路(如链路132、136和140)连接其他PCI族I/O桥或PCI族I/O适配器(如PCI族适配器1145和PCI族适配器2144)。PCI族适配器(如PCI族适配器1145)可用于通过网络链路(如到网络164的链路156)连接到与网络连接的存储152,链路156连接到交换机或路由器160,交换机或路由器160又通过链路158连接到与网络连接的存储152。PCI族适配器(如PCI族适配器2144)还可用于通过链路148连接到直接连接的存储设备162。
重要的是指出,PCI族适配器(如PCI族适配器1145或PCI族适配器2144)可以与主机节点102上的其他组件集成。例如,PCI族适配器1145或PCI族适配器2144可以与PCI族I/O桥128集成。其他实例是PCI族适配器(如PCI族适配器1145或PCI族适配器2144)可以与处理器芯片107集成。
虽然将根据PCI族适配器来说明本发明的示例性实施例,但是应该理解本发明并不限于此类适配器。相反,物理I/O适配器可以是包括PCI族适配器、虚拟I/O适配器、端点设备、虚拟端点设备、虚拟I/O适配器端点设备等的任何类型的I/O适配器。例如,在标题为“Data ProcessingSystem,Method and Computer Program Product for Creation andInitialization 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是PCI适配器(如图1中的PCI族适配器1145或PCI族适配器2144)的实例。
在此实例中,图2中所示的物理I/O适配器200包括处理队列(PQ)的集合(如处理队列集236)及其关联的处理队列上下文(如PQ上下文204)。处理队列(PQ)可以包括例如工作队列(如发送队列和/或接收队列)以及完成队列。工作队列用于直接将基于文件名的I/O存储请求提交给物理I/O适配器。为了直接访问存储设备的各部分,使用本发明的机制将基于文件名的I/O存储请求中的文件名转换为线性块地址。线性块地址(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驻留在诸如操作系统1220或操作系统2240之类的操作系统(OS)中。操作系统(例如操作系统1220或操作系统2240)可以驻留在系统管理程序216之上,系统管理程序216是管理物理硬件资源的分区和虚拟化并控制操作系统执行的软件、固件或两者的组合。操作系统可以主持一个或多个中间件或应用实例。在图2中,操作系统1220主持两个中间件或应用实例App1 224和App2 228。同样,操作系统2240主持应用App1 224和App2 228。操作系统在处理器(如处理器212)上运行。
中间件或应用实例(如App1 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可以分段为一组文件扩展名保护表段(如文件扩展名保护表段1314)。可以使用若干数据结构(包括B树、由非叶节点中的指针和叶节点中的指针组成的树、简单链接的列表等)来互连各段。在所示实例中,文件扩展名保护表段1314使用简单链接的列表,其中表中的第一个表项是指向包含文件扩展名保护表表项的下一个表的指针。
文件扩展名保护表表项N 320描述了文件扩展名保护表段(如文件扩展名保护表段1314)中的一个实例表项。文件扩展名保护表段1314中的每个表项都包含一组用于定义该表项的字段。文件扩展名保护表表项N320包含下列字段:访问控制、保护域、关键词实例、文件名、逻辑卷号、SCSI标识符号、SCSI逻辑单元号、LBA表大小、扇区大小、长度、LBA表指针。
在一个示例性实施例中,适配器的FE_Key映射逻辑386(例如,其可以是I/O适配器的处理器中的逻辑,也可以是单独的专用逻辑单元)对文件扩展名保护表表项(如文件扩展名保护表表项N320)中的字段执行所有检查。未通过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集的总长度。
FEPT表项320的LBA表指针指向LBA表322中的一个或多个相应的LBA表表项。因此,通过LBA表指针字段,可以标识与FEPT 312中的FEPT表项关联的线性块地址以便提供对物理存储设备(与适配器316中从其接收基于文件名的I/O请求的处理队列关联)中存储位置的线性块地址的访问。
LBA表322还可以分段为一组LBA表段(如LBA表段1324)。可以使用若干数据结构(包括B树、由非叶节点中的指针和叶节点中的指针组成的树、简单链接的列表等)来互连各段。在所示实例中,LBA表段1324使用简单链接的列表,其中表中的第一个表项是指向包含LBA表项的下一个表的指针。
LBA表段(如LBA表段1324)中的每一个表项都说明了与该表项关联的盘线性块地址(LBA)的范围。为了进行说明,表项可以使用起始LBA和长度、起始LBA和结束LBA等。
物理I/O适配器(如适配器316)可以选择存储整个文件保护表、部分文件保护表或不存储文件保护表。适配器316示为具有持有一个段的文件名保护表高速缓存和文件扩展名保护表高速缓存,如缓存的文件名保护表段1390和文件扩展名保护表段1392。
同样,适配器316可以选择存储整个LBA表、部分LBA表或不存储LBA表。在所示实例中,适配器316示为具有持有一个段的LBA表高速缓存,如缓存的LBA表段1398。
接着参考图4,其中示出了根据本发明的示例性实施例的用于将用户空间中间件或应用实例的基于文件名的I/O存储请求传送到物理I/O适配器的示例性控制结构的示例性示意图。例如,为了进行说明,系统映像(可以是诸如Windows XPTM、AIXTM、LinuxTM之类的操作系统或诸如基于文件名的I/O存储服务器或文件模式I/O存储服务器之类的专用软件映像)示为具有使用存储或网络适配器从存储设备调用存储操作的应用。为了进行以下说明,可以交换使用术语“系统映像”和“操作系统”来指代系统映像(即,系统存储器的当前内容),所述映像可以包括操作系统和任何正在运行的应用实例。
系统映像(如系统映像1412)具有与存储适配器420关联的设备驱动器(如适配器驱动器440)。适配器驱动器440可以包含处理队列(PQ)表后备存储444,后备存储444包含适配器的处理队列表(如系统映像1的处理队列表段1400)中的表项的副本。
当应用实例X432执行基于文件名的I/O访问时,应用实例通过使用处理队列(PQ)门铃436来通知关联的适配器420。例如,PQ 1门铃436通知适配器420在用于实现应用实例X 432与适配器420之间通信的处理队列集的发送队列428中存在存储工作请求。
来自PQ 1门铃436的数据提供了要由加法器422添加到适配器420中挂起工作请求的当前数量的工作请求数。就是说,由中间件或应用实例生成的基于文件名的I/O请求发送可以包括在发送队列中存储为工作队列表项的多个实际工作请求。PQ 1门铃436标识是基于文件名的I/O请求的部分的工作请求数。
工作请求数被提供为PQ计数字段,所述PQ计数字段存储在与系统映像关联的相关处理队列表表项PQ N(如来自系统映像1的PQ段1424的缓存的PQ表项N)中。一旦完成存储工作请求,就会将用于通知应用已完成工作请求的消息添加到完成队列450。
如图4所示,来自系统映像1的PQ段1424的缓存的PQ表项N包括PQ上下文信息(包括PQ头地址、PQ起始地址、PQ结束地址、PQ计数)和其他PQ上下文信息。PQ起始地址字段存储应用处理队列428中的第一个工作队列表项的系统存储器地址。PQ结束地址字段存储与处理队列428的最后一个工作队列表项关联的最后的系统存储器地址。PQ头地址字段存储适配器要处理的下一个处理队列表项的系统存储器地址。适配器在处理循环处理队列中的处理队列表项时会更改PQ头地址。PQ计数字段存储已由应用实例432发出但尚未由适配器处理的处理队列表项的数量。
接着参考图5,其中提供了根据本发明的一个示例性实施例的用于确保由用户空间中间件或应用实例提交的基于文件名的I/O存储请求被授权引用在该基于文件名的I/O存储请求中引用的存储设备区域的示例性控制结构的说明。图5重点示出了通过确保只有与存储设备中的存储块关联的应用实例是仅有的可以访问这些存储块的应用实例来保护与应用实例关联的这些存储块。
如图5所示,系统映像1500主持应用实例X 532。此应用实例X 532使用上面参考图4所描述的机制来执行基于文件名的I/O存储请求。所述机制使用处理队列528将基于文件名的I/O存储请求作为工作队列表项(WQE)(如WQE 536)提交给目标物理I/O适配器(如适配器516)。基于文件名的I/O存储工作请求被放入发送队列528,发送队列528是作为与应用实例X 532和适配器516关联的处理队列集的一部分的工作队列。适配器516中的处理队列上下文517(例如,来自系统映像(SI)1的PQ段1524的缓存的PQ表项N中的处理队列上下文)包含保护域字段518。
当应用X 532提交基于文件名的I/O存储请求(如基于文件名的I/O存储请求536)时,部分请求将包含FN_Key 538和FE_Key 539。FN_Key 538被系统映像500用作文件名保护表(FNPT)510中的索引或者被适配器516用作适配器516的FNPT高速缓存530中的缓存的文件名保护表段535中的索引,具体取决于本发明的特定实现。例如,FN_Key 538可以是FNPT 510或缓存的FNPT段535中的偏移量,FN_Key 538允许标识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可以在系统映像5 00中直接访问文件名和/或文件扩展名保护表段(例如,文件名保护表段511和/或文件扩展名保护表段1504)。
当应用实例或中间件请求分配操作系统的文件系统中的文件时,将生成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存储请求以向/从物理存储设备560(如硬盘)的线性块地址读取、写入或读取/写入数据,所述物理存储设备560由缓存的LBA表段550或与系统映像500关联的LBA表段570(对应于FEPT段中的文件扩展名保护表表项)中的表项来引用。
本发明使用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)操作系统中的原始模式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操作的标识符以及可选的逻辑卷号和/或SCSI LUN。
处理队列门铃消息被从应用实例发送到物理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包含性检查(步骤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。例如,如果应用实例尝试访问未分配给该应用实例的存储设备部分,则至少一个包含性检查将失败。如果未成功完成任何验证检查或包含性检查,则生成错误结果(步骤740)。
如果成功完成验证和包含性检查,则物理I/O适配器将工作队列表项标记为有效(步骤750)并执行与工作队列表项关联的所有功能(如读取、写入、读取/写入)(步骤755)。此后,或者在步骤740中生成错误结果之后,物理I/O适配器创建与工作队列表项关联的完成队列表项并执行直接存储器访问(DMA)操作以将完成队列表项发送到应用实例(步骤760)。
然后判定是否请求完成队列事件(步骤765)。如果是,则物理I/O适配器生成完成队列事件(步骤770)并且终止操作。就是说,在发布到处理队列的发送队列和接收队列的工作请求完成之后,将完成消息放入完成队列并且如果应用请求所述完成队列,则会生成事件。
在图7中重要的是指出,在步骤710和715之后,系统映像或操作系统不参与在工作队列表项的处理。相反,物理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适配器还可以通知可由应用实例使用的LBA的应用实例对物理I/O适配器执行基于文件名的直接I/O操作。
如果没有足够的资源来分配请求的文件,则物理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适配器启动计时器并等待达到静态点(步骤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 (19)
1.一种数据处理系统中的方法,所述方法包括:
从用户管理接口接收基于文件名的用户空间操作;
判定所述用户空间操作是资源管理操作还是处理队列操作;
如果所述用户空间操作是资源管理操作,则执行至少一个资源管理操作以管理具有文件名保护表、文件扩展名保护表和存储块地址表的文件保护表数据结构中的资源分配;以及
如果所述用户空间操作是处理队列操作,则在没有系统映像干预的情况下,直接使用输入/输出适配器基于所述文件保护表数据结构来执行至少一个处理队列操作以管理处理队列。
2.根据权利要求1的方法,其中所述执行至少一个资源管理操作的步骤进一步包括:判定所述用户空间操作是否为资源查询操作,并且如果所述用户空间操作是资源查询操作,则:
标识与所述资源对应的文件名保护表表项;
标识与所述文件名保护表表项对应的文件扩展名保护表表项;
从所述文件扩展名保护表表项检索资源的属性信息;以及
将所述检索的所述资源的属性信息返回所述用户管理接口。
3.根据权利要求2的方法,其中通过使用所述输入/输出适配器的存储器管理接口查询所述文件扩展名保护表表项来检索所述资源分配的属性信息。
4.根据权利要求1的方法,其中所述执行至少一个资源管理操作的步骤进一步包括:判定所述用户空间操作是否为资源创建操作,并且如果所述用户空间操作是资源创建操作,则:
在所述文件保护表数据结构的文件保护表表项中创建所述资源分配;以及
将所述资源分配的创建结果返回调用所述用户空间操作的应用实例。
5.根据权利要求4的方法,其中通过以下操作在所述文件保护表表项中创建所述资源分配:
标识与所述资源对应的文件名保护表表项;
标识与所述文件名保护表表项对应的文件扩展名保护表表项;
标识与所述文件扩展名保护表表项对应的所述存储块地址表的段;
将至少一个表项添加到所述存储块地址表的所述段;以及
更新所述文件扩展名保护表以引用所述存储块地址表的所述段中所述添加的至少一个表项。
6.根据权利要求4的方法,其中所述执行至少一个资源管理操作的步骤进一步包括:根据所述用户空间操作判定所述输入/输出适配器是否具有可用于分配的资源,其中仅当所述输入/输出适配器具有要分配的可用资源时才能通过创建所述资源分配来分配所述资源。
7.根据权利要求4的方法,其中通过以下操作在所述文件保护表数据结构的所述文件保护表表项中创建所述资源分配:
在所述存储块地址表中创建至少一个标识存储设备的至少一个部分的表项,所述存储设备将被分配给为其请求所述资源分配的文件;
为所述存储块地址表中的所述至少一个表项在所述文件扩展名保护表中创建表项,其中所述文件扩展名保护表中的所述表项具有指向所述存储块地址表中的所述至少一个表项的指针并具有关联的文件扩展名关键词;
在所述文件名保护表中创建与要为其分配所述资源的文件对应的表项,其中所述文件名保护表表项具有指向所述文件扩展名保护表的段的指针并具有关联的文件名关键词;以及
将所述文件扩展名关键词和文件名关键词返回所述调用所述用户空间操作的应用实例以在提交输入/输出请求中使用。
8.根据权利要求4的方法,其中通过使用所述输入/输出适配器的存储器管理接口创建所述文件保护表表项来在所述文件保护表表项中创建所述资源分配。
9.根据权利要求1的方法,其中通过以下操作来执行至少一个资源管理操作:
判定所述用户空间操作是否为资源修改操作;以及
如果所述用户空间操作是资源修改操作,则修改至少一个与文件保护表表项中的资源分配关联的属性。
10.根据权利要求9的方法,还包括:
如果在所述文件保护表表项上存在活动的输入/输出事务,则启动计时器;
判定是否在所述计时器超时之前达到静态点;以及
只有在所述计时器超时之前达到所述静态点时才修改所述文件保护表表项。
11.根据权利要求9的方法,其中通过修改存储块地址表表项中的属性来修改至少一个与文件保护表表项中的资源分配关联的属性。
12.根据权利要求1的方法,其中通过以下操作来执行至少一个处理队列操作:
建立至少一个基于文件名的工作队列表项并将所述至少一个工作队列表项添加到与所述数据处理系统中运行的应用实例关联的工作队列;以及
通知所述输入/输出适配器已将所述至少一个工作队列表项添加到所述工作队列。
13.根据权利要求12的方法,还包括:
在所述输入/输出适配器中执行至少一个验证检查,以便确保所述应用实例可以访问与所述至少一个工作队列表项中引用的文件关联的存储设备的各部分;以及
在所述输入/输出适配器中执行至少一个包含性检查,以便确保与由所述至少一个工作队列表项引用的文件关联的所述存储设备的所述各部分在已分配给所述应用实例的所述存储设备的所述各部分中。
14.根据权利要求1的方法,其中通过为已完成的用户空间外的输入/输出操作从完成队列检索完成队列表项来执行至少一个处理队列操作。
15.一种数据处理系统中的装置,所述装置包括:
用于从用户管理接口接收基于文件名的用户空间操作的装置;
用于判定所述用户空间操作是资源管理操作还是处理队列操作的装置;
用于执行至少一个资源管理操作的装置,用于如果所述用户空间操作是资源管理操作,则执行至少一个资源管理操作以管理存储在存储设备中的具有文件名保护表、文件扩展名保护表和存储块地址表的文件保护表数据结构中的资源分配;以及
用于执行至少一个处理队列操作的装置,用于如果所述用户空间操作是处理队列操作,则在没有系统映像干预的情况下,直接使用输入/输出适配器基于所述文件保护表数据结构来执行至少一个处理队列操作以管理处理队列。
16.根据权利要求15的装置,其中所述用于执行至少一个资源管理的装置进一步包括:
用于判定所述用户空间操作是否为资源查询操作的装置,并且如果所述用户空间操作是资源查询操作,则所述用于执行至少一个资源管理的装置还进一步包括:
用于标识与所述资源对应的文件名保护表表项的装置;
用于标识与所述文件名保护表表项对应的文件扩展名保护表表项的装置;
用于从所述文件扩展名保护表表项检索资源的属性信息的装置;以及
用于将所述检索的所述资源的属性信息返回所述用户管理接口的装置。
17.根据权利要求15的装置,其中所述用于执行至少一个资源管理的装置进一步包括:
用于判定所述用户空间操作是否为资源创建操作的装置,并且如果所述用户空间操作是资源创建操作,则所述用于执行至少一个资源管理的装置还进一步包括:
用于在所述文件保护表数据结构的文件保护表表项中创建所述资源分配的装置;以及
用于将所述资源分配的创建结果返回调用所述用户空间操作的应用实例的装置。
18.根据权利要求15的装置,其中所述用于执行至少一个资源管理的装置进一步包括以下装置来执行至少一个资源管理操作:
用于判定所述用户空间操作是否为资源修改操作的装置;以及
用于如果所述用户空间操作是资源修改操作,则修改至少一个与文件保护表表项中的资源分配关联的属性的装置。
19.根据权利要求15的装置,其中所述用于执行至少一个处理队列操作的装置进一步包括以下装置来执行至少一个处理队列操作:
用于建立至少一个基于文件名的工作队列表项并将所述至少一个工作队列表项添加到与所述数据处理系统中运行的应用实例关联的工作队列的装置;以及
用于通知所述输入/输出适配器已将所述至少一个工作队列表项添加到所述工作队列的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/216,712 | 2005-08-31 | ||
US11/216,712 US7657662B2 (en) | 2005-08-31 | 2005-08-31 | Processing user space operations directly between an application instance and an I/O adapter |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1924842A CN1924842A (zh) | 2007-03-07 |
CN1924842B true CN1924842B (zh) | 2010-10-13 |
Family
ID=37817487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006101083312A Expired - Fee Related CN1924842B (zh) | 2005-08-31 | 2006-08-01 | 用于i/o适配器的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7657662B2 (zh) |
CN (1) | CN1924842B (zh) |
Families Citing this family (12)
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 |
US8326804B2 (en) * | 2008-06-06 | 2012-12-04 | Symantec Corporation | Controlling resource allocation for backup operations |
US9195623B2 (en) | 2010-06-23 | 2015-11-24 | International Business Machines Corporation | Multiple address spaces per adapter with address translation |
US9342352B2 (en) | 2010-06-23 | 2016-05-17 | International Business Machines Corporation | Guest access to address spaces of adapter |
US9213661B2 (en) | 2010-06-23 | 2015-12-15 | International Business Machines Corporation | Enable/disable adapters of a computing environment |
US8635430B2 (en) | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US8615645B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Controlling the selectively setting of operational parameters for an adapter |
US8566480B2 (en) * | 2010-06-23 | 2013-10-22 | International Business Machines Corporation | Load instruction for communicating with adapters |
US9411517B2 (en) * | 2010-08-30 | 2016-08-09 | Vmware, Inc. | System software interfaces for space-optimized block devices |
US9052825B2 (en) | 2010-08-30 | 2015-06-09 | Vmware, Inc. | System software interfaces for space-optimized block devices |
WO2012160814A1 (ja) * | 2011-05-24 | 2012-11-29 | 日本電気株式会社 | 情報処理システム、アクセス権管理方法、情報処理装置およびその制御方法と制御プログラム |
US11573710B2 (en) * | 2019-08-20 | 2023-02-07 | Microsoft Technology Licensing, Llc | Protection domains for files at file-level or page-level |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1258041A (zh) * | 1998-12-22 | 2000-06-28 | 网络活动公司 | 软件程序保护机制 |
Family Cites Families (94)
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 |
US6345301B1 (en) | 1999-03-30 | 2002-02-05 | Unisys Corporation | Split data path distributed network protocol |
US6839744B1 (en) | 1999-09-10 | 2005-01-04 | Ianywhere Solutions, Inc. | System, method, and computer program product for administering channels, content, and data for 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 |
IL153454A0 (en) | 2000-06-26 | 2003-07-06 | Ibm | 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 |
US20030110205A1 (en) | 2001-12-07 | 2003-06-12 | Leith Johnson | Virtualized resources in a partitionable server |
US20030110445A1 (en) | 2001-12-07 | 2003-06-12 | Ferdouse Khaleque | Method and architecture for building client-server applications |
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 | 富士通株式会社 | データ保護プログラムおよびデータ保護方法 |
US20040049603A1 (en) | 2002-09-05 | 2004-03-11 | International Business Machines Corporation | iSCSI driver to adapter interface protocol |
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 |
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 | セイコーエプソン株式会社 | データ転送制御装置、電子機器及びデータ転送制御方法 |
EP1642184A1 (en) | 2003-07-04 | 2006-04-05 | Nokia Corporation | Key storage administration |
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. |
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 |
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 |
-
2005
- 2005-08-31 US US11/216,712 patent/US7657662B2/en not_active Expired - Fee Related
-
2006
- 2006-08-01 CN CN2006101083312A patent/CN1924842B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1258041A (zh) * | 1998-12-22 | 2000-06-28 | 网络活动公司 | 软件程序保护机制 |
Non-Patent Citations (1)
Title |
---|
JP特開2003-22206A 2003.01.24 |
Also Published As
Publication number | Publication date |
---|---|
CN1924842A (zh) | 2007-03-07 |
US20070078892A1 (en) | 2007-04-05 |
US7657662B2 (en) | 2010-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100465898C (zh) | 用于i/o适配器的方法和装置 | |
CN1924842B (zh) | 用于i/o适配器的方法和装置 | |
CN101233514B (zh) | 管理输入/输出的方法 | |
US7502872B2 (en) | Method for out of user space block mode I/O directly between an application instance and an I/O adapter | |
US5339427A (en) | Method and apparatus for distributed locking of shared data, employing a central coupling facility | |
US7849228B2 (en) | Mechanisms for creation/deletion of linear block address table entries for direct I/O | |
TWI254861B (en) | Data processing system, method, and computer readable medium for sharing input/output facilities of a logical partition with another logical partition | |
US7941799B2 (en) | Interpreting I/O operation requests from pageable guests without host intervention | |
JP4852298B2 (ja) | 仮想ボリュームを識別する情報を引き継ぐ方法及びその方法を用いたストレージシステム | |
CN101253500B (zh) | 用于管理i/o的方法 | |
US20120191942A1 (en) | Facilitating management of storage of a pageable mode virtual environment absent intervention of a host of the environment | |
CN101120315A (zh) | 在支持虚拟适配器的物理适配器上的虚拟适配器解构 | |
CN101124541A (zh) | 修改逻辑分区数据处理系统中的虚拟适配器资源 | |
CN1983185A (zh) | 在操作系统实例中共享输入/输出适配器的方法和系统 | |
JP2007257317A (ja) | 記憶システム及び記憶領域解放方法並びにストレージシステム | |
US20030225928A1 (en) | Method, system, and program for managing access to a device by device specific components and operating system specific components | |
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 | |
US7502871B2 (en) | Method for query/modification of linear block address table entries for direct I/O | |
JPWO2009066611A1 (ja) | 仮想マシン向けデータ格納システム、データ格納方法およびデータ格納用プログラム | |
JP5183448B2 (ja) | 情報処理装置及び情報処理方法及びプログラム | |
US9256648B2 (en) | Data handling in a cloud computing environment | |
JP2001014147A5 (zh) | ||
WO2004084095A1 (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: 20101013 Termination date: 20150801 |
|
EXPY | Termination of patent right or utility model |