# US 2008/0189442 A1 · System and method for dynamically assigning I/O priority

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2008/0189442 A1
- Document ID: US20080189442A1
- Status: Published application
- Kind: A1
- Application number: 12/077,162
- Filed: 2008-03-17
- Published: 2008-08-07
- Earliest claimed: 2003-10-09
- Assignees: International Business Machines Corporation
- Inventors: John Thomas Flynn
- Web page: https://patentgrep.com/patent/US20080189442A1

## CPC

- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0607: {by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device}
- G06F 3/0674: {Disk device}
- G06F 13/385: {for adaptation of a particular data processing system to different peripheral devices}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system for controlling I/O transfers includes a host system or initiator including an adapter driver layer; and a storage controller. The storage controller includes a priority store and an operation queue. The adapter driver is selectively responsive to a datapath command from an initiator application for setting a default I/O priority for a specified logical unit, for storing the default I/O priority for the logical unit to a priority store of the storage controller, and selectively responsive to a data transfer command from an initiator application for storing the data transfer command to the storage controller. The storage controller is responsive to the datapath command for storing the I/O priority default value for the logical unit to the priority store; and responsive to the data transfer command with respect to the logical unit for queuing the data transfer command for execution based on the I/O priority default value.

## Claims

### Claim at position 1

1-7. (canceled)

### Claim 8

A program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for assigning I/O priority by one of a plurality of initiator devices in an open system, an initiator device in an open system being a host system which uses command descriptor blocks to access fixed block devices on logical units, said method comprising:
receiving at a device driver of said one of said plurality of initiator devices, a datapath command for setting a default I/O priority for a specified logical unit, said default I/O priority value being specific to an application at said one of said plurality of initiator devices;
parsing said datapath command to determine said default I/O priority value;
storing said default I/O priority value for said logical unit to a priority store of a storage controller on said logical unit;
exiting said datapath command; and
operating said storage controller to access said priority store and process I/O requests from said one of said plurality of initiator devices in accordance with said default I/O priority value.

### Claim 9 (depends on 8)

The program storage device of claim 8, said datapath command including logical unit identifying indicia and being selectively issued to said device driver by a customer interactively or as script.

### Claim 10 (depends on 8)

The program storage device of claim 8, said storing including sending to said storage controller a set I/O priority default value I/O command.

### Claim 11

A program storage device readable by a machine, tangibly embodying a program of instructions executable by a machine to perform method steps for dynamically establishing and controlling I/O priority by a storage controller for a plurality of initiators, comprising:
receiving at said storage controller an I/O command from an initiator selectively including an I/O priority default value for a logical unit set by a given one of said plurality of initiators, an initiator being a host system which uses command descriptor blocks to access fixed block devices on logical units, said I/O priority default value being specific to a first application at said given one of said plurality of initiators;
responsive to said I/O command being a set default value I/O command, storing said I/O priority default value at said storage controller for thereafter processing data transfer commands from said given one of said plurality of initiator for said logical unit; and
responsive to said I/O command being a data transfer command with respect to said given logical unit, queuing said data transfer command from said given one of said plurality of initiators for execution based on said I/O priority default value previously stored for said logical unit.

### Claim 12 (depends on 11)

The program storage device of claim 11, further comprising:
queuing said data transfer commands by inserting them in a linked list in accordance with said I/O priority default value;
executing said data transfer commands in priority order as defined by said linked list.

### Claim 13

A computer program product for effecting data transfer in a system including a plurality of host initiators in a system including disparate host initiators and at least one storage controller according to the method comprising:
receiving at a device driver of a given host initiator, a datapath command for setting a default I/O priority for a specified logical unit, said default I/O priority being specific to a first application at said given host initiator;
parsing said datapath command and storing said default I/O priority for I/O commands from said given host initiator directed to said logical unit to a priority store of a storage controller on said logical unit;
exiting said datapath command;
issuing as a command distinct from said datapath command to said storage controller a data transfer command;
receiving at said storage controller an I/O command from said given host initiator;
responsive to said I/O command being a set default value I/O command, storing said I/O priority default value for data transfer commands directed from said given host initiator to said logical unit; and
responsive to said I/O command being a data transfer command with respect to said logical unit, queuing said data transfer command for execution based on said I/O priority default value previously stored for data transfer commands directed from said given host initiator to said logical unit.

### Claim at position 8

14-15. (canceled)
