IP Library Granted Patent US 11,314,428
Granted Patent B1
US 11,314,428 · App. 17/182,499 · Granted Apr 26, 2022

Storage system and method for detecting and utilizing wasted space using a file system

Inventors: Narendhiran Chinnaanangur Ravimohan (Bangalore, IN); Kavya Bathula (Bangalore, IN)
Assignee: Western Digital Technologies, Inc.
G06F3/0631G06F3/0608G06F3/0644G06F3/0665G06F3/0673
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,314,428
App. No.
17/182,499
Granted
Apr 26, 2022
Kind
B1
Abstract

A file system in a storage system can store files received from a host in clusters of memory in the storage system. An end portion of a file may not use the entire cluster. As a result, the end clusters of the stored files can contain unused space. A system and method detects the unused space in such clusters and creates a virtual cluster from the unused space.

Claims (40)

1. A storage system comprising:

a memory; and

a controller configured to:

store plurality of files in the memory, wherein storage of the plurality of files results in unused space in a plurality of clusters of memory;

identify the unused space in the plurality of clusters;

in response to the unused space exceeding a threshold, determine whether space is available in a file allocation table for repurposing the unused space in the plurality of clusters; and

in response to determining that space is available in the file allocation table, create a virtual cluster from the unused space in the plurality of clusters.

2. The storage system of claim 1 , wherein the controller is further configured to identify the unused space from a start cluster, an end cluster, and a file size of each of the plurality of files.

3. The storage system of claim 2 , wherein the start clusters and file sizes are stored in directory entries for the plurality of files.

4. The storage system of claim 3 , wherein the directory entries are stored in a root directory, and wherein the controller is further configured to read a boot record to identify a location of the root directory.

5. The storage system of claim 2 , wherein the controller is further configured to identify the end clusters from file allocation structures.

6. The storage system of claim 1 , wherein the controller is further configured to add the identified unused space to a counter.

7. The storage system of claim 6 , wherein the controller is further configured to create the virtual cluster from the unused space in response to a value of the counter reaching a second threshold.

8. The storage system of claim 1 , wherein the controller is further configured to, in response to a command to delete a file of the plurality of files:

determine whether the virtual cluster related to the file contains valid data;

in response to determining that the virtual cluster does not contain valid data, mark the virtual cluster as unavailable; and

in response to determining that the virtual cluster contains valid data, mark an end cluster for the file as unavailable.

9. The storage system of claim 1 , wherein the controller is further configured to use the unused space to improve endurance and/or performance during a memory compaction process.

10. The storage system of claim 1 , wherein the controller is further configured to use the virtual cluster to improve memory yield during a firmware download process.

11. In a storage system comprising a memory, a method comprising:

storing a plurality of files in the memory, wherein storage of the plurality of files consumes some, but not all, memory locations allocated for the plurality of files;

identifying unused space in the memory locations;

in response to the unused space exceeding a threshold, determining whether space is available in a file allocation table for repurposing the unused space in the memory locations; and

in response to determining that space is available in the file allocation table, creating a virtual memory location from the unused space.

12. The method of claim 11 , further comprising identifying the unused space from a start cluster, an end cluster, and a file size of each of the plurality of files.

13. The method of claim 12 , further comprising reading a boot record to identify, a location of a root directory, wherein the root directory stores directory entries that store the start clusters and file sizes.

14. The method of claim 12 , further comprising identifying the end clusters from file allocation structures.

15. The method of claim 11 , further comprising:

adding the unused space to a counter; and

creating the virtual memory location in response to a value of the counter reaching a second threshold.

16. The method of claim 11 , further comprising using the virtual memory location to improve memory yield during a memory compaction process or during a firmware download process.

17. A storage system comprising:

a memory;

means for storing a plurality of files in the memory, wherein storage of the plurality of files results in unused space in a plurality of clusters of memory;

means for identifying the unused space in the plurality of clusters;

means for, in response to the unused space exceeding a threshold, determining whether space is available in a file allocation table for repurposing the unused space in the plurality of clusters; and

means for creating a virtual cluster from the unused space in response to determining that space is available in the file allocation table.

18. The storage system of claim 17 , wherein the unused space is identified from a start cluster, an end cluster, and a file size of each of the one or more files.

19. The storage system of claim 18 , wherein the end clusters are stored in file allocation structures, wherein the start clusters and file sizes are stored in directory entries for the one or more files, wherein the directory entries are stored in a root directory, and wherein a location of the root directory is identified in a boot record.

20. The storage system of claim 17 , further comprising means for adding the unused space to a counter, wherein the virtual cluster is created after a value of the counter reaches a second threshold.

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 056285 FRAME 0292 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0001 →
SECURITY INTEREST Recorded May 19, 2021
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 056285/0292 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2021
From: RAVIMOHAN, NARENDHIRAN CHINNAANANGUR; BATHULA, KAVYA
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 055371/0664 →