IP Library Granted Patent US 9,086,820
Granted Patent B2
US 9,086,820 · App. 13/709,092 · Granted Jul 21, 2015

System and methods for managing storage space allocation

Inventors: Israel Gold (Haifa, IL); Julian Satran (Omer, IL)
Assignee: INFINIDAT LTD.
G06F3/0683G06F3/064G06F3/0608G06F12/1036
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,086,820
App. No.
13/709,092
Granted
Jul 21, 2015
Kind
B2
Abstract

A request for obtaining a space allocation descriptor is received by a block control layer of a storage system. The space allocation descriptor is indicative of one or more logical blocks free for allocation within a range of logical addresses. The range of logical addresses is included within a logical address space related to an upper layer application which has issued the request. The space allocation descriptor is provided by using a data structure included in the block control layer and operative to map between the logical address space and allocated storage blocks within a physical storage space, managed by the block control layer.

Claims (37)

1. A method of operating a storage system comprising a block control layer operatively coupled to one or more physical storage devices constituting a physical storage space represented by storage blocks, the method comprising:

receiving, by the block control layer and from an upper layer application, a request for obtaining a space allocation descriptor indicative of one or more logical blocks free for allocation within a range of logical addresses, wherein said range of logical addresses is comprised within a logical address space associated with the upper layer application; and

scanning, by the block control layer, a data structure comprised in the block control layer and comprises mappings between logical addresses within said logical address space and allocated storage blocks within the physical storage space, wherein the scanning is for identifying mappings related to logical addresses within said range of logical addresses;

in accordance with identified mappings or non-found mappings, generating the space allocation descriptor as comprising data indicative of logical addresses that have no mapping to allocated storage blocks; and

providing, by the block control layer, the space allocation descriptor to the upper layer application.

2. The method of claim 1 further comprising:

receiving an allocation request for allocating one or more free storage blocks and for associating the free storage blocks with a second range of logical addresses, comprised within said logical address space;

allocating the free storage blocks; and

updating said data structure so as to comprise a mapping between the second range of logical addresses and the free storage blocks that have been allocated.

3. The method of claim 2 , wherein allocating the free storage blocks is provided in a case when the allocation request is related to writing data corresponding to the second range of logical addresses, to the physical storage space.

4. The method of claim 1 further comprising configuring said data structure to comprise a plurality of entries, each entry indicative of mapping between logical blocks comprised in said logical address space and respective allocated storage blocks, and wherein each entry corresponds to a range of consecutive logical block addresses.

5. The method of claim 4 further comprising associating at least one entry with an allocation value, wherein the at least one entry is characterized by an identical allocation status of all logical blocks corresponding to the at least one entry, and wherein said allocation value indicative of the identical allocation status shared by all the logical blocks of the at least one entry.

6. The method of claim 5 further comprising, responsive to a de-allocation request related to all logical blocks represented by the at least one entry, setting the allocation value associated with the entry to indicate a free status of the entire entry.

7. The method of claim 4 further comprising configuring said data structure to comprise one or more bitmaps each associated with a respective entry representing logical blocks having different allocation statuses, said bitmap indicative of the different allocation statuses of all logical blocks represented by the respective entry.

8. The method of claim 4 further comprising, responsive to a de-allocation request related to a part of logical blocks in a certain entry, associating said certain entry with a bitmap and using said bitmap to indicate an allocation status of each logical block represented by said certain entry.

9. The method of claim 4 wherein the logical blocks represented by each entry are organized in one or more allocation units of a predefined size, and wherein said allocation units are the smallest data portions handled by the block control layer and by said data structure.

10. The method of claim 1 wherein the data structure is handled in a cache memory comprised in the block control layer and wherein said scanning comprises scanning the data structure in the cache memory.

11. The method of claim 1 , wherein the upper layer application is selected from the group consisting of a filesystem and a database application.

12. A non-transitory computer readable storage medium, that stores program instructions that when executed by a processor of a storage system cause the processor to perform:

receiving, by a block control layer of the storage system and from an upper layer application, a request for obtaining a space allocation descriptor indicative of one or more logical blocks free for allocation within a range of logical addresses, wherein said range of logical addresses is comprised within a logical address space associated with the upper layer application; and

scanning, by the block control layer, a data structure comprised in the block control layer and comprises mappings between logical addresses within said logical address space and allocated storage blocks within a physical storage space of the storage system, wherein the scanning is for identifying mappings related to logical addresses within said range of logical addresses;

in accordance with identified mappings or non-found mappings, generating the space allocation descriptor as indicative of logical addresses that have no mapping to allocated storage blocks; and

