IP Library Granted Patent US 12,656,949
Granted Patent B2
US 12,656,949 · App. 18/785,672 · Granted Jun 16, 2026

Coalescing multiple small writes to large files or multiple writes to a number of small files to generate larger compressible chunks for inline compression

Inventors: Venkateswarlu Tella (Bangalore, IN); Ankur Vineet (Gujarat, IN); Palak Sharma (Haryana, IN); Sindhushree K N (Mysore, IN)
Assignee: NETAPP, INC.
G06F3/0608G06F3/0641G06F3/0671
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,656,949
App. No.
18/785,672
Granted
Jun 16, 2026
Kind
B2
Abstract

Systems and methods for coalescing writes to facilitate generation of larger compression groups for use during inline compression are provided. According to one embodiment, inline compression performed by a storage system is improved by temporarily staging writes to in-memory data structures (e.g., inline storage efficiency (ISE) index nodes (inodes)) and performing coalescing in a deferred manner to generate larger compression groups for use during performance of inline compression. In one example, all files may be treated in the same manner, for example, by staging writes within a staging area and then processing the staged data by an inline compression workflow. In another example, the staging processing for small and large file may be different. For instance, the data blocks associated with small files may be staged separately from data blocks associated with large files and/or data blocks of multiple small files may be staged within the same ISE inode.

Claims (44)

1 . A method comprising:

as data blocks of a plurality of write requests are received from a client of a storage system;

initializing a timer for each large file of a plurality of large files to which a write request of the plurality of write requests is directed; and

for a given file of the plurality of large files, staging a plurality of non-duplicative data blocks of the data blocks associated with the given file until a trigger event occurs, wherein each large file of the plurality of large files has a size greater than or equal to a predetermined or configurable number of kilobytes (KB) corresponding to a compression group size utilized by the storage system for performing inline compression, wherein the trigger event comprises:

the timer for the given file indicating a predefined or configurable time threshold has expired; or

a number of the staged plurality of the non-duplicative data blocks associated with the given file meeting a predetermined or configurable threshold;

after occurrence of the trigger event, generating an inline compression group of the compression group size by coalescing a group of multiple of the staged plurality of the non-duplicative data blocks associated with the given file; and

prior to persisting data associated with the inline compression group to a data storage medium of the storage system, performing compression based on the inline compression group.

2 . The method of claim 1 , wherein each of the write requests includes one or two data blocks having a size of less than 32 kilobytes (KB) and wherein the compression group size is greater than or equal to 32 KB.

3 . The method of claim 1 , wherein the staging includes creating a list of inline storage efficiency (ISE) index nodes (inodes) to track compression work in a memory of the storage system, wherein there is a one-to-one correspondence between the ISE inodes and files for which write have been received.

4 . A method comprising:

as data blocks of a plurality of write requests are received from a client of a storage system;

initializing a timer for a plurality of small files to which write requests of the plurality of write requests are directed; and

staging a plurality of non-duplicative data blocks of the data blocks spanning the plurality of files, until a trigger event occurs, wherein each small file of the plurality of small files has a size of less than or equal to a predetermined or configurable number of kilobytes (KB) corresponding to a compression group size utilized by the storage system for performing inline compression, wherein the trigger event comprises:

the timer indicating a predefined or configurable time threshold has elapsed since a first of the write requests was received; or

a number of the staged plurality of the non-duplicative data blocks associated with the plurality of small files meeting a predetermined or configurable threshold;

after occurrence of the trigger event, generating an inline compression group of the compression group size by coalescing a group of multiple of the staged plurality of the non-duplicative data blocks; and

prior to persisting data associated with the inline compression group to a data storage medium of the storage system, performing compression based on the inline compression group.

5 . The method of claim 4 , wherein each of the write requests includes one or two data blocks having a size of less than 32 kilobytes (KB) and wherein the compression group size is greater than or equal to 32 KB.

