IP Library Granted Patent US 9,514,137
Granted Patent B2
US 9,514,137 · App. 14/303,329 · Granted Dec 6, 2016

Hybrid garbage collection

Inventors: Frank Barrus (New Ipswich, NH); Tad Hunt (Sunnyvale, CA)
Assignee: Exablox Corporation
G06F17/30067G06F17/3023G06F17/30135G06F17/30303G06F17/30607
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 9,514,137
App. No.
14/303,329
Granted
Dec 6, 2016
Kind
B2
Abstract

Disclosed is a method for hybrid garbage collection of objects in a file system. An example method includes associating, with each object in the file system, a reference counter, an expiration time, and a version identifier. The object is can be kept in the file system while the reference counter of the object is non-zero. After determining that the reference counter of the object is zero, the object can be kept in the file system up to the expiration time associated with the object. When a reference referring to the object is deleted, the expiration time of the object is updated to the latest of the expiration times of the object and the reference. Furthermore, the object can be kept in the file system while the version identifier of the object is larger than a predetermined version number.

Claims (68)

1. A computer-implemented method for hybrid garbage collection of objects in a file system, the method comprising:

associating a reference counter with an object in the file system;

associating an expiration time with the object, the expiration time being a period of time for which the object is kept in the file system after the reference counter associated with the object becomes zero;

associating a version identifier with the object;

keeping the object in the file system while the reference counter of the object is non-zero; and

wherein in response to determining that the reference counter of the object is zero, keeping the object in the file system up to the expiration time associated with the object.

2. The method of claim 1 , wherein in response to a new reference referring to the object being added, increasing by one the reference counter associated with the object.

3. The method of claim 1 further comprising:

determining that a second reference counter associated with an existing reference referring to the object is zero; and

in response to the determination:

decreasing by one the reference counter of the object; and

setting the expiration time associated with the object to the latest of the expiration time of the object and an expiration time of the reference.

4. The method of claim 1 further comprising:

determining that the reference counter associated with the object is zero and a new reference referring the object is added, a new reference counter associated with the new reference being non-zero; and

in response to the determination:

increasing by one the reference counter associated with the object; and

setting the expiration time associated with the object to the latest of the expiration time of the object and an expiration time of the new reference.

5. The method of claim 1 , wherein the version identifier is monotonically increased with a change of the file system, the change of the file system corresponding to adding at least one new object to the file system.

6. The method of claim 5 , further comprising:

assigning the same version identifier to the at least one new object and all objects added to the file system due to the addition of the at least one new object.

7. The method of claim 1 further comprising:

keeping the object in the file system while the version identifier associated with the object is larger than a predefined maximum version.

8. The method of claim 1 further comprising

providing a chain of reference objects to subsequently refer versions of the object, wherein

a second reference object from the chain refers to a first version of the object;

a last reference object in the chain refers to a second-to-last version of the object;

a reference counter associated with a first reference object from the chain is set to one;

a reference counter associated with the last reference object from the chain is set to one; and

a reference counter associated with a reference object from the chain between the first reference object and the last reference object is equal to zero.

9. The method of claim 8 , further comprising, in response to adding a new version of the object to the file system:

determining an expiration time associated with the last reference object in the chain;

setting the reference counter associated with the last reference object in the chain to zero; and

adding a new reference object to an end of the chain, the new reference object referring to the new version of the object.

10. The method of claim 9 , wherein the expiration time associated with the last reference object in the chain is calculated based on a time period between addition of a last version of the object and the new version of the object.

11. A non-transitory computer-readable medium having instructions stored thereon, which when executed by one or more processors, cause the one or more processors to perform a method for hybrid garbage collection of objects in a file system, the method comprising:

associating a reference counter with an object in the file system;

associating an expiration time with the object, the expiration time being a period of time for which the object is kept in the file system after the reference counter associated with the object becomes zero;

associating a version identifier with the object;

keeping the object in the file system while the reference counter of the object is non-zero; and

wherein in response to determining that the reference counter of the object is zero, keeping the object in the file system up to the expiration time associated with the object.

