IP Library Granted Patent US 11,036,596
Granted Patent B1
US 11,036,596 · App. 16/254,326 · Granted Jun 15, 2021

System for delaying acknowledgements on open NAND locations until durability has been confirmed

Inventors: Gordon James Coleman (Los Altos, CA); Andrew R. Bernat (Mountain View, CA); Peter E. Kirkpatrick (Mountain View, CA)
Assignee: Pure Storage, Inc.
G06F11/1471G06F11/0727G06F11/0751G06F11/1441G06F13/1673H04L67/1097G06F2212/72
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,036,596
App. No.
16/254,326
Granted
Jun 15, 2021
Kind
B1
Abstract

A system includes a plurality of solid-state storage devices and a storage controller coupled to the plurality of solid-state storage devices. The storage controller includes a processing device, the processing device to receive a write request from a host computing device. The write request includes data to be stored at one or more of the plurality of solid-state storage devices. The processing device is to send an acknowledgement to the host computing device in response to receipt of the write request, store the data at the one or more of the plurality of solid-state storage devices, determine whether the data stored at the one or more of the plurality of solid-state storage devices is readable, and in response to determining that the data is readable, notify, by the processing device, the host computing device that the stored data is readable from the one or more of the plurality of solid-state storage devices.

Claims (52)

1. A system comprising:

a plurality of solid-state storage devices; and

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

receive a write request from a host computing device, the write request comprising data to be stored at one or more of the plurality of solid-state storage devices;

send an acknowledgement to the host computing device in response to receipt of the write request;

store the data at the one or more of the plurality of solid-state storage devices;

determine whether the data stored at the one or more of the plurality of solid-state storage devices is readable by determining whether a number of subsequent programming operations have been performed since the data was stored at the one or more of the plurality of solid-state storage devices; and

notify, by the processing device, the host computing device that the stored data is readable from the one or more of the plurality of solid-state storage devices upon determining that the data is readable.

2. The system of claim 1 , wherein the number of subsequent programming operations is based on a type of programming operation utilized to store the data at the one or more of the plurality of solid-state storage devices.

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

notify the host computing device that the stored data is readable by successfully reading back at least a portion of other data stored at the one or more of the plurality of solid-state storage devices, wherein the other data is stored at the one or more of the plurality of solid-state storage devices after the stored data.

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

maintain an event log to identify locations in the one or more of the plurality of solid-state storage devices where the stored data is readable in the event of a power loss to the system.

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

after the acknowledgment to the host computing device has been sent, buffer the data in a data buffer, wherein the buffered data is to be sent to the one or more of the plurality of solid-state storage devices for storage.

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

assign a sequence number to the previously stored data that is readable upon receiving an acknowledgment from the one or more of the plurality of solid-state storage devices that the previously stored data is readable.

7. The system of claim 5 , wherein the processing device is further to:

receive an acknowledgement from the one or more of the plurality of solid-state storage devices that the sent buffered data has been received.

8. A method comprising:

receiving a write request from a host computing device, the write request comprising data to be stored at one or more of a plurality of solid-state storage devices;

sending an acknowledgement to the host computing device in response to receipt of the write request;

storing the data at the one or more of the plurality of solid-state storage devices;

determining whether the data stored at the one or more of the plurality of solid-state storage devices is readable by determining whether a number of subsequent programming operations have been performed since the data was stored at the one or more of the plurality of solid-state storage devices; and

notifying the host computing device that the stored data is readable from the one or more of the plurality of solid-state storage devices upon determining that the data is readable.

9. The method of claim 8 , wherein the number of subsequent programming operations is based on a type of programming operation utilized to store the data at the one or more of the plurality of solid-state storage devices.

10. The method of claim 8 , further comprising:

notifying the host computing device that the stored data is readable by successfully reading back at least a portion of other data stored at the one or more of the plurality of solid-state storage devices, wherein the other data is stored at the one or more of the plurality of solid-state storage devices after the stored data.

11. The method of claim 8 , further comprising:

maintaining an event log to identify locations in the one or more of the plurality of solid-state storage devices where the stored data is readable in the event of a power loss to a system.

12. The method of claim 8 , further comprising:

after the acknowledgment to the host computing device has been sent, buffering the data in a data buffer, wherein the buffered data is sent to the one or more of the plurality of solid-state storage devices for storage.

13. The method of claim 12 , further comprising:

assigning a sequence number to the previously stored data that is readable upon receiving an acknowledgment from the one or more of the plurality of solid-state storage devices that the previously stored data is readable.

14. The method of claim 12 , further comprising:

receiving an acknowledgement from the one or more of the plurality of solid-state storage devices that the sent buffered data has been received.

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

receive a write request from a host computing device, the write request comprising data to be stored at one or more of a plurality of solid-state storage devices;

send an acknowledgement to the host computing device in response to receipt of the write request;

store the data at the one or more of the plurality of solid-state storage devices;

determine whether the data stored at the one or more of the plurality of solid-state storage devices is readable by determining whether a number of subsequent programming operations have been performed since the data was stored at the one or more of the plurality of solid-state storage devices; and

notify, by the processing device, the host computing device that the stored data is readable from the one or more of the plurality of solid-state storage devices upon determining that the data is readable.

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

notify the host computing device that the stored data is readable by successfully reading back at least a portion of other data stored at the one or more of the plurality of solid-state storage devices, wherein the other data is stored at the one or more of the plurality of solid-state storage devices after the stored data.

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

maintain an event log to identify locations in the one or more of the plurality of solid-state storage devices where the stored data is readable in the event of a power loss to a system.

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

after the acknowledgment to the host computing device has been sent, buffer the data in a data buffer, wherein the buffered data is to be sent to the one or more of the plurality of solid-state storage devices for storage.

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

assign a sequence number to the previously stored data that is readable upon receiving an acknowledgment from the one or more of the plurality of solid-state storage devices that the previously stored data is readable.

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

receive an acknowledgement from the one or more of the plurality of solid-state storage devices that the sent buffered data has been received.

Assignments (3)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 17, 2019
From: COLEMAN, GORDON JAMES; BERNAT, ANDREW R.; KIRKPATRICK, PETER E.
To: PURE STORAGE, INC.
Reel/Frame 049216/0464 →
Continuity (1)
Provisional Application 62631933 · Feb 18, 2018
Cited By (3)
US 12,367,320 US 12,499,043 US 12,511,253