IP Library Granted Patent US 8,412,904
Granted Patent B2
US 8,412,904 · App. 13/075,000 · Granted Apr 2, 2013

Apparatus, system, and method for managing concurrent storage requests

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,412,904
App. No.
13/075,000
Granted
Apr 2, 2013
Kind
B2
Abstract

Apparatus, systems, and methods are disclosed for managing concurrent storage requests. A multiple storage request receiver module is configured to recognize at least two storage requests from clients for data in storage devices of a storage device set. The at least two concurrent storage requests address a common portion of data. A sequencer module is configured to determine a first storage request and a second storage request from the concurrent storage requests by way of selection criteria. The sequencer module is configured to ensure completion of the first storage request prior to executing the second storage request by receiving an acknowledgment from each of the storage devices of the storage device set that received portions of the first storage request. The portions may be sent to the storage devices to execute the first storage request.

Claims (29)

1. A method for managing concurrent storage requests in a RAID group, the method comprising:

receiving concurrent storage requests for data in storage devices of a storage device set, the concurrent storage requests comprising two storage requests, each concurrent storage request received from a client, the storage device set comprising autonomous storage devices forming a RAID group, the two concurrent storage requests addressing a common portion of data;

determining a first storage request and a second storage request from the concurrent storage requests by way of selection criteria; and

ensuring completion of the first storage request prior to executing the second storage request by receiving an acknowledgment from each of the storage devices that received portions of the first storage request, the portions sent to the storage devices to execute the first storage request.

2. The method of claim 1 , wherein ensuring completion of the first storage request comprises determining completion of the portions of the first storage request sent to the storage devices to execute the first storage request.

3. A method for managing concurrent storage requests in a RAID group, the method comprising:

recognizing first and second concurrent storage requests at a particular storage device in a storage device set, the storage device set comprising autonomous storage devices forming a RAID group, the first and second concurrent storage requests received from a client and addressing a common portion of data, the first storage request arriving prior to the second storage request; and

ensuring completion of the first storage request prior to executing the second storage request by receiving an acknowledgement from each of the storage devices that received portions of the first storage request, the portions sent from the particular storage device to storage devices in the storage device set to execute the first storage request.

4. The method of claim 3 , wherein an acknowledgment from a storage device acknowledges completion of a portion of the first storage request by the storage device.

5. The method of claim 3 , wherein each storage device that received a portion of the first storage request transfers data of the storage request using one of Direct Memory Access (“DMA”) and Remote Direct Memory Access (“RDMA”).

6. The method of claim 3 , wherein each storage device that received a portion of the first storage request transfers data of the storage request directly from the client according to the portion in response to receiving the portion.

7. The method of claim 3 , further comprising transferring data for the storage request from the client to the particular storage device, wherein each storage device that received a portion of the first storage request transfers at least a portion of the data of the storage request from the particular storage device.

8. The method of claim 3 , wherein the particular storage device comprises a master controller configured to ensure completion of the first storage request prior to executing the second storage request.

9. The method claim 1 , further comprising: determining the storage devices to execute the first storage request; and sending the portions of the first storage request to the determined storage devices, the portions of the first storage request each comprising a subcommand derived from the first storage request and directing the determined storage devices to transfer data for the storage request.

10. The method of claim 9 , wherein the determined storage devices transfer the data of the storage request using one of Direct Memory Access (“DMA”) and Remote Direct Memory Access (“RDMA”).

11. The method of claim 9 , wherein each determined storage device transfers data of the first storage request directly from the client according to the subcommand in response to receiving the subcommand.

12. The method of claim 9 , further comprising transferring data of the first storage request from the client to a particular storage device of the storage device set, wherein each determined storage device transfers at least a portion of the data of the first storage request from the particular storage device, the particular storage device receiving the first storage request from the client.

13. The method of claim 9 , wherein a particular storage device receives at least the first storage request from the client, the particular storage device comprising a master controller configured to coordinate execution of the first storage request.

14. An apparatus for managing concurrent storage requests, the apparatus comprising:

a multiple storage request receiver module configured to recognize at least two concurrent storage requests from clients for data in storage devices of a storage device set, the at least two concurrent storage requests addressing a common portion of data;

a sequencer module configured to determine a first storage request and a second storage request from the concurrent storage requests by way of selection criteria, the sequencer module configured to ensure completion of the first storage request prior to executing the second storage request by receiving an acknowledgment from each of the storage devices of the storage device set that received portions of the first storage request, the portions sent to the storage devices to execute the first storage request.

15. The apparatus of claim 14 , further comprising a striping module configured to divide data of the first storage request into data segments associated with the portions of the first storage request, each data segment for writing to a separate storage device of the storage device set.

16. The apparatus of claim 14 , further comprising a parity-mirror module configured to write parity data for the first storage request to one or more parity-mirror storage devices within the storage device set, the parity-minor storage devices being in addition to the storage devices that received portions of the first storage request.

17. The apparatus of claim 16 , further comprising a parity alternation module configured to alternate, for each of a plurality of stripes, which storage device within the storage device set is assigned to be the one or more parity-minor storage devices.

18. The apparatus of claim 14 , further comprising a master validation module configured to confirm that a master controller is available to control execution of the at least two concurrent storage requests, the at least two concurrent storage requests received by other master controllers.

19. The apparatus of claim 14 , further comprising a master determination module configured to determine which master controller of a group of master controllers is assigned to execute the first storage request.

20. The apparatus of claim 14 , further comprising a master error module configured to return an error in response to one or more of:

a master controller receiving a storage request not controlled by the master controller; and

determining that a master controller is no longer assigned to execute the first storage request at a time of the completion of the first storage request.

Assignments (8)
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0850 →
RELEASE OF SECURITY INTEREST Recorded May 4, 2016
From: FUSION-IO, INC.
To: SANDISK CORPORATION
Reel/Frame 038748/0880 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: PS12 LUXCO S.A.R.L.
Reel/Frame 038362/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 038362/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2016
From: LONGITUDE ENTERPRISE FLASH SARL
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 038324/0628 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2014
From: FUSION-IO, INC.
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033419/0748 →
SECURITY INTEREST Recorded Jul 24, 2014
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: FUSION-IO, INC.
Reel/Frame 033410/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2014
From: FUSION-IO, INC.
To: INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033389/0511 →