12. The non-transitory computer-readable medium of claim 11 , further comprising, in response to a new reference referring to the object being added, increasing by one the reference counter associated with the object.

13. The non-transitory computer-readable medium of claim 11 , further comprising:

determining that a second reference counter associated with an existing reference referring to the object is zero; and

in response to the determination:

decreasing by one the reference counter of the object; and

setting the expiration time associated with the object to the latest of the expiration time of the object and an expiration time of the reference.

14. The non-transitory computer-readable medium of claim 11 , further comprising:

determining that the reference counter associated with the object is zero and a new reference referring the object is added, a new reference counter associated with the new reference being non-zero; and

in response to the determination:

increasing by one the reference counter associated with the object; and

setting the expiration time associated with the object to the latest of the expiration time of the object and an expiration time of the new reference.

15. The non-transitory computer-readable medium of claim 11 , wherein the version identifier is monotonically increased with a change of the file system, the change of the file system being associated with adding at least one new object to the file system.

16. The non-transitory computer-readable medium of claim 15 , further comprising:

assigning the same version identifier to the at least one new object and all objects added to the file system due to the addition of the at least one new object.

17. The non-transitory computer-readable medium of claim 11 further comprising:

keeping the object in the file system while the version identifier associated with the object is larger than a predefined maximum version.

18. The non-transitory computer-readable medium of claim 11 , further comprising:

providing a chain of reference objects for subsequent reference versions of the object, wherein

a second reference object from the chain refers to a first version of the object;

a last reference object in the chain refers to a second-to-last version of the object;

a reference counter associated with a first reference object from the chain is set to one;

a reference counter associated with the last reference object from the chain is set to one; and

a reference counter associated with a reference object from the chain between the first reference object and the last reference object is equal to zero.

19. The non-transitory computer-readable medium of claim 18 , further comprising, in response to adding a new version of the object to the file system:

determining an expiration time associated with the last reference object in the chain;

setting the reference counter associated with the last reference object in the chain to zero; and

adding a new reference object to an end of the chain, the new reference object referring to a previous newest version of the object.

20. The non-transitory computer-readable medium of claim 19 , wherein the expiration time associated with the last reference object in the chain is calculated based on a time period between adding a last version of the object and the new version of the object.

Assignments (6)
CHANGE OF NAME Recorded Aug 16, 2024
From: STORAGECRAFT TECHNOLOGY CORPORATION
To: STORAGECRAFT TECHNOLOGY LLC
Reel/Frame 068660/0176 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 16, 2024
From: MONROE CAPITAL MANAGEMENT ADVISORS, LLC; ARCSTOR MIDCO LLC; ARCSERVE ACQUISITION COMPANY LLC; ARCSERVE (USA) LLC; STORAGECRAFT TECHNOLOGY, LLC
To: STORAGECRAFT, LLC
Reel/Frame 068660/0208 →
SECURITY INTEREST Recorded Mar 16, 2021
From: ARCSERVE (USA) LLC; STORAGECRAFT TECHNOLOGY LLC; ZETTA, LLC
To: MONROE CAPITAL MANAGEMENT ADVISORS, LLC, AS COLLATERAL AGENT
Reel/Frame 055603/0219 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT Recorded Mar 16, 2021
From: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
To: EXABLOX CORPORATION; STORAGECRAFT TECHNOLOGY CORPORATION; STORAGECRAFT INTERMEDIATE HOLDINGS, INC.; STORAGECRAFT ACQUISITION CORPORATION
Reel/Frame 055614/0852 →
SECURITY INTEREST Recorded Mar 27, 2017
From: EXABLOX CORPORATION; STORAGECRAFT INTERMEDIATE HOLDINGS, INC.; STORAGECRAFT ACQUISITION CORPORATION; STORAGECRAFT TECHNOLOGY CORPORATION
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 041748/0849 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2015
From: BARRUS, FRANK; HUNT, TAD
To: EXABLOX CORPORATION
Reel/Frame 035648/0296 →
Continuity (2)
Provisional Application 61834097 · Jun 12, 2013
Related Publication 20140372490A1 · Dec 18, 2014