# US 8,543,643 B2 · System and method for inquiry caching in a storage area network

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

- Number: US 8,543,643 B2
- Document ID: US8543643B2
- Status: Granted
- Kind: B2
- Application number: 13/042,209
- Filed: 2011-03-07
- Published: 2011-06-30
- Granted: 2013-09-24
- Earliest claimed: 2002-06-10
- Assignees: Crossroads Systems, Inc.; Hewlett-Packard Company
- Applicants: Stephen G. Dale; Bradfred W. Culp
- Inventors: Stephen G. Dale; Bradfred W. Culp
- Web page: https://patentgrep.com/patent/US8543643B2

## CPC

- G06F 15/167: using a common memory, e.g. mailbox
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04L 67/59: Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
- H04L 67/63: Routing a service request depending on the request content or context
- H04L 69/329: in the application layer [OSI layer 7]
- H04L 67/2895: Intermediate processing functionally located close to the data provider application, e.g. reverse proxies
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A system and method for servicing an inquiry command from a host device requesting inquiry data about a sequential device on a storage area network. The inquiry data may be cached by a circuitry coupled to the host device and the sequential device. The circuitry may reside in a router. In some embodiments, depending upon whether the sequential device is available to process the inquiry command, the circuitry may forward the inquiry command to the sequential device or process the inquiry command itself, utilizing a cached version of the inquiry data. The cached version may include information indicating that the sequential device is not available. In some embodiments, regardless whether the sequential device is available, the circuitry may process the inquiry command and return the inquiry data from a cache memory.

## Claims

### Claim 1

A system, comprising:
a cache memory;
a circuitry coupled to the cache memory;
at least one host device coupled to the circuitry, wherein the at least one host device comprises a first host device; and
at least one sequential device coupled to the circuitry, wherein the at least one sequential device resides on a storage area network, wherein the at least one sequential device is configured to sequentially process requests for data, wherein the at least one sequential device comprises a first sequential device, and wherein the circuitry is configured to:
receive an inquiry command from the first host device requesting inquiry data from the first sequential device;
depending upon whether the first sequential device is available, forward the inquiry command to the first sequential device on the storage area network or process the inquiry command at the circuitry; and
return the inquiry data to the first host device.

### Claim 2 (depends on 1)

A system according to claim 1, wherein the circuitry resides in a router.

### Claim 3 (depends on 2)

A system according to claim 2, wherein the router is configured to convert data from a Fibre Channel protocol to a Small Computer System Interface (SCSI) protocol.

### Claim 4 (depends on 3)

A system according to claim 3, wherein the router is coupled to the first sequential device on the storage area network over a SCSI bus.

### Claim 5 (depends on 2)

A system according to claim 2, wherein the cache memory resides in the router.

### Claim 6 (depends on 1)

A system according to claim 1, wherein the first sequential device is not available and wherein processing the inquiry command at the circuitry comprises:
accessing the cache memory; and
retrieving cached inquiry data associated with the first sequential device from the cache memory, wherein the inquiry data returned to the first host device is the cached inquiry data retrieved from the cache memory.

### Claim 7 (depends on 6)

A system according to claim 6, wherein the cached inquiry data comprises an indicator which indicates that the first sequential device is missing or offline.

### Claim 8 (depends on 1)

A system according to claim 1, wherein the first host device is capable of issuing different types of commands and wherein the inquiry command is one of the different types of commands.

### Claim 9 (depends on 1)

A system according to claim 1, wherein the cache memory is designed to store inquiry data for the at least one sequential device on the storage area network.

### Claim 10 (depends on 1)

A system according to claim 1, wherein the inquiry data comprises static or near-static data about the sequential device itself.

### Claim 11 (depends on 1)

A system according to claim 1, wherein the first sequential device is available to process the inquiry command from the first host device and wherein the circuitry is further configured to receive the inquiry data from the first sequential device and store the inquiry data in the cache memory.

### Claim 12

A method for servicing inquiry commands, comprising:
at a router connected to a plurality of sequential devices on a storage area network, receiving from a host device an inquiry command for inquiry data about a sequential device on the storage area network, wherein the sequential device is configured to sequentially process requests for data;
determining whether or not the inquiry data is stored in a cache memory coupled to the router;
if the inquiry data is stored in the cache memory, regardless of whether or not the sequential device is available, retrieving the inquiry data from the cache memory and returning the cached inquiry data to the host device in response to the inquiry command;
if the inquiry data is not in the cache memory, determining whether or not the sequential device is available;
if the sequential device is available, forwarding the inquiry command from the host device to the sequential device; and
if the sequential device is not available, placing the inquiry command from the host device in a queue at the router, holding the inquiry command from the host device in the queue at the router until the sequential device becomes available, and forwarding the inquiry command from the host device to the sequential device for processing by the sequential device when the sequential device becomes available, thereby keeping the inquiry command from the host device from timing out.

### Claim 13 (depends on 12)

A method according to claim 12, further comprising, at the router, determining whether a first command received from the host device is an inquiry command.

### Claim 14 (depends on 13)

A method according to claim 13, wherein the first command received from the host device is not an inquiry command, further comprising forwarding the first command to the sequential device for execution of the first command.

### Claim 15 (depends on 12)

A method according to claim 12, further comprising, subsequent to forwarding the inquiry command from the host device to the sequential device for processing by the sequential device, storing the inquiry data from the sequential device in the cache memory.

### Claim 16 (depends on 12)

A method according to claim 12, wherein the inquiry data comprises static or near-static data about the sequential device itself.

### Claim 17

A device for servicing inquiry commands, comprising:
a cache memory for storing static or near-static data about sequential devices on a storage area network;
a router coupled to the cache memory, wherein the router is configured to:
receive from a host device an inquiry command for inquiry data about a sequential device on the storage area network, wherein the sequential device is configured to sequentially process requests for data;
determine whether or not the inquiry data is stored in the cache memory;
if the inquiry data is stored in the cache memory, regardless of whether or not the sequential device is available, retrieve the inquiry data from the cache memory and return the cached inquiry data to the host device in response to the inquiry command;
if the inquiry data is not in the cache memory, determine whether or not the sequential device is available;
if the sequential device is available, forward the inquiry command from the host device to the sequential device; and
if the sequential device is not available, place the inquiry command from the host device in a queue, hold the inquiry command from the host device in the queue until the sequential device becomes available, and forward the inquiry command from the host device to the sequential device for processing by the sequential device when the sequential device becomes available, thereby keeping the inquiry command from the host device from timing out.

### Claim 18 (depends on 17)

A device according to claim 17, wherein the router is further configured to determine whether a first command received from the host device is an inquiry command.

### Claim 19 (depends on 18)

A device according to claim 18, wherein the router is further configured to forward the first command to the sequential device for execution of the first command if the first command is not an inquiry command.

### Claim 20 (depends on 17)

A device according to claim 17, wherein the inquiry data comprises static or near-static data about the sequential device itself.