6 . The method of claim 4 , wherein the staging includes creating a list of inline storage efficiency (ISE) index nodes (inodes) to track compression work in a memory of the storage system.

7 . The method of claim 6 , wherein a number of the ISE inodes is limited and is potentially fewer than a number of files for which writes have been received.

8 . A non-transitory machine readable medium storing instructions, which when executed by one or more processing resources of a storage system, cause the storage system to:

as data blocks of a plurality of write requests are received from a client of the storage system;

initializing a timer for each large file of a plurality of large files to which a write request of the plurality of write requests is directed; and

for a given file of the plurality of large files, stage a plurality of non-duplicative data blocks of the data blocks associated with the given file until a trigger event occurs, wherein each large file of the plurality of large files has a size greater than or equal to a predetermined or configurable number of kilobytes (KB) corresponding to a compression group size utilized by the storage system for performing inline compression, wherein the trigger event comprises:

the timer for the given file indicating a predefined or configurable time threshold has expired; or

a number of the staged plurality of the non-duplicative data blocks associated with the given file meeting a predetermined or configurable threshold;

after occurrence of the trigger event, generate an inline compression group of the compression group size by coalescing a group of multiple of the staged plurality of the non-duplicative data blocks associated with the given file; and

prior to persisting data associated with the inline compression group to a data storage medium of the storage system, perform compression based on the inline compression group.

9 . The non-transitory machine readable medium of claim 8 , wherein each of the write requests includes one or two data blocks having a size of less than 32 kilobytes (KB) and wherein the compression group size is greater than or equal to 32 KB.

10 . The non-transitory machine readable medium of claim 8 , wherein the staging includes creating a list of inline storage efficiency (ISE) index nodes (inodes) to track compression work in a memory of the storage system, wherein there is a one-to-one correspondence between the ISE inodes and files for which writes have been received.

11 . A storage system comprising:

one or more processing resources; and

instructions that when executed by the one or more processing resources cause the storage system to:

as data blocks of a plurality of write requests are received from a client of a storage system;

initialize a timer for a plurality of small files to which write requests of the plurality of write requests are directed; and

stage a plurality of non-duplicative data blocks of the data blocks spanning the plurality of files, until a trigger event occurs, wherein each small file of the plurality of small files has a size of less than or equal to a predetermined or configurable number of kilobytes (KB) corresponding to a compression group size utilized by the storage system for performing inline compression, wherein the trigger event comprises:

the timer satisfies a predefined or configurable time threshold; or

a number of the staged plurality of the non-duplicative data blocks associated with the plurality of small files meeting a predetermined or configurable threshold;

after occurrence of the trigger event, generate an inline compression group of the compression group size by coalescing a group of multiple of the staged plurality of the non-duplicative data blocks; and

prior to persisting data associated with the inline compression group to a data storage medium of the storage system, perform compression based on the inline compression group.

12 . The storage system of claim 11 , wherein each of the write requests includes one or two data blocks having a size of less than 32 kilobytes (KB) and wherein the compression group size is greater than or equal to 32 KB.

13 . The storage system of claim 11 , wherein the staging includes creating a list of inline storage efficiency (ISE) index nodes (inodes) to track compression work in a memory of the storage system.

