IP Library Granted Patent US 9,436,386
Granted Patent B2
US 9,436,386 · App. 14/318,414 · Granted Sep 6, 2016

Shared reference counters among a plurality of virtual storage devices

Inventor: Philip Andrew White (San Francisco, CA)
Assignee: Scale Computing, Inc.
G06F3/06G06F9/455G06F9/46G06F3/064
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,436,386
App. No.
14/318,414
Granted
Sep 6, 2016
Kind
B2
Abstract

A system, method, and computer program product are provided for implementing shared reference counters among a plurality of virtual storage devices. The method includes the steps of allocating a first portion of a real storage device to store data, wherein the first portion is divided into a plurality of blocks of memory and allocating a second portion of the real storage device to store a plurality of reference counters that correspond to the plurality of blocks of memory. The reference counters may be updated by two or more virtual storage devices hosted in one or more nodes to manage the allocation of the blocks of memory in the real storage device.

Claims (54)

1. A method comprising:

allocating a first portion of a real storage device (RSD) to store data, wherein the first portion is divided into a plurality of blocks of memory;

allocating a second portion of the RSD to store a plurality of reference counters that correspond to the plurality of blocks of memory;

mapping a block of memory in the RSD to a corresponding block of memory in a virtual storage device (VSD); and

incrementing a value stored in a reference counter associated with the block of memory in the RSD.

2. The method of claim 1 , wherein the RSD comprises a device selected from the group consisting of a hard disk drive, a solid state drive, a tape drive, and an optical disc drive.

3. The method of claim 1 , wherein the VSD comprises a logical device represented by a data structure that includes a mapping table that associates blocks of memory in a first address space with the blocks of memory in the RSD.

4. The method of claim 3 , further comprising:

mapping the block of memory in the RSD to a corresponding block of memory in a second VSD; and

incrementing the value stored in the reference counter.

5. The method of claim 4 , further comprising:

updating the mapping table for the VSD to remove the reference between the block of memory in the RSD and the corresponding block of memory in the VSD; and

decrementing the value stored in the reference counter.

6. The method of claim 1 , further comprising:

receiving a request to allocate space in the RSD to store data;

identifying at least one reference counter that stores a value equal to zero; and

allocating a block of memory corresponding to the at least one reference counter to store the data.

7. The method of claim 1 , wherein a value stored in a particular reference counter indicates a number of references associated with a block of memory in the RSD corresponding to the particular reference counter.

8. The method of claim 7 , wherein the number of references corresponds to a number of distinct blocks of memory in one or more VSDs associated with the block of memory in the RSD corresponding to the particular reference counter.

9. The method of claim 1 , further comprising:

copying a virtual storage device (VSD) object from a first node to a second node; and

incrementing each reference counter in the RSD associated with a block of memory in the RSD that is referenced by a mapping table in the VSD object.

10. The method of claim 1 , further comprising:

deleting a virtual storage device (VSD) object; and

decrementing each reference counter in the RSD associated with a block of memory in the RSD that is referenced by a mapping table in the VSD object.

11. A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, cause the processor to perform steps comprising:

allocating a first portion of a real storage device (RSD) to store data, wherein the first portion is divided into a plurality of blocks of memory;

allocating a second portion of the RSD to store a plurality of reference counters that correspond to the plurality of blocks of memory;

mapping a block of memory in the RSD to a corresponding block of memory in a virtual storage device (VSD); and

incrementing a value stored in a reference counter associated with the block of memory in the RSD.

12. The computer-readable storage medium of claim 11 , the steps further comprising:

mapping the block of memory in the RSD to a corresponding block of memory in a second VSD; and

incrementing the value stored in the reference counter.

13. The computer-readable storage medium of claim 12 , the steps further comprising:

updating the mapping table for the VSD to remove the reference between the block of memory in the RSD and the corresponding block of memory in the VSD; and

decrementing the value stored in the reference counter.

14. The computer-readable storage medium of claim 11 , the steps further comprising:

receiving a request to allocate space in the RSD to store data;

identifying at least one reference counter that stores a value equal to zero; and

allocating a block of memory corresponding to the at least one reference counter to store the data.

15. A system comprising:

a real storage device (RSD); and

a processor coupled to the RSD and configured to:

allocate a first portion of the RSD to store data, wherein the first portion is divided into a plurality of blocks of memory;

allocate a second portion of the RSD to store a plurality of reference counters that correspond to the plurality of blocks of memory;

map a block of memory in the RSD to a corresponding block of memory in a virtual storage device (VSD); and

