IP Library Granted Patent US 11,640,244
Granted Patent B2
US 11,640,244 · App. 17/401,436 · Granted May 2, 2023

Intelligent block deallocation verification

Inventors: Eric D. Seppanen (Mountain View, CA); Neil Buda Vachharajani (Menlo Park, CA); Nidhi Pankaj Doshi (Menlo Park, CA)
Assignee: Pure Storage, Inc.
G06F3/061G06F3/064G06F3/0688G06F12/0246G06F2212/1016G06F2212/7202G06F2212/7207
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 11,640,244
App. No.
17/401,436
Granted
May 2, 2023
Kind
B2
Abstract

A first data block on a storage device including a data structure of deallocated data blocks on the storage device and a corresponding program erase count value for each of the deallocated data blocks is identified. A determination as to whether a second data block from the data structure of deallocated data blocks remains deallocated after being added to the data structure of deallocated data blocks based on the program erase count value is made. The data is stored at the second data block upon determining that the second data block remains deallocated after being added to the data structure of deallocated data blocks.

Claims (37)

1. A system comprising:

a plurality of storage devices; and

a storage controller coupled to the plurality of storage devices, the storage controller comprising a processing device, the processing device to:

identify a first data block on a storage device of the plurality of storage devices comprising a data structure of deallocated data blocks on the storage device and a corresponding program erase count value for each of the deallocated data blocks;

determine whether a second data block from the data structure of deallocated data blocks remains deallocated after being added to the data structure of deallocated data blocks based on the program erase count value; and

store the data at the second data block upon determining that the second data block remains deallocated after being added to the data structure of deallocated data blocks.

2. The system of claim 1 , wherein the first data block is identified upon receiving a request to store data to the storage device.

3. The system of claim 1 , wherein the processing device further to:

access a dynamic table stored in memory on the storage device, the dynamic table comprising block metadata for each data block on the storage device.

4. The system of claim 3 , wherein the block metadata comprises an indication of a block type of each data block on the storage device and the corresponding program erase count value for each data block on the storage device.

5. The system of claim 4 , wherein the first data block is identified from the dynamic table based on the indication of the block type of the first data block.

6. The system of claim 4 , wherein the processing device further to:

compare a first program erase count value associated with the second data block from the dynamic table to a second program erase count value associated with the second data block from the data structure of deallocated data blocks.

7. The system of claim 6 , wherein the processing device is to store the data at the second data block in response to the first program erase count value matching the second program erase count value.

8. A method comprising:

identifying a first data block on a storage device comprising a data structure of deallocated data blocks on the storage device and a corresponding program erase count value for each of the deallocated data blocks;

determining, by a processing device, whether a second data block from the data structure of deallocated data blocks remains deallocated after being added to the data structure of deallocated data blocks based on the program erase count value; and

storing the data at the second data block upon determining that the second data block remains deallocated after being added to the data structure of deallocated data blocks.

9. The method of claim 8 , wherein the first data block is identified upon receiving a request to store data to the storage device.

10. The method of claim 8 , further comprising:

accessing a dynamic table stored in memory on the storage device, the dynamic table comprising block metadata for each data block on the storage device.

11. The method of claim 10 , wherein the block metadata comprises an indication of a block type of each data block on the storage device and the corresponding program erase count value for each data block on the storage device.

12. The method of claim 11 , wherein the first data block is identified from the dynamic table based on the indication of the block type of the first data block.

13. The method of claim 11 , wherein further comprising:

comparing a first program erase count value associated with the second data block from the dynamic table to a second program erase count value associated with the second data block from the data structure of deallocated data blocks.

14. The method of claim 13 , wherein the data is stored at the second data block in response to the first program erase count value matching the second program erase count value.

15. A non-transitory computer readable storage medium comprising instructions which, when executed by a processing device, cause the processing device to:

identify a first data block on a storage device comprising a data structure of deallocated data blocks on the storage device and a corresponding program erase count value for each of the deallocated data blocks;

determine, by the processing device, whether a second data block from the data structure of deallocated data blocks remains deallocated after being added to the data structure of deallocated data blocks based on the program erase count value; and

store the data at the second data block upon determining that the second data block remains deallocated after being added to the data structure of deallocated data blocks.

16. The non-transitory computer readable storage medium of claim 15 , wherein the first data block is identified upon receiving a request to store data to the storage device.

17. The non-transitory computer readable storage medium of claim 15 , wherein the processing device further to:

access a dynamic table stored in memory on the storage device, the dynamic table comprising block metadata for each data block on the storage device.

18. The non-transitory computer readable storage medium of claim 17 , wherein the block metadata comprises an indication of a block type of each data block on the storage device and the corresponding program erase count value for each data block on the storage device.

19. The non-transitory computer readable storage medium of claim 18 , wherein the first data block is identified from the dynamic table based on the indication of the block type of the first data block.

20. The non-transitory computer readable storage medium of claim 18 , wherein the processing device further to:

compare a first program erase count value associated with the second data block from the dynamic table to a second program erase count value associated with the second data block from the data structure of deallocated data blocks.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 13, 2021
From: SEPPANEN, ERIC D.; VACHHARAJANI, NEIL BUDA; DOSHI, NIDHI PANKAJ
To: PURE STORAGE, INC.
Reel/Frame 057168/0308 →
Continuity (3)
Continuation 16655792 · Oct 17, 2019
Continuation 15337151 · Oct 28, 2016
Related Publication 20210373762A1 · Dec 2, 2021