IP Library Granted Patent US 7,203,939
Granted Patent B2
US 7,203,939 · App. 10/162,816 · Granted Apr 10, 2007

Dense allocation for data storage

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,203,939
App. No.
10/162,816
Granted
Apr 10, 2007
Kind
B2
Abstract

A method for increasing locality of disk references for data storage in a single file system is provided. This locality results in higher system throughput for delivery and access to the data. The data is separated into meta data and content. Both meta data and the content are densely packed in quasi-reserved sections of the disk space. The content is allocated using time based locality.

Claims (72)

1. A method of allocating data in an application, the data including immutable content and meta data associated with the immutable content, the method comprising:

designating a first quasi-reserved section for the meta data;

designating a second quasi-reserved section for the immutable content; and

allocating the meta data and the immutable content to the first and second quasi-reserved sections, respectively,

wherein, subject to space unavailability, at least one of the first quasi-reserved section stores immutable content and the second quasi-reserved section stores meta data, and

wherein the immutable content is allocated based on a time of delivery, thereby providing fast write and read processes in a multiple user access application.

2. A method of allocating data in an application, the data including immutable content and meta data associated with the immutable content, the method comprising:

designating a first quasi-reserved section for the meta data;

designating a second quasi-reserved section for the immutable content; and

allocating the meta data and the immutable content to the first and second quasi-reserved sections, respectively,

wherein, subject to space unavailability, at least one of the first quasi-reserved section stores immutable content and the second quasi-reserved section stores meta data,

wherein the immutable content is allocated based on a time of delivery, thereby providing fast write and read processes in a multiple user access application, and

wherein determining space unavailability includes determining whether free space in a quasi-reserved section is larger than an average amount of free space across that quasi-reserved section.

3. A method of allocating data in an application, the data including immutable content and meta data associated with the immutable content, the method comprising:

designating a first quasi-reserved section for the meta data;

designating a second quasi-reserved section for the immutable content; and

allocating the meta data and the immutable content to the first and second quasi-reserved sections, respectively,

wherein, subject to space unavailability, at least one of the first quasi-reserved section stores immutable content and the second quasi-reserved section stores meta data,

wherein the immutable content is allocated based on a time of delivery, thereby providing fast write and read processes in a multiple user access application, and

wherein determining space unavailability includes determining whether a free space in a quasi-reserved section subtracted from an average free space in that quasi-reserved section is smaller than a tunable constant.

4. The method of claim 1 , wherein allocating the immutable content to the second quasi-reserved section includes attempting allocation from a first region pointed to by an index.

5. The method of claim 4 , wherein the index moves to a second region in the second quasi-reserved section after allocation, wherein the second region is at a first free space after the first region.

6. The method of claim 4 , further including deleting immutable content, thereby freeing space from its region.

7. The method of claim 6 , wherein if the free space in the region does not exceed a computed size, then leaving the index at the first region.

8. The method of claim 6 , wherein if the free space in the region exceeds a computed size, then determining whether the freed region precedes the first region and is within the second quasi-reserved section.

9. The method of claim 8 , wherein if the freed region precedes the first region, then setting the index to the freed region.

10. The method of claim 9 , wherein if the freed region does not precede the first region, then leaving the index at the first region.

11. A software program stored on a computer-readable storage medium and executable on a computer comprising a processor, the software program for allocating data in an application, the data including immutable content and meta data associated with the immutable content, the software program comprising:

a source code segment for designating a first quasi-reserved section for the meta data;

a source code segment for designating a second quasi-reserved section for the immutable content;

a source code segment for allocating the meta data and the immutable content to the first and second quasi-reserved sections, respectively,

wherein the software program creates the first and second quasi-reserved sections on a disk, wherein the first quasi-reserved section preferentially stores meta data and the second quasi-reserved section preferentially stores immutable content,

wherein, subject space unavailability, at least one of the first quasi-reserved section stores immutable content and the second quasi-reserved section stores meta data,

wherein the source code segment for allocating the immutable content the second quasi-reserved section allocates immutable content based on a time of delivery, thereby providing fast write and read processes in a multiple user access application.

12. A software program stored on a computer-readable storage medium and executable on a computer comprising a processor, the software program for allocating data in an application, the data including immutable content and meta data associated with the immutable content, the software program comprising:

a source code segment for designating a first quasi-reserved section for the meta data;

a source code segment for designating a second quasi-reserved section for the immutable content;

a source code segment for allocating the meta data and the immutable content to the first and second quasi-reserved sections, respectively; and

a source code segment for determining whether free space in a quasi-reserved section is larger than an average amount of free space across that quasi-reserved section, thereby determining space unavailability,

wherein the software program when executed by a computer creates the first and second quasi-reserved sections on a disk, wherein the first quasi-reserved section preferentially stores meta data and the second quasi-reserved section preferentially stores immutable content,

wherein, subject space unavailability, at least one of the first quasi-reserved section stores immutable content and the second quasi-reserved section stores meta data, and

wherein the source code segment for allocating the immutable content the second quasi-reserved section allocates immutable content based on a time of delivery, thereby providing fast write and read processes in a multiple user access application.

13. A software program stored on a computer-readable storage medium and executable on a computer comprising a processor, the software program for allocating data in an application, the data including immutable content and meta data associated with the immutable content, the software program comprising:

a source code segment for designating a first quasi-reserved section for the meta data;

a source code segment for designating a second quasi-reserved section for the immutable content;

