IP Library Granted Patent US 9,348,531
Granted Patent B1
US 9,348,531 · App. 14/053,532 · Granted May 24, 2016

Negative pool management for deduplication

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 9,348,531
App. No.
14/053,532
Granted
May 24, 2016
Kind
B1
Abstract

A method may comprise caching a portion of a pool of unique data blocks in a memory, the pool of unique data blocks comprising a plurality of unique blocks, at least some of the plurality of blocks in the pool of unique data blocks being referred to in at least one reference file. A list of blocks may be updated with any block in the cached portion of the pool of unique data blocks that is not referred to by at least one reference in the reference file(s). Different portions of the pool of unique data blocks may then continue to be cached and the list of blocks not referred to by at least one reference may be updated until the remaining portions of the pool of unique data blocks are cached. The blocks in the list of blocks may then be deleted from the pool of unique data blocks.

Claims (46)

1. A method, comprising:

caching a portion of a pool of unique data blocks in a memory, the pool of unique data blocks comprising a plurality of unique blocks, at least some of the plurality of blocks in the pool of unique data blocks being referred to in at least one reference file;

updating a list of blocks with any block in the cached portion of the pool of unique data blocks that is not referred to by at least one reference in the at least one reference file;

iteratively caching separate portions of the pool of unique data blocks and updating the list of blocks not referred to by at least one reference until the remaining portions of the pool of unique data blocks have been cached; and

deleting, from the pool of unique data blocks, the blocks in the list of blocks.

2. The method of claim 1 , wherein updating comprises:

if the at least one reference to the block is present in the at least one reference file, deleting the block from the memory;

if the at least one reference to the block is not present in the at least one reference file, retaining the block in the memory; and

updating the list of blocks with the blocks retained in the memory.

3. The method of claim 1 , further comprising writing the list of blocks to a non-volatile memory.

4. The method of claim 1 , wherein the at least one reference file is stored in a disk drive.

5. The method of claim 1 , wherein the pool of unique data blocks is stored in a disk drive.

6. The method of claim 1 , configured to be interrupted to process at least one data access command received from a host and to be resumed where interrupted when the at least one data access command has been processed.

7. The method of claim 1 , configured to be performed when at least one reference file is to be deleted.

8. The method of claim 1 , configured to be performed as a background process.

9. The method of claim 1 , configured to be performed when at least one new reference file is added.

10. The method of claim 1 , configured to be performed as part of a deduplication process.

11. The method of claim 1 , wherein at least one newly cached portion of the pool of unique data blocks overwrites a previously cached portion of the pool of unique data blocks.

12. The method of claim 1 , wherein the at least one reference comprises at least one pointer to a data block in the pool of unique data blocks.

13. The method of claim 1 , wherein deleting is performed after updating and before continuing caching different portions of the pool of unique data blocks.

14. A device, comprising:

a data storage device;

a memory; and

a controller coupled to the memory and configured to control storage and retrieval of data from the data storage device, the controller being further configured to:

cache a portion of a pool of unique data blocks in the memory, the pool of unique data blocks comprising a plurality of unique blocks, at least some of the plurality of blocks in the pool of unique data blocks being referred to by at least one reference in at least one reference file;

update a list of blocks with any block in the cached portion of the pool of unique data blocks that is not referred to by at least one reference in the at least one reference file;

iteratively cache separate portions of the pool of unique data blocks and update the list of blocks not referred to by at least one reference until the remaining portions of the pool of unique data blocks have been cached; and

delete, from the pool of unique data blocks, the blocks in the list of blocks.

15. The device of claim 14 , wherein the controller is further configured to update the list of blocks by:

if the at least one reference to the block is present in the at least one reference file, deleting the block from the memory;

if the at least one reference to the block is not present in the at least one reference file, retaining the block in the memory; and

updating the list of blocks with the blocks retained in the memory.

16. The device of claim 14 , wherein the controller is further configured to write the list of blocks to the data storage device.

17. The device of claim 14 , wherein the pool of unique data blocks is stored in the data storage device.

18. The device of claim 14 , wherein the at least one reference file is stored in the data storage device.

19. The device of claim 14 , wherein the controller is further configured to be interrupted to process at least one data access command received from a host and to resume where interrupted when the at least one data access command has been processed.

20. The device of claim 14 , wherein the controller is further configured to at least one of cache, update, continue caching, and delete when at least one reference file is to be deleted.

21. The device of claim 14 , wherein the controller is further configured to at least one of cache, update, continue caching, and delete as a background process.

22. The device of claim 14 , wherein the controller is further configured to at least one of cache, update, continue caching, and delete when at least one new reference file is added.

23. The device of claim 14 , wherein the controller is further configured to at least one of cache, update, continue caching, and delete as part of a deduplication process.

24. The device of claim 14 , wherein the device comprises a Network Attached Storage (NAS).

25. The device of claim 14 , wherein the device comprises a Redundant Array of Independent Disks (RAID).

26. The device of claim 14 , wherein the data storage device comprises a disk drive.

27. The device of claim 14 , wherein the controller is further configured such that at least one newly cached portion of the pool of unique data blocks overwrites a previously cached portion of the pool of unique data blocks.

28. The device of claim 14 , wherein the at least one reference comprises at least one pointer to a data block in the pool of unique data blocks.

29. The device of claim 14 , wherein the controller is further configured to delete, from the pool of unique data blocks, the blocks in the list of blocks after the list of blocks is updated and before other portions of the pool of unique data blocks are cached.

Assignments (13)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
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 →
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 - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
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 →
RELEASE OF SECURITY INTEREST AT REEL 038744 FRAME 0481 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0556 →
RELEASE OF SECURITY INTEREST Recorded Mar 5, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 045501/0714 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038722/0229 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038744/0281 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038744/0481 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 27, 2014
From: RAM, TAMIR
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 032968/0309 →