14 . The storage system of claim 13 , wherein a number of the ISE inodes is limited and is potentially fewer than a number of files for which writes have been received.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 14, 2024
From: TELLA, VENKATESWARLU; VINEET, ANKUR; SHARMA, PALAK; K N, SINDHUSHREE
To: NETAPP, INC.
Reel/Frame 068289/0012 →
Continuity (1)
Related Publication 20260029912A1 · Jan 29, 2026
References Cited (52)
US 6348881B1 · Buer · 2002 [cited by examiner]
US 7079051B2 · Storer · 2006 [cited by examiner]
US 8396841B1 · Janakiraman · 2013 [cited by examiner]
US 8572163B1 · Bromley · 2013 [cited by examiner]
US 8732403B1 · Nayak · 2014 [cited by examiner]
US 9715434B1 · Xu · 2017 [cited by examiner]
US 9733836B1 · Garg · 2017 [cited by examiner]
US 10108543B1 · Duggal · 2018 [cited by examiner]
US 10108544B1 · Duggal · 2018 [cited by examiner]
US 10228858B1 · Stoakes · 2019 [cited by examiner]
US 10346076B1 · Jonnala · 2019 [cited by examiner]
US 10585611B2 · Sharma et al. · 2020 [cited by applicant]
US 10664165B1 · Faibish · 2020 [cited by examiner]
US 10795812B1 · Duggal · 2020 [cited by examiner]
US 20080144079A1 · Pandey · 2008 [cited by examiner]
US 20090041230A1 · Williams · 2009 [cited by examiner]
US 20090089483A1 · Tanaka · 2009 [cited by examiner]
US 20090204650A1 · Wong · 2009 [cited by examiner]
US 20100077013A1 · Clements · 2010 [cited by examiner]
US 20100082672A1 · Kottomtharayil · 2010 [cited by examiner]
US 20100088296A1 · Periyagaram · 2010 [cited by examiner]
US 20100125553A1 · Huang · 2010 [cited by examiner]
US 20100174881A1 · Anglin · 2010 [cited by examiner]
US 20100281081A1 · Stager · 2010 [cited by examiner]
US 20100333116A1 · Prahlad · 2010 [cited by examiner]
US 20130166861A1 · Takano · 2013 [cited by examiner]
US 20140049413A1 · Agarwal · 2014 [cited by examiner]
US 20140114932A1 · Mallaiah · 2014 [cited by examiner]
US 20140143517A1 · Jin · 2014 [cited by examiner]
US 20150205816A1 · Periyagaram · 2015 [cited by examiner]
US 20150261776A1 · Attarde · 2015 [cited by examiner]
US 20160246799A1 · Constantinescu · 2016 [cited by examiner]
US 20160350324A1 · Wang · 2016 [cited by examiner]
US 20170010809A1 · Hironaka · 2017 [cited by examiner]
US 20170038978A1 · Li · 2017 [cited by examiner]
US 20170123711A1 · Kathpal · 2017 [cited by examiner]
US 20170308320A1 · Sharma · 2017 [cited by examiner]
US 20180095674A1 · Alameldeen · 2018 [cited by examiner]
US 20180138921A1 · Arelakis · 2018 [cited by examiner]
US 20180314727A1 · Epstein · 2018 [cited by examiner]
US 20190205035A1 · Mizushima · 2019 [cited by examiner]
US 20200097404A1 · Cason · 2020 [cited by examiner]
US 20200310686A1 · Truong · 2020 [cited by examiner]
US 20210036714A1 · Martin · 2021 [cited by examiner]
US 20210374021A1 · Santhakumar · 2021 [cited by examiner]
US 20230106987A1 · Shemer et al. · 2023 [cited by applicant]
US 20230267217A1 · Natanzon · 2023 [cited by examiner]
US 20230334023A1 · Natanzon · 2023 [cited by examiner]
WO WO2013157103A1 · 2013 [cited by examiner]
GreenNet, “Understanding file sizes”, May 29, 2016, pp. 1-11, https://web.archive.org/web/20160529003517/https://www.greennet.org.uk/support/understanding-file-sizes (Year: 2016). [cited by examiner]
Glenn Bramich, “File sizes explained: your guise to KB, MB, GB and more”, Feb. 24, 2023, pp. 1-11, https://web.archive.org/web/20230224084343/https://www.geeks2u.com.au/geekspeak/file-sizes-explained-your-guide-to-kb-mb… [cited by examiner]
“Storage Efficiency ONTAP 9”, NetApp, May 10, 2024. [cited by applicant]