IP Library Granted Patent US 10,901,620
Granted Patent B2
US 10,901,620 · App. 16/365,562 · Granted Jan 26, 2021

Storage system and method for thin provisioning

Inventors: Amir Shaharabany (Kochav Yair, IL); Michael Zaidman (Modiin, IL); Rotem Sela (Haifa, IL); Hadas Oshinsky (Kfar Saba, IL)
Assignee: Western Digital Technologies, Inc.
G06F3/0608G06F3/0605G06F3/0631G06F3/0685G06F3/0688G06F12/0246G06F12/08G06F2212/7201
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,901,620
App. No.
16/365,562
Granted
Jan 26, 2021
Kind
B2
Abstract

A storage system and method for thin provisioning are provided. In one embodiment, a storage system is provided comprising a memory and a controller. The controller is configured to provide a logical exported capacity of the memory to a host, wherein the logical exported capacity is greater than an actual storage capacity of the memory; receive a command from the host to write data to a logical address; determine whether there is available actual storage capacity in the memory to write the data; and write the data to a physical address in memory that corresponds to the logical address only if it is determined that there is available actual storage capacity in the memory to write the data. Other embodiments are possible, and each of the embodiments can be used alone or together in combination.

Claims (87)

1. A storage system comprising:

a memory; and

a controller coupled to the memory, wherein the controller is configured to:

receive a command from a host to write data;

determine, based on a logical block address (LBA) associated with the command and a size of the data, whether a range of logical block addresses for the command exceeds a logical exported capacity of the storage system;

when the range of logical block addresses for the command does not exceed the logical exported capacity, determine whether a storage valid count associated with the storage system is impacted by the command;

when the storage valid count is not impacted, map the LBA associated with the command to a physical block address of the storage system;

when the range of logical block addresses for the command does not exceed the logical exported capacity, cause the data to be written to the physical block address of the storage system; and

when the range of logical block addresses for the command exceeds the logical exported capacity, prevent the data from being written to the physical block address of the storage system.

2. The storage system of claim 1 , wherein the controller is configured to:

when the storage valid count is impacted, update, based on the size of the data, the storage valid count;

determine, based on the updated storage valid count, whether an actual storage capacity is sufficient to write the data; and

when the actual storage capacity is sufficient to write the data, map the LBA associated with the command to the physical block address.

3. The storage system of claim 2 , wherein the controller is configured to:

when the actual storage capacity is insufficient to write the data, reject the command.

4. The storage system of claim 1 , wherein the controller is configured to:

determine whether the LBA associated with the command is unavailable; and

when the LBA associated with the command is unavailable, determine that the storage valid count is not impacted.

5. The storage system of claim 4 , wherein the controller is configured to:

determine that the storage valid count is impacted, when the LBA associated with the command is available.

6. The storage system of claim 1 , wherein the logical exported capacity is greater than an actual storage capacity of the storage system.

7. The storage system of claim 1 , wherein the controller is configured to:

receive a second command from the host to discard data;

determine whether an LBA associated with the received second command is unavailable;

after receiving the second command, decrease the storage valid count by a size of the data to discard, when the LBA associated with the received second command is unavailable; and

after receiving the second command, refrain from changing the storage valid count by the size of the data to discard, when the LBA associated with the received second command is available.

8. The storage system of claim 7 , wherein the controller is configured to:

determine whether the LBA associated with the second command exceeds the logical exported capacity of the storage system;

when the LBA associated with the second command does not exceed the logical exported capacity:

decrease the storage valid count by the size of the data to discard, when the LBA associated with the second command is unavailable;

refrain from changing the storage valid count by the size of the data to discard, when the LBA associated with the second command is available; and

execute the second command; and

when the LBA associated with the second command exceeds the logical exported capacity:

refrain from decreasing the storage valid count; and

refrain from executing the second command.

9. The storage system of claim 1 ,

wherein the logical exported capacity is greater than an actual storage capacity of the storage system, and

wherein the logical exported capacity comprises the actual storage capacity of the storage system and a capacity for overprovisioning.

