IP Library › Granted Patent US 7,373,467
Granted Patent B2
US 7,373,467 · App. 11/032,753 · Granted May 13, 2008

Storage device flow control

Assignee: Hewlett-Packard Development Company, L.P.
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,373,467
App. No.
11/032,753
Filed
Jan 10, 2005
Granted
May 13, 2008
Kind
B2
Art Unit
2187
USPC
711/158
Abstract

A method for allocating data write credits for a storage device includes gathering requests for the data write credits from a plurality of data sources and assembling the plurality of data sources in a prioritized list. The method also includes removing lowest priority data sources one by one from the prioritized list until a total of the requests made by all data sources remaining in the prioritized list are within a number of available data write credits, and granting the requests for all the data sources remaining in the prioritized list.

Claims (35)

1. A method for allocating data write credits for a storage device, the method comprising:

gathering requests for said data write credits from a plurality of data sources;

assembling said plurality of data sources in a prioritized list;

removing lowest priority data sources one by one from said prioritized list until a total of the requests made by all data sources remaining in said prioritized list is within a number of available data write credits; and

granting said requests for all said data sources remaining in said prioritized list.

2. The method of claim 1 , wherein a granted request for said data write credits enables a data source receiving said data write credits to write a number of data entries equal to a number of credits in said granted request to said storage device.

3. The method of claim 1 , wherein no requests are granted if said prioritized list is emptied while removing said lowest priority data sources.

4. The method of claim 1 , wherein any of said plurality of data sources that make no request are excluded from said prioritized list.

5. The method of claim 1 , further comprising calculating said total of said requests made by all data sources remaining in said prioritized list each time said prioritized list is changed.

6. The method of claim 1 , wherein said assembling said plurality of data sources in said prioritized list comprises reading a priority for each of said plurality of data sources.

7. The method of claim 1 , wherein said assembling said plurality of data sources in said prioritized list comprises assigning a priority to each of said plurality of data sources.

8. The method of claim 1 , further comprising reading said number of available data write credits from a credit counter.

9. The method of claim 8 , further comprising gathering a used credit count from each of said data sources whose requests were granted, wherein said used credit counts indicate how many credits were actually used by said data sources, said method further comprising updating said credit counter based on said used credit counts.

10. A method of processing requests from a plurality of data sources for data write credits for a communal storage device, the method comprising:

gathering said data write credit requests;

identifying a priority of each of said plurality of data sources;

adding said data write credit requests;

granting all of said data write credit requests if sufficient credits are available for all said data write requests;

granting said data write credit request for a highest priority data source if sufficient credits are available; and

granting said data write credit request for a lowest priority data source if sufficient credits are available and if said data write credit request for said highest priority data source has also been granted, wherein all ungranted requests are denied.

11. An apparatus for controlling data flow to a storage device, comprising:

a. at least one computer readable medium; and

b. computer readable program code stored on said at least one computer readable medium, said at least one computer readable medium consisting of an element selected from the group consisting of an electronic storage device, an optical storage device, and a magnetic storage device, said computer readable program code comprising:

i. code for determining a priority of each of a plurality of data sources requesting credits;

ii. code which, for each of said plurality of data sources, calculates a credit request total by adding a number of credits requested by said data source plus a number of credits requested by each of said plurality of data sources having a priority greater than said data source; and

iii. code for identifying a largest credit request total for which sufficient credits are available, and for granting a request of each data source whose credit request was included in said largest credit request total and for denying requests for which sufficient credits are not available.

12. The apparatus of claim 11 , wherein said code calculates said plurality of credit request totals in parallel.

13. The apparatus of claim 11 , further comprising code for reading a credit counter to obtain an available credit count.

14. The apparatus of claim 11 , wherein said code for determining a priority of each of said requesting data sources comprises code for ranking said plurality of data sources from highest priority to lowest priority.

15. An apparatus for controlling data flow to a storage device, comprising:

a. at least one computer readable medium; and

b. computer readable program code stored on said at least one computer readable medium, said at least one computer readable medium consisting of an element selected from the group consisting of an electronic storage device, an optical storage device, and a magnetic storage device, said computer readable program code comprising:

i. code for determining a priority of each of a plurality of data sources requesting credits;

ii. code which, for each of said plurality of data sources, calculates a credit request total by adding a number of credits requested by said data source plus a number of credits requested by each of said plurality of data sources having a priority greater than said data source; and

iii. code for identifying a largest credit request total for which sufficient credits are available, and for granting a request of each data source whose credit request was included in said largest credit request total and for denying request for which sufficient credits are not available, wherein said code for determining a priority of each of said requesting data sources comprises code for ranking said plurality of data sources from highest priority to lowest priority, and wherein said code for identifying said largest credit request total for which sufficient credits are available comprises code for comparing said credit request totals one by one with an available number of credits, beginning with a credit request total corresponding to a highest priority data source, and continuing with a credit request total corresponding to a next highest priority data source, and so on with data sources of decreasing priority, until said largest credit request total, which is not greater than said available number of credits, is reached.

Assignments (2)
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 Jan 10, 2005
From: HUGHES, BRIAN WILLIAM
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 016178/0849 →
Continuity (2)
Provisional Application 6057227200 · May 17, 2004
Related Publication 20050257012A1 · Nov 17, 2005