IP Library Granted Patent US 7,904,539
Granted Patent B2
US 7,904,539 · App. 12/403,971 · Granted Mar 8, 2011

System and method for servicing inquiry commands about target devices in storage area network

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,904,539
App. No.
12/403,971
Granted
Mar 8, 2011
Kind
B2
Abstract

Inquiry data received from sequential target devices is stored in a cache memory. In one embodiment, the cache memory is coupled to a router. In one embodiment, when the router receives from a host an inquiry command about a target, the router first checks to see if the inquiry command can be serviced from the cache. If so, the inquiry data about the target is retrieved from the cache and returned to the host. If not, the router checks to see if the target is busy. If not busy, the router routes the inquiry command to the target and stores the inquiry data returned by the target in the cache. If the target is busy, the router places the inquiry command in a queue. When the target becomes available, the router forwards the inquiry command to the target for processing, thereby keeping the inquiry command from timing out.

Claims (79)

1. A method for servicing inquiry commands, comprising:

at a router connected to sequential target devices on a storage area network (SAN), receiving from a host device an inquiry command for information about a target device;

determining whether or not the information about the target device is stored in a cache memory coupled to the router;

if the information about the target device is in the cache memory, retrieving the information about the target device from the cache memory and returning the retrieved information about the target device to the host device in response to the inquiry command regardless of whether or not the target device is busy;

if the information about the target device is not in the cache memory, determining whether or not the target device is busy;

if the target device is not busy, forwarding the inquiry command from the host device to the target device; and

if the target device is busy, 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 target device becomes available, and forwarding the inquiry command from the host device to the target device for processing by the target device when the target device becomes available, thereby keeping the inquiry command from the host device from timing out, the method further comprising: at the router, determining whether a first command received from a first host device coupled to the router comprises a first inquiry command for static or near-static data about a first target device on the SAN;

if the first command from the first host device comprises the first inquiry command for the static or near-static data about the first target device, reading the static or near-static data about the first target device from the cache memory and providing the static or near-static data about the first target device to the first host device in response to the first inquiry command from the first host device; and

if the first command from the first host device does not comprise the first inquiry command for the static or near-static data about the first target device, forwarding the first command to the first target device for execution of the first command.

2. The method according to claim 1 , further comprising:

receiving, at the router, inquiry data from the target device, wherein the inquiry data is responsive to the inquiry command from the host device;

storing the inquiry data from the target device in the cache memory; and

returning the inquiry data to the host device in response to the inquiry command.

3. The method according to claim 2 , further comprising:

receiving, at the router, one or more subsequent inquiry commands for the information about the target device from one or more host devices connected to the router;

retrieving the inquiry data from the cache memory; and

returning the inquiry data to the one or more host devices in response to the one or more subsequent inquiry commands for the information about the target device.

4. The method according to claim 3 , wherein the inquiry data from the target device is static and does not change over time.

5. The method according to claim 2 , wherein the inquiry data from the target device comprises Small Computer System Interface (SCSI) response data.

6. The method according to claim 1 , further comprising:

at the router, upon receiving from a first host device a first request for static or near-static data about a first target device, forwarding the first request to the first target device regardless of whether or not the first target device is busy;

storing the static or near-static data about the first target device returned by the first target device in response to the first request in the cache memory;

forwarding the static or near-static data about the first target device returned by the first target device in response to the first request to the first host device coupled to the router; and

in response to subsequent requests for the static or near-static data about the first target device, reading the static or near-static data about the first target device returned by the first target device in response to the first request from the cache memory and providing the static or near-static data about the first target device returned by the first target device in response to the first request in response to the subsequent requests.

7. A device for servicing inquiry commands, comprising:

a router connected to one or more host devices and one or more sequential target devices on a storage area network (SAN); and

a cache memory coupled to the router, wherein the router is configured to:

receive from a host device an inquiry command for information about a target device;

determine whether or not the information about the target device is stored in the cache memory;

if the information about the target device is in the cache memory, retrieve the information about the target device from the cache memory and return the retrieved information about the target device to the host device in response to the inquiry command regardless of whether or not the target device is busy;

if the information about the target device is not in the cache memory, determine whether or not the target device is busy;

if the target device is not busy, forward the inquiry command from the host device to the target device; and

if the target device is busy, place the inquiry command from the host device in a queue, hold the inquiry command from the host device in the queue until the target device becomes available, and forward the inquiry command from the host device to the target device for processing by the target device when the target device becomes available, thereby keeping the inquiry command from the host device from timing out, wherein the router is further configured to:

determine whether a first command received from a first host device coupled to the router comprises a first inquiry command for static or near-static data about a first target device on the SAN;

if the first command from the first host device comprises the first inquiry command for the static or near-static data about the first target device, read the static or near-static data about the first target device from the cache memory and provide the static or near-static data about the first target device to the first host device in response to the first inquiry command from the first host device; and

if the first command from the first host device does not comprise the first inquiry command for the static or near-static data about the first target device, forward the first command to the first target device for execution of the first command.

8. The device of claim 7 , wherein the router is further configured to:

receive inquiry data from the target device, wherein the inquiry data is responsive to the inquiry command from the host device;

store the inquiry data from the target device in the cache memory; and

return the inquiry data to the host device in response to the inquiry command.

9. The device of claim 8 , wherein the router is further configured to:

receive one or more subsequent inquiry commands for the information about the target device from the one or more host devices;

retrieve the inquiry data from the cache memory; and

return the inquiry data to the one or more host devices in response to the one or more subsequent inquiry commands for the information about the target device.

10. The device of claim 9 , wherein the inquiry data from the target device is static and does not change over time.

11. The device of claim 8 , wherein the inquiry data from the target device comprises Small Computer System Interface (SCSI) response data.

12. The device of claim 8 , wherein the inquiry data from the target device comprises a serial number of the target device, a manufacturer of the target device, a configuration of the target device, a version number of the target device, or a combination thereof.

13. The device of claim 7 , wherein the router is further configured to:

upon receiving from a first host device a first request for static or near-static data about a first target device, forward the first request to the first target device regardless of whether or not the first target device is busy;

store the static or near-static data about the first target device returned by the first target device in response to the first request in the cache memory;

forward the static or near-static data about the first target device returned by the first target device in response to the first request to the first host device; and

in response to subsequent requests for the static or near-static data about the first target device, read the static or near-static data about the first target device returned by the first target device in response to the first request from the cache memory and provide the static or near-static data about the first target device returned by the first target device in response to the first request in response to the subsequent requests.

14. A system for servicing inquiry commands, comprising:

one or more host devices;

one or more sequential target devices on a storage area network (SAN);

a router connected to the one or more host devices and the one or more sequential target devices on the SAN; and

a cache memory coupled to the router, wherein the router is configured to:

receive from a host device an inquiry command for information about a target device;

determine whether or not the information about the target device is stored in the cache memory;

if the information about the target device is in the cache memory, retrieve the information about the target device from the cache memory and return the retrieved information about the target device to the host device in response to the inquiry command regardless of whether or not the target device is busy;

if the information about the target device is not in the cache memory, determine whether or not the target device is busy;

if the target device is not busy, forward the inquiry command from the host device to the target device; and

if the target device is busy, place the inquiry command from the host device in a queue, hold the inquiry command from the host device in the queue until the target device becomes available, and forward the inquiry command from the host device to the target device for processing by the target device when the target device becomes available, thereby keeping the inquiry command from the host device from timing out, wherein the router is further configured to:

determine whether a first command received from a first host device coupled to the router comprises a first inquiry command for static or near-static data about a first target device on the SAN;

if the first command from the first host device comprises the first inquiry command for the static or near-static data about the first target device, read the static or near-static data about the first target device from the cache memory and provide the static or near-static data about the first target device to the first host device in response to the first inquiry command from the first host device; and

if the first command from the first host device does not comprise the first inquiry command for the static or near-static data about the first target device, forward the first command to the first target device for execution of the first command.

15. The system of claim 14 , wherein the router is further configured to:

receive inquiry data from the target device, wherein the inquiry data is responsive to the inquiry command from the host device;

store the inquiry data from the target device in the cache memory; and

return the inquiry data to the host device in response to the inquiry command.

16. The system of claim 15 , wherein the router is further configured to:

receive one or more subsequent inquiry commands for the information about the target device from the one or more host devices;

retrieve the inquiry data from the cache memory; and

return the inquiry data to the one or more host devices in response to the one or more subsequent inquiry commands for the information about the target device.

17. The system of claim 14 , wherein the router is further configured to:

upon receiving from a first host device a first request for static or near-static data about a first target device, forward the first request to the first target device regardless of whether or not the first target device is busy;

store the static or near-static data about the first target device returned by the first target device in response to the first request in the cache memory;

forward the static or near-static data about the first target device returned by the first target device in response to the first request to the first host device; and

in response to subsequent requests for the static or near-static data about the first target device, read the static or near-static data about the first target device returned by the first target device in response to the first request from the cache memory and provide the static or near-static data about the first target device returned by the first target device in response to the first request in response to the subsequent requests.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2015
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 037079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2015
From: HEWLETT-PACKARD COMPANY
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 036518/0623 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2014
From: FORTRESS CREDIT CO LLC
To: CF DB EZ LLC
Reel/Frame 033706/0340 →
SECURITY AGREEMENT Recorded Aug 1, 2013
From: KIP CR P1 LP
To: FORTRESS CREDIT CO LLC
Reel/Frame 030935/0937 →
SECURITY AGREEMENT Recorded Aug 1, 2013
From: CROSSROADS SYSTEMS, INC.
To: FORTRESS CREDIT CO LLC
Reel/Frame 030935/0910 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2013
From: CROSSROADS SYSTEMS, INC.
To: KIP CR P1 LP
Reel/Frame 030935/0916 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2009
From: DALE, STEPHEN G.; CULP, BRADFRED W.
To: CROSSROADS SYSTEMS, INC.; HEWLETT-PACKARD COMPANY
Reel/Frame 022397/0408 →