10. A computer-implemented method, comprising:

receiving a command from a host to write data to a storage system;

determining, based on a logical block address (LBA) associated with the command and a size of the data, whether a range of logical block addresses for the command exceeds a logical exported capacity of the storage system;

in response to determining that the range of logical block addresses for the command does not exceed the logical exported capacity, determining whether a storage valid count associated with the storage system is impacted by the command;

in response to determining that the storage valid count is not impacted, mapping the LBA associated with the command to a physical block address of the storage system;

when the range of logical block addresses for the command does not exceed the logical exported capacity, causing the data to be written to the physical block address of the storage system; and

when the range of logical block addresses for the command exceeds the logical exported capacity, preventing the data from being written to the physical block address of the storage system.

11. The computer-implemented method of claim 10 , comprising:

in response to determining that the storage valid count is impacted, updating, based on the size of the data, the storage valid count; and

determining, based on the updated storage valid count, whether an actual storage capacity is sufficient to write the data,

wherein the mapping comprises, in response to determining that the actual storage capacity is sufficient to write the data, mapping the LBA associated with the command to the physical block address.

12. The computer-implemented method of claim 11 , comprising:

in response to determining that the actual storage capacity is insufficient to write the data, rejecting the command.

13. The computer-implemented method of claim 10 , comprising:

determining whether the LBA associated with the command is unavailable; and

in response to determining that the LBA associated with the command is unavailable, determining that the storage valid count is not impacted.

14. The computer-implemented method of claim 13 , comprising:

in response to determining that the LBA associated with the command is available, determining that the storage valid count is impacted.

15. The computer-implemented method of claim 10 ,

wherein the logical exported capacity is greater than an actual storage capacity of the storage system.

16. The computer-implemented method of claim 10 , comprising:

receiving a second command from the host to discard data;

determining whether an LBA associated with the received second command is unavailable;

after receiving the second command, decreasing the storage valid count by a size of the data to discard, when the LBA associated with the received second command is unavailable; and

after receiving the second command, refraining from updating the storage valid count by the size of the data to discard, when the LBA associated with the received second command is available.

17. The computer-implemented method of claim 16 , comprising:

determining whether the LBA associated with the second command exceeds the logical exported capacity of the storage system;

when the LBA associated with the second command does not exceed the logical exported capacity:

executing the second command; and

when the LBA associated with the second command exceeds the logical exported capacity:

refraining from decreasing the storage valid count; and

refraining from executing the second command,

wherein when the LBA associated with the second command does not exceed the logical exported capacity, the method comprises:

the decreasing the storage valid count; and

the refraining from updating the storage valid count.

18. A storage system comprising:

a memory;

means for receiving a command from a host to write data;

means for determining, based on a logical block address (LBA) associated with the command and a size of the data, whether a range of logical block addresses for the command exceeds a logical exported capacity of the storage system;

when the range of logical block addresses for the command does not exceed the logical exported capacity, means for determining whether a storage valid count associated with the storage system is impacted by the command;

in response to determining that the storage valid count is not impacted, means for mapping the LBA associated with the command to a physical block address of the storage system;

when the range of logical block addresses for the command does not exceed the logical exported capacity, means for causing the data to be written to the physical block address of the storage system; and

when the range of logical block addresses for the command exceeds the logical exported capacity, means for preventing the data from being written to the physical block address of the storage system.

19. The storage system of claim 18 , comprising:

in response to determining that the storage valid count is impacted, means for updating, based on the size of the data, the storage valid count; and

means for determining, based on the updated storage valid count, whether an actual storage capacity is sufficient to write the data,

wherein the means for mapping comprises, in response to determining that the actual storage capacity is sufficient to write the data, means for mapping the LBA associated with the command to the physical block address.

20. The storage system of claim 19 , comprising:

in response to determining that the actual storage capacity is insufficient to write the data, means for rejecting the command.

Assignments (10)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 28, 2019
From: SHAHARABANY, AMIR; ZAIDMAN, MICHAEL; SELA, ROTEM; OSHINSKY, HADAS
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 048729/0571 →