IP Library Granted Patent US 10,481,798
Granted Patent B2
US 10,481,798 · App. 15/337,151 · Granted Nov 19, 2019

Efficient flash management for multiple controllers

Inventors: Nidhi Pankaj Doshi (Mountain View, CA); Eric D. Seppanen (Mountain View, CA); Neil Buda Vachharajani (San Francisco, 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 10,481,798
App. No.
15/337,151
Granted
Nov 19, 2019
Kind
B2
Abstract

A storage controller coupled to a storage array comprising one or more storage devices receive a request to write data to one of the storage devices. The storage controller determines a first data block on the storage device comprising a list of deallocated data blocks on the storage device, the list comprising a block number of each deallocated data block and an access operation count value at which each deallocated data block was deallocated. The storage controller identifies a second data block from the list of deallocated data blocks on the storage device based on a corresponding access operation count value from the list and writes the data to the second data block.

Claims (24)

1. A non-transitory computer readable storage medium storing instructions, which when executed, cause a processing device to:

access a data structure stored in memory on a storage device, the data structure comprising block metadata for each data block on the storage device, wherein the block metadata comprises an indication of a block type of each data block on the storage device and an access operation count value for each data block on the storage device;

determine, from the data structure, a first data block on the storage device comprising a list of deallocated data blocks on the storage device, the list comprising a block number of each deallocated data block and an access operation count value at which each deallocated data block was deallocated; and

compare, by the processing device, a first access operation count value associated with each of the deallocated data blocks from the data structure to a second access operation count value associated with each of the deallocated data blocks from the list of deallocated data blocks;

determine that a second data block on the list was previously labeled as comprising old data;

label the second data block on the list as comprising new data responsive to the first access operation count value associated with the second data block from the data structure not matching the second access operation count value associated with the second data block from the list of deallocated data blocks; and

label the second data block on the list as comprising old data responsive to the first access operation count value associated with the second data block from the data structure matching the second access operation count value associated with the second data block from the list of deallocated data blocks.

2. The non-transitory computer readable storage medium of claim 1 , wherein to determine the first data block on the storage device, the processing device to identify the first data block from the data structure based on the indication of the block type of the first data block.

3. A non-transitory computer readable storage medium storing instructions, which when executed, cause a processing device to:

access a data structure stored in memory on a storage device, the data structure comprising block metadata for each data block on the storage device, wherein the block metadata comprises an indication of a block type of each data block on the storage device and an access operation count value for each data block on the storage device;

determine, from the data structure, a first data block on the storage device comprising a list of deallocated data blocks on the storage device, the list comprising a block number of each deallocated data block and an access operation count value at which each deallocated data block was deallocated; and

compare, by the processing device, a first access operation count value associated with each of the deallocated data blocks from the data structure to a second access operation count value associated with each of the deallocated data blocks from the list of deallocated data blocks

determine that a second data block on the list was previously labeled as comprising new data; and

maintain a label of the second data block on the list as comprising new data responsive to the first access operation count value associated with the second data block from the data structure matching the second access operation count value associated with the second data block from the list of deallocated data blocks.

4. The non-transitory computer readable storage medium of claim 3 , wherein the storage device comprises a solid-state drive (SSD).

5. A system comprising:

a storage array comprising a solid state drive; and

a storage controller coupled to the storage array, the storage controller comprising a processing device, the processing device to:

access a data structure stored in memory on a storage device, the data structure comprising block metadata for each data block on the storage device, wherein the block metadata comprises an indication of a block type of each data block on the storage device and an access operation count value for each data block on the storage device;

determine, from the data structure, a first data block on the storage device comprising a list of deallocated data blocks on the storage device, the list comprising a block number of each deallocated data block and an access operation count value at which each deallocated data block was deallocated; and

compare, by the processing device, a first access operation count value associated with each of the deallocated data blocks from the data structure to a second access operation count value associated with each of the deallocated data blocks from the list of deallocated data blocks;

determine that a second data block on the list was previously labeled as comprising new data; and

maintain a label of the second data block on the list as comprising new data responsive to the first access operation count value associated with the second data block from the data structure matching the second access operation count value associated with the second data block from the list of deallocated data blocks.

6. The system of claim 5 , wherein the storage device comprises a solid-state drive (SSD).

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2016
From: DOSHI, NIDHI PANKAJ; SEPPANEN, ERIC D.; VACHHARAJANI, NEIL BUDA
To: PURE STORAGE, INC.
Reel/Frame 040158/0922 →
Continuity (1)
Related Publication 20180121088A1 · May 3, 2018