IP Library › Granted Patent US 12,625,774
Granted Patent B2
US 12,625,774 · App. 18/782,482 · Granted May 12, 2026

Servicing file restorations in a deduplication filesystem using a read-ahead cache

Inventors: Nitin Madan (San Jose, CA); Kedar Godbole (Pune, IN); Aditi Tejas Gosavi (Pune, IN); Srikant Viswanathan (Pune, IN)
Assignee: Dell Products L.P.
G06F11/1453G06F2201/80
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 12,625,774
App. No.
18/782,482
Granted
May 12, 2026
Kind
B2
Abstract

An access object (AOB) service receives a restore stream from a client for a file managed by a deduplication filesystem. The file is represented by a segment tree including segments in an upper level referencing chunks of the file. The upper level segments are grouped into similarity groups and the similarity groups are assigned to deduplication object (DOB) services. The upper level segments are iterated over to open multiple internal read-ahead streams from the AOB service to the DOB service to populate a read-ahead cache maintained at the AOB service. The restore stream is serviced using the read-ahead cache.

Claims (60)

1 . A method comprising:

receiving, at an access object (AOB) service, a restore stream from a client for a file managed by a deduplication filesystem, the file being represented by a segment tree comprising segments in an upper level referencing chunks of the file, the upper level segments being grouped into similarity groups, and the similarity groups being assigned to deduplication object (DOB) services;

iterating over the upper level segments to open multiple internal read-ahead streams from the AOB service to the DOB services to populate a read-ahead cache maintained at the AOB service, the iterating comprising:

loading an upper level segment of the file;

identifying a similarity group into which the upper level segment has been grouped;

identifying a DOB service having responsibility for the similarity group; and

issuing a prefetch request from the AOB service to the DOB service for the DOB service to retrieve chunks of the file referenced by the upper level segment and populate the read-ahead cache with the retrieved chunks; and

servicing the restore stream using the read-ahead cache, wherein the method further comprises first and second iterations occurring in parallel with each other, the first iteration comprises:

loading a first upper level segment of the file;

determining that the first upper level segment belongs to a first similarity group;

determining that the first similarity group has been assigned to a first DOB service; and

issuing a first prefetch request from the AOB service to the first DOB service for the first DOB service to retrieve first chunks of the file referenced by the first upper level segment and populate the read-ahead cache with the first chunks; and the second iteration comprises:

loading a second upper level segment of the file;

determining that the second upper level segment belongs to a second similarity group;

determining that the second similarity group has been assigned to a second DOB service; and

issuing a second prefetch request from the AOB service to the second DOB service for the second DOB service to retrieve second chunks of the file referenced by the second upper level segment and populate the read-ahead cache with the second chunks, wherein the AOB service and the first DOB service are hosted on a first node, and the second DOB service is hosted on a second node.

2 . The method of claim 1 wherein the read-ahead cache for the file is a single read-ahead cache maintained on a single AOB service.

3 . The method of claim 1 further comprising:

while restoration of the file is in progress, closing one or more multiple internal read-ahead streams based on detecting that system load has exceeded a threshold level; and

after the closing the one or more multiple internal read-ahead streams, servicing the restore stream using a reduced number of internal read-ahead streams.

4 . A system comprising: a processor; and memory configured to store one or more sequences of instructions which, when executed by the processor, cause the processor to carry out the steps of:

receiving, at an access object (AOB) service, a restore stream from a client for a file managed by a deduplication filesystem, the file being represented by a segment tree comprising segments in an upper level referencing chunks of the file, the upper level segments being grouped into similarity groups, and the similarity groups being assigned to deduplication object (DOB) services;

iterating over the upper level segments to open multiple internal read-ahead streams from the AOB service to the DOB services to populate a read-ahead cache maintained at the AOB service, the iterating comprising:

loading an upper level segment of the file;

identifying a similarity group into which the upper level segment has been grouped;

identifying a DOB service having responsibility for the similarity group; and

issuing a prefetch request from the AOB service to the DOB service for the DOB service to retrieve chunks of the file referenced by the upper level segment and populate the read-ahead cache with the retrieved chunks; and

servicing the restore stream using the read-ahead cache, wherein the system further comprises first and second iterations occurring in parallel with each other, the first iteration comprises:

loading a first upper level segment of the file;