increment a value stored in a reference counter associated with the block of memory in the RSD.

16. The system of claim 15 , wherein the RSD and the processor are included in a first node, the system further comprising a second node including a second RSD and a second processor configured to:

allocate a first portion of the second RSD to store data, wherein the first portion of the second RSD is divided into a plurality of blocks of memory; and

allocate a second portion of the second RSD to store a plurality of reference counters that correspond to the plurality of blocks of memory of the second RSD.

17. The system of claim 16 , the processor further configured to:

copy a virtual storage device (VSD) object from the first node to the second node;

incrementing each reference counter in the first RSD associated with a block of memory in the first RSD that is referenced by a mapping table in the VSD object; and

incrementing each reference counter in the second RSD associated with a block of memory in the second RSD that is referenced by the mapping table in the VSD object.

Assignments (18)
SECURITY INTEREST Recorded Jan 29, 2026
From: SCALE COMPUTING, LLC
To: TORONTO DOMINION (TEXAS) LLC
Reel/Frame 073633/0710 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2025
From: SCALE COMPUTING, LLC
To: SCALE COMPUTING, INC.
Reel/Frame 072864/0595 →
CHANGE OF NAME Recorded Aug 28, 2025
From: ACUMERA SCALE, LLC
To: SCALE COMPUTING, LLC
Reel/Frame 072699/0326 →
MERGER Recorded Aug 15, 2025
From: SCALE COMPUTING, INC.
To: ACUMERA SCALE, LLC
Reel/Frame 072034/0883 →
RELEASE OF SECURITY INTEREST Recorded Jul 31, 2025
From: BANC OF CALIFORNIA (FORMERLY KNOWN AS PACIFIC WESTERN BANK)
To: SCALE COMPUTING, INC.
Reel/Frame 071898/0667 →
RELEASE OF SECURITY INTEREST Recorded Jul 31, 2025
From: MS PRIVATE CREDIT ADMINISTRATIVE SERVICES LLC AS AGENT
To: SCALE COMPUTING, INC.
Reel/Frame 071901/0365 →
SECURITY INTEREST Recorded Oct 13, 2023
From: SCALE COMPUTING, INC.
To: PACIFIC WESTERN BANK
Reel/Frame 065213/0109 →
RELEASE OF SECURITY INTEREST Recorded Feb 6, 2023
From: AVENUE VENTURE OPPORTUNITIES FUND, L.P.
To: SCALE COMPUTING, INC.
Reel/Frame 062603/0565 →
SECURITY INTEREST Recorded Feb 3, 2023
From: SCALE COMPUTING, INC.
To: NORTH HAVEN EXPANSION CREDIT II LP
Reel/Frame 062586/0059 →
SECURITY INTEREST Recorded Dec 11, 2020
From: SCALE COMPUTING, INC.
To: AVENUE VENTURE OPPORTUNITIES FUND, L.P.
Reel/Frame 054619/0825 →
RELEASE OF SECURITY INTEREST Recorded Dec 11, 2020
From: RUNWAY GROWTH CREDIT FUND INC.
To: SCALE COMPUTING, INC.
Reel/Frame 054619/0802 →
RELEASE OF SECURITY INTEREST Recorded Dec 10, 2020
From: RUNWAY GROWTH CREDIT FUND INC., AS AGENT
To: SCALE COMPUTING, INC.
Reel/Frame 054611/0589 →
SECURITY INTEREST Recorded Mar 29, 2019
From: SCALE COMPUTING, INC.
To: RUNWAY GROWTH CREDIT FUND INC.
Reel/Frame 048745/0653 →
RELEASE OF SECURITY INTEREST Recorded Mar 29, 2019
From: BET ASSOCIATES III, LLC
To: SCALE COMPUTING, INC.
Reel/Frame 048747/0302 →
RELEASE OF SECURITY INTEREST Recorded Sep 13, 2017
From: PACIFIC WESTERN BANK
To: SCALE COMPUTING, INC.
Reel/Frame 043572/0750 →
SECURITY AGREEMENT Recorded Sep 12, 2017
From: SCALE COMPUTING, INC.
To: BET ASSOCIATES III, LLC
Reel/Frame 043820/0802 →
SECURITY INTEREST Recorded Jan 18, 2017
From: SCALE COMPUTING, INC.
To: PACIFIC WESTERN BANK
Reel/Frame 041003/0765 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 3, 2014
From: WHITE, PHILIP ANDREW
To: SCALE COMPUTING, INC.
Reel/Frame 033242/0694 →
Continuity (1)
Related Publication 20150378931A1 · Dec 31, 2015