IP Library Granted Patent US 8,499,094
Granted Patent B2
US 8,499,094 · App. 13/027,079 · Granted Jul 30, 2013

Modification of small computer system interface commands to exchange data with a networked storage device using AT attachment over ethernet

Inventors: Brantley Coile (Athens, GA); Samuel Hopkins (Colbert, GA)
Assignee: Coraid, Inc.
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 8,499,094
App. No.
13/027,079
Granted
Jul 30, 2013
Kind
B2
Abstract

A process executed by a computing device uses commands having a first format to exchange data through a network with a storage device configured to execute commands having a second format. A storage device controller identifies a command type associated with a command received from the process and identifies one or more physical memory addresses associated with the command. The storage device controller identifies a command having a second format associated with the received command and generates a network request including the command having the second format, the one or more physical memory addresses, a device identifier associated with the storage device and a tag. The network request is transmitted through a network to the storage device which executes the command having the second format. For example, an AoE request including an ATA command is generated from a received SCSI command.

Claims (55)

1. A method for generating a network request including a second command from a first command, the method comprising:

identifying a command type associated with the first command having a first format;

determining one or more physical memory addresses associated with the first command;

generating one or more identifiers having a second format, each identifier associated with at least one of the physical memory addresses associated with the first command;

identifying the second command having the second format, the second command associated with the identified command type;

generating the network request at a computing device located across a network from a storage device configured to use the second format, the network request including a device identifier associated with the storage device, a tag, the second command and the one or more identifiers having the second format and being associated with the physical memory addresses associated with the first command having the first format; and

storing the network request in one of a plurality of transmission queues for transmission over the network from the computing device to the storage device,

wherein storing the network request in a transmission queue comprises:

storing a copy of the device identifier associated with the storage device;

storing a copy of the tag;

associating the copy of the tag with the copy of the device identifier;

determining a congestion level associated with each of the transmission queues;

identifying one of the transmission queues having a minimum congestion level when compared to the remaining transmission queues in the plurality of transmission queues; and

storing the network request in the transmission queue from the plurality of transmission queues having the minimum congestion level.

2. The method of claim 1 wherein the first format comprises a Small Computing System Interface (“SCSI”) format.

3. The method of claim 1 wherein the second format comprises an AT Attachment (“ATA”) format.

4. The method of claim 1 , wherein the network request comprises an AT Attachment over Ethernet (“AoE”) request.

5. The method of claim 1 , wherein identifying the command type associated with the first command comprises:

determining an opcode included in the first command.

6. The method of claim 1 , wherein generating the identifier associated with the at least one physical memory address associated with the first command comprises:

determining a scatter/gather list associated with the first command;

identifying a pointer included in the scatter/gather list;

determining a physical memory address associated with the pointer; and

generating a first identifier associated with the physical memory address associated with the pointer.

7. The method of claim 1 , wherein the device identifier comprises a major address and a minor address associated with the storage device.

8. The method of claim 1 , further comprising:

receiving a network response comprising a response tag;

comparing the response tag to the tag of the network request;

determining that the tag matches the response tag; and

associating the network response with the network request.

9. A computer readable storage medium for storing a computer program product including instructions executable by a processor of a computing device to perform a computer implemented method for generating a network request including a second command from a first command, the method comprising:

identifying a command type associated with the first command having a first format;

determining one or more physical memory addresses associated with the first command;

generating one or more identifiers having a second format, each identifier associated with at least one of the physical memory addresses associated with the first command;

identifying the second command having the second format, the second command associated with the identified command type;

generating the network request at a computing device located across a network from a storage device configured to use the second format, the network request including a device identifier associated with the storage device, a tag, the second command and the one or more identifiers having the second format and being associated with the physical memory addresses associated with the first command having the first format; and

storing the network request in one of a plurality of transmission queues for transmission over the network from the computing device to the storage device,

wherein storing the network request in a transmission queue comprises:

storing a copy of the device identifier associated with the storage device;

storing a copy of the tag;

associating the copy of the tag with the copy of the device identifier;

determining a congestion level associated with each of the transmission queues;

identifying one of the transmission queues having a minimum congestion level when compared to the remaining transmission queues in the plurality of transmission queues; and

storing the network request in the transmission queue from the plurality of transmission queues having the minimum congestion level.

10. The computer readable storage medium of claim 9 , wherein the first format comprises a Small Computing System Interface (“SCSI”) format.

11. The computer readable storage medium of claim 9 wherein the second format comprises an AT Attachment (“ATA”) format.

12. The computer readable storage medium of claim 9 , wherein the network request comprises an AT Attachment over Ethernet (“AoE”) request.

13. The computer readable storage medium of claim 9 , wherein identifying the command type associated with the first command comprises:

determining an opcode included in the first command.

14. The computer readable storage medium of claim 9 , wherein generating the identifier associated with the at least one physical memory address associated with the first command comprises:

determining a scatter/gather list associated with the first command;

identifying a pointer included in the scatter/gather list;

determining a physical memory address associated with the pointer; and

generating a first identifier associated with the physical memory address associated with the pointer.

15. The computer readable storage medium of claim 9 , wherein the device identifier comprises a major address and a minor address associated with the storage device.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 12, 2016
From: CORAID, INC.
To: INTERMODAL DATA, INC.
Reel/Frame 038576/0184 →
SECURITY INTEREST Recorded May 12, 2016
From: INTERMODAL DATA, INC.
To: TRIPLEPOINT VENTURE GROWTH BDC CORP.
Reel/Frame 038576/0311 →
SECURED PARTY BILL OF SALE Recorded Jun 4, 2015
From: CORAID, INC.
To: INTERMODAL DATA, INC.
Reel/Frame 035827/0886 →
ASSIGNMENT OF SECURITY AGREEMENT (REEL 031869, FRAME 0790) Recorded Mar 7, 2014
From: TRIPLEPOINT CAPITAL LLC
To: TRIPLEPOINT VENTURE GROWTH BDC CORP.
Reel/Frame 032410/0347 →
SECURITY AGREEMENT Recorded Dec 26, 2013
From: CORAID, INC.
To: TRIPLEPOINT CAPITAL LLC
Reel/Frame 031869/0790 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2011
From: COILE, BRANTLEY; HOPKINS, SAMUEL
To: CORAID, INC.
Reel/Frame 025806/0612 →
Continuity (2)
Provisional Application 61310689 · Mar 4, 2010
Related Publication 20110219141A1 · Sep 8, 2011