determining that the first upper level segment belongs to a first similarity group;

determining that the first similarity group has been assigned to a first DOB service; and

issuing a first prefetch request from the AOB service to the first DOB service for the first DOB service to retrieve first chunks of the file referenced by the first upper level segment and populate the read-ahead cache with the first chunks; and the second iteration comprises:

loading a second upper level segment of the file;

determining that the second upper level segment belongs to a second similarity group;

determining that the second similarity group has been assigned to the first DOB service; and

issuing a second prefetch request from the AOB service to the first DOB service for the first DOB service to retrieve second chunks of the file referenced by the second upper level segment and populate the read-ahead cache with the second chunks, wherein the AOB service and the first DOB service are hosted on a first node.

5 . The system of claim 4 wherein the read-ahead cache for the file is a single read-ahead cache maintained on a single AOB service.

6 . The system of claim 4 wherein the processor further carries out the step of:

while restoration of the file is in progress, closing one or more multiple internal read-ahead streams based on detecting that system load has exceeded a threshold level; and

after the closing the one or more multiple internal read-ahead streams, servicing the restore stream using a reduced number of internal read-ahead streams.

7 . A computer program product, comprising a non-transitory computer-readable medium having a computer-readable program code embodied therein, the computer-readable program code adapted to be executed by one or more processors to implement a method comprising:

receiving, at an access object (AOB) service, a restore stream from a client for a file managed by a deduplication filesystem, the file being represented by a segment tree comprising segments in an upper level referencing chunks of the file, the upper level segments being grouped into similarity groups, and the similarity groups being assigned to deduplication object (DOB) services;

iterating over the upper level segments to open multiple internal read-ahead streams from the AOB service to the DOB services to populate a read-ahead cache maintained at the AOB service, the iterating comprising:

loading an upper level segment of the file;

identifying a similarity group into which the upper level segment has been grouped;

identifying a DOB service having responsibility for the similarity group; and

issuing a prefetch request from the AOB service to the DOB service for the DOB service to retrieve chunks of the file referenced by the upper level segment and populate the read-ahead cache with the retrieved chunks; and

servicing the restore stream using the read-ahead cache, wherein the method further comprises first and second iterations occurring in parallel with each other, the first iteration comprises:

loading a first upper level segment of the file;

determining that the first upper level segment belongs to a first similarity group;

determining that the first similarity group has been assigned to a first DOB service; and

issuing a first prefetch request from the AOB service to the first DOB service for the first DOB service to retrieve first chunks of the file referenced by the first upper level segment and populate the read-ahead cache with the first chunks; and the second iteration comprises:

loading a second upper level segment of the file;

determining that the second upper level segment belongs to a second similarity group;

determining that the second similarity group has been assigned to the first DOB service; and

issuing a second prefetch request from the AOB service to the first DOB service for the first DOB service to retrieve second chunks of the file referenced by the second upper level segment and populate the read-ahead cache with the second chunks, wherein the AOB service and the first DOB service are hosted on a first node.

8 . The computer program product of claim 7 wherein the read-ahead cache for the file is a single read-ahead cache maintained on a single AOB service.

9 . The computer program product of claim 7 wherein the method further comprises:

while restoration of the file is in progress, closing one or more multiple internal read-ahead streams based on detecting that system load has exceeded a threshold level; and

after the closing the one or more multiple internal read-ahead streams, servicing the restore stream using a reduced number of internal read-ahead streams.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 24, 2024
From: MADAN, NITIN; GODBOLE, KEDAR; GOSAVI, ADITI TEJAS; VISWANATHAN, SRIKANT
To: DELL PRODUCTS L.P.
Reel/Frame 068069/0487 →
Continuity (1)
Related Publication 20260030115A1 · Jan 29, 2026
References Cited (8)
US 5963963A · Schmuck · 1999 [cited by applicant]
US 9189414B1 · Shim · 2015 [cited by examiner]
US 12271625B1 · Astolfi · 2025 [cited by applicant]
US 20110276744A1 · Sengupta · 2011 [cited by applicant]
US 20140075034A1 · Vasudevan · 2014 [cited by applicant]
US 20150205680A1 · Kimmel · 2015 [cited by examiner]
US 20230133361A1 · Shilane · 2023 [cited by applicant]
US 20230133530A1 · Madan · 2023 [cited by examiner]