providing, by the block control layer, the space allocation descriptor to the upper layer application.

13. A storage system comprising a block control layer operatively coupled to one or more physical storage devices constituting a physical storage space represented by storage blocks; wherein the block control layer is configured to:

receive, from an upper layer application, a request for obtaining a space allocation descriptor indicative of one or more logical blocks free for allocation within a range of logical addresses, wherein said range of logical addresses is comprised within a logical address space associated with the upper layer application;

scan a data structure comprised in the block control layer and comprises mappings between said logical address space and allocated storage blocks within the physical storage space, wherein the scan is for identifying mappings related to logical addresses within said range of logical addresses;

in accordance with identified mappings or non-found mappings, generate the space allocation descriptor as indicative of logical addresses that have no mapping to allocated storage blocks; and

provide the space allocation descriptor to the upper layer application.

14. The storage system of claim 13 , wherein the block control layer is configured to:

receive an allocation request for allocating one or more free storage blocks and for associating the free storage blocks with a second range of logical addresses, comprised within said logical address space;

allocate the free storage blocks; and

update said data structure so as to comprise a mapping between the second range of logical addresses and the free storage blocks that have been allocated.

15. The storage system of claim 14 , wherein the block control layer is configured to associate at least one entry with an allocation value, wherein the at least one entry is characterized by an identical allocation status of all logical blocks corresponding to the at least one entry and wherein said allocation value indicative of the identical allocation status shared by all the logical blocks of the at least one entry.

16. The storage system of claim 14 , wherein the block control layer is configured to configure said data structure to comprise one or more bitmaps each associated with a respective entry representing logical blocks having different allocation statuses, said bitmap indicative of the allocation statuses of all logical blocks represented by the respective entry.

17. The storage system of claim 13 , wherein the block control layer is configured to configure said data structure to comprise a plurality of entries, each entry indicative of mapping between logical blocks comprised in said logical address space and respective allocated storage blocks, and wherein each entry corresponds to a range of consecutive logical block addresses.

18. The storage system of claim 17 , wherein the block control layer is configured to receive, from the upper layer application, a de-allocation request related to all logical blocks represented by said at least one entry and to set the allocation value associated with the at least one entry to indicate a free status of the entire entry.

19. The storage system of claim 13 , wherein the block control layer is configured to receive, from the upper layer application, a de-allocation request related to a part of logical blocks in a certain entry, and associate said certain entry with a bitmap and using said bitmap to indicate the allocation status of each of the logical blocks in said certain entry.

Assignments (10)
SECURITY INTEREST Recorded Jan 30, 2025
From: INFINIDAT LTD
To: KREOS CAPITAL VII AGGREGATOR SCSP,
Reel/Frame 070056/0458 →
RELEASE OF SECURITY INTEREST IN IP RECORDED AT R/F 55653/0854 Recorded Jan 18, 2024
From: SILICON VALLEY BANK
To: INFINIDAT LTD.
Reel/Frame 066344/0064 →
SECURITY INTEREST Recorded Jan 11, 2024
From: INFINIDAT LTD
To: KREOS CAPITAL VI (EXPERT FUND) L.P.; KREOS CAPITAL 2020 OPPORTUNITY L.P.
Reel/Frame 066270/0359 →
SECURITY INTEREST Recorded Jan 10, 2024
From: INFINIDAT LTD
To: HSBC BANK PLC
Reel/Frame 066268/0584 →
RELEASE OF SECURITY INTEREST Recorded Mar 30, 2021
From: BANK LEUMI LE-ISRAEL B.M.
To: INFINIDAT LTD.
Reel/Frame 055776/0526 →
RELEASE OF SECURITY INTEREST Recorded Mar 30, 2021
From: BANK LEUMI LE-ISRAEL B.M.
To: INFINIDAT LTD.
Reel/Frame 055776/0597 →
SECURITY INTEREST Recorded Mar 18, 2021
From: INFINIDAT LTD.
To: SILICON VALLEY BANK
Reel/Frame 055653/0854 →
SECURITY INTEREST Recorded Apr 12, 2018
From: INFINIDAT LTD.
To: BANK LEUMI LE-ISRAEL B.M.
Reel/Frame 045914/0276 →
LIEN Recorded Jul 18, 2016
From: INFINIDAT LTD.
To: BANK LEUMI LE-ISRAEL B.M.
Reel/Frame 039361/0161 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2013
From: GOLD, ISRAEL; SATRAN, JULIAN
To: INFINIDAT LTD.
Reel/Frame 030047/0166 →
Continuity (1)
Related Publication 20140164730A1 · Jun 12, 2014