IP Library Granted Patent US 10,339,062
Granted Patent B2
US 10,339,062 · App. 15/581,963 · Granted Jul 2, 2019

Method and system for writing data to and read data from persistent 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 10,339,062
App. No.
15/581,963
Granted
Jul 2, 2019
Kind
B2
Abstract

In general, embodiments of the technology relate to a method and system for storing and reading data from persistent storage. More specifically, embodiments of the technology relate to a method and system for storing data in persistent storage, where the data written to the persistent storage is not immediately accessible in the persistent storage (i.e., during the inaccessibility period). In such instances, embodiments of the technology provide a method and system to enable the storage system to service read requests for the data using a primary cache entry table (PCET) and an overflow table.

Claims (93)

1. A method for managing data stored in a persistent storage, the method comprising:

receiving a write request comprising a logical address and a first datum;

storing a table entry corresponding to the logical address in a primary cache entry table;

updating a bitmap entry corresponding to the logical address;

storing the first datum in an external memory, wherein the external memory is operatively connected to the persistent storage;

transmitting a copy of the first datum to the persistent storage;

receiving a write request comprising a second logical address and second datum;

storing a second table entry corresponding to the second logical address in an overflow table;

updating a bitmap entry corresponding to the second logical address;

storing the second datum in the external memory; and

transmitting a copy of the second datum to the persistent storage.

2. The method of claim 1 , wherein storing the second table entry in the overflow table comprises:

hashing the second logical address to obtain a hash value;

determining, using the hash value, that a location in the primary cache entry table is full;

identifying a location in the overflow table; and

based on the determination, storing the second table entry in the location in the overflow table.

3. The method of claim 2 , wherein the table entry comprises a reference to the second table entry.

4. The method of claim 1 , wherein storing the table entry in the primary cache entry table comprises:

hashing the logical address to obtain a hash value;

determining, using the hash value, that a location in the primary cache entry table is empty; and

based on the determination, storing the table entry in the location.

5. The method of claim 1 , wherein the primary cache entry table is located on a field-programmable gate array (FPGA).

6. The method of claim 1 , further comprising:

receiving, from a client, a read request comprising the logical address;

determining that an entry in the bitmap corresponding to the logical address is set;

based on the determination, identifying the table entry from the primary cache entry table;

obtaining, from the external storage, a second copy of the first datum from a location associated with the table entry; and

providing the second copy of the first datum to the client.

7. The method of claim 1 , further comprising:

receiving, from a client, a read request comprising the logical address;

determining that an entry in the bitmap corresponding to the logical address is not set;

based on the determination, obtaining, from the persistent storage, a second copy of the first datum; and

providing the second copy of the first datum to the client.

8. The method of claim 1 , further comprising:

selecting the table entry;

determining that the table entry has been present in the primary cache entry table for a time period that exceeds an unavailability period associated with the persistent storage;

based on the determination, marking the table entry as invalid.

9. The method of claim 8 , further comprising:

after marking the table entry as invalid, replacing the table entry with a second table entry generated in response to a second write request.

10. The method of claim 1 , further comprising:

selecting the table entry;

determining that the table entry has been present in the primary cache entry table for a time period that exceeds an unavailability period associated with the persistent storage;

based on the determination:

identifying a second table entry, wherein the table comprises a reference to the second table entry, and

replacing the table entry with the second table entry.

11. A storage module, comprising:

a field programmable gate array (FPGA) comprising internal memory;

an external memory operatively connected to the FPGA; and

a storage unit operatively connected to the FPGA and comprising persistent storage,

wherein the FPGA is configured to:

receive a write request comprising a logical address and a first datum;

store a table entry corresponding to the logical address in a primary cache entry table in the internal memory;

update, in a bitmap stored in the external memory, a bitmap entry corresponding to the logical address;

store the first datum in the external memory;

transmit a copy of the first datum to the persistent storage;

receive a write request comprising a second logical address and second datum;

store a second table entry corresponding to the second logical address in an overflow table;

update a bitmap entry corresponding to the second logical address;

store the second datum in the external memory; and

transmit a copy of the second datum to the persistent storage.

12. The storage module of claim 11 , wherein storing the second table entry in the overflow table comprises:

hashing the second logical address to obtain a hash value;

determining, using the hash value, that a location in the primary cache entry table is full;

identifying a location in the overflow table; and

based on the determination, storing the second table entry in the location in the overflow table,

wherein the table entry comprises a reference to the second table entry.

13. The storage module of claim 11 , wherein storing the table entry in the primary cache entry table comprises:

hashing the logical address to obtain a hash value;

determining, using the hash value, that a location in the primary cache entry table is empty; and

based on the determination, storing the table entry in the location.

14. The storage module of claim 11 , wherein the FPGA is further configured to:

receive, from a client, a read request comprising the logical address;

determine that an entry in the bitmap corresponding to the logical address is set;

based on the determination, identify the table entry from the primary cache entry table;

obtain, from the external memory, a second copy of the first datum from a location associated with the table entry; and

provide the second copy of the first datum to the client.

15. The storage module of claim 11 , wherein the FPGA is further configured to:

receive, from a client, a read request comprising the logical address;

determine that an entry in the bitmap corresponding to the logical address is not set;

based on the determination, obtain, from the persistent storage, a second copy of the first datum; and

provide the second copy of the first datum to the client.

16. The storage module of claim 11 , wherein the FPGA is further configured to:

select the table entry;

determine that the table entry has been present in the primary cache entry table for a time period that exceeds an unavailability period associated with the persistent storage;

based on the determination, mark the table entry as invalid; and

after marking the table entry as invalid, replacing the table entry with a second table entry generated in response to a second write request.

17. The storage module of claim 11 , wherein the FPGA is further configured to:

select the table entry;

determine that the table entry has been present in the primary cache entry table for a time period that exceeds an unavailability period associated with the persistent storage;

based on the determination:

identify a second table entry, wherein the table comprises a reference to the second table entry, and

replace the table entry with the second table entry.

18. The storage module of claim 11 , wherein the persistent storage comprises phase change storage media.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (042769/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 059803/0802 →
RELEASE OF SECURITY INTEREST AT REEL 042768 FRAME 0585 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058297/0536 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 22, 2018
From: WILDE, TODD
To: EMC IP HOLDING COMPANY
Reel/Frame 045008/0427 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 2, 2018
From: RAJADNYA, SAMIR; RAMACHANDRAN, KARTHIK; NISHIMOTO, MICHAEL
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 044819/0173 →
PATENT SECURITY INTEREST (CREDIT) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 042768/0585 →
PATENT SECURITY INTEREST (NOTES) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 042769/0001 →