a source code segment for allocating the meta data and the immutable content to the first and second quasi-reserved sections, respectively; and

a source code segment for determining whether a free space in a quasi-reserved section subtracted from an average free space in that quasi-reserved section is smaller that a tunable constant, thereby determining space unavailability,

wherein the software program when executed by a computer creates the first and second quasi-reserved sections on a disk, wherein the first quasi-reserved section preferentially stores meta data and the second quasi-reserved section preferentially stores immutable content,

wherein, subject space unavailability, at least one of the first quasi-reserved section stores immutable content and the second quasi-reserved section stores meta data, and

wherein the source code segment for allocating the immutable content the second quasi-reserved section allocates immutable content based on a time of delivery, thereby providing fast write and read processes in a multiple user access application.

14. The software program of claim 11 , wherein the source code segment for allocating the immutable content to the second quasi-reserved section includes a source code segment for attempting allocation from a first region pointed to by an index.

15. The software program of claim 14 , further including a source code segment for the moving the index to a second region in the second quasi-reserved section after allocation, wherein the second region is at a first free space after the first region.

16. The software program of claim 14 , further including a source code segment for deleting immutable content, thereby freeing space from its region.

17. The software program of claim 16 , further including a source code segment for leaving the index at the first region if the free space in the region does not exceed a computed size.

18. The software program of claim 16 , further including a source code segment for determining whether the free space in the region precedes the first region if the free space in the region exceeds a computed size.

19. The software program of claim 18 , further including a source code segment for setting the index to the free space in the region if the free space in the region precedes the first region and is within the second quasi-reserved section.

20. The software program of claim 19 , further including a source code segment for leaving the index at the first region if the freed region does not precede the first region.

21. A method of storing data in at least one disk subsystem, the data including content and meta data associated with the content, the method comprising:

preferentially allocating the meta data to a first section; and

preferentially allocating the content to a second section,

wherein if a space is unavailable for the meta data in the first section, then finding the space in the second section,

wherein if a space is unavailable for the content in the second section, then finding space in the first section, and

wherein the immutable content is allocated based on a time of delivery, thereby providing fast write processes in a multiple user access application.

22. The method of claim 21 , wherein preferentially allocating the content to the second section includes attempting allocation from a first region pointed to by an index.

23. The method of claim 21 , wherein if multiple disk subsystems are provided, then performing the allocations according to an allocation algorithm.

24. A disk space for storing data, the data including content and meta data associated with the content, the disk space comprising:

a first section preferentially dedicated to meta data; and

a second section preferentially dedicated to content,

wherein the meta data and the immutable content are allocated to the first and second sections, respectively,

wherein, subject to space unavailability, meta data is storable in the second section and content is storable in the first section, and wherein the immutable content is allocated based on a time of delivery, thereby providing fast write and read processes in a multiple user access application.

25. The disk space of claim 24 , wherein content in the second section is placed in chronological order.

26. The disk space of claim 24 , wherein the meta data in the first section is densely packed together using a first space available allocation.

Assignments (14)
RELEASE OF SECURITY INTEREST Recorded Mar 8, 2016
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
To: CRITICAL PATH, INC.
Reel/Frame 037924/0246 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2016
From: MIRAPOINT SOFTWARE, INC.
To: CRITICAL PATH, INC.
Reel/Frame 037842/0804 →
RELEASE OF SECURITY INTEREST Recorded Dec 3, 2013
From: SILICON VALLEY BANK
To: CRITICAL PATH, INC.
Reel/Frame 031709/0175 →
SECURITY AGREEMENT Recorded Dec 3, 2013
From: CRITICAL PATH, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 031763/0778 →
RELEASE OF SECURITY INTEREST Recorded Nov 11, 2013
From: ESCALATE CAPITAL I, L.P.
To: CRITICAL PATH, INC.
Reel/Frame 031578/0520 →
THIRD AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 31, 2012
From: CRITICAL PATH, INC.
To: ESCALATE CAPITAL I, L.P.
Reel/Frame 027629/0433 →
RELEASE OF SECURITY INTEREST Recorded Dec 2, 2010
From: SQUARE 1 BANK
To: MIRAPOINT SOFTWARE, INC.
Reel/Frame 025381/0870 →
SECURITY AGREEMENT Recorded Nov 6, 2010
From: CRITICAL PATH, INC.
To: SILICON VALLEY BANK
Reel/Frame 025328/0374 →
SECURITY AGREEMENT Recorded Feb 15, 2008
From: MIRAPOINT SOFTWARE, INC.
To: SQUARE 1 BANK
Reel/Frame 020526/0232 →
SECURITY AGREEMENT Recorded Nov 21, 2007
From: MIRAPOINT SOFTWARE, INC.
To: ESCALATE CAPITAL I, L.P.
Reel/Frame 020143/0327 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2007
From: ESCALATE CAPITAL I, L.P.
To: MIRAPOINT SOFTWARE, INC.
Reel/Frame 020143/0249 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2007
From: MIRAPOINT, INC.
To: ESCALATE CAPITAL I, L.P.
Reel/Frame 020143/0243 →
SECURITY AGREEMENT Recorded Oct 5, 2007
From: MIRAPOINT, INC.
To: ESCALATE CAPITAL I, L.P.
Reel/Frame 019920/0624 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 4, 2002
From: KOHLI, JASPAL
To: MIRAPOINT, INC.
Reel/Frame 012999/0980 →