IP Library Granted Patent US 12,613,630
Granted Patent B2
US 12,613,630 · App. 18/644,464 · Granted Apr 28, 2026

Management of data staging for writing to object based storage

Inventors: Qinghua Zheng (Sunnyvale, CA); Cheryl Marie Thompson (Sunnyvale, CA); Anil Paul Thoppil (Pleasanton, CA)
Assignee: NetApp, Inc.
G06F3/0604G06F3/0631G06F3/0659G06F3/067G06F3/0656G06F3/0685
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,613,630
App. No.
18/644,464
Granted
Apr 28, 2026
Kind
B2
Abstract

A method, computing device, and non-transitory machine-readable medium for managing incoming/outgoing flow through a staging area. A request to write data to an object based storage is received. A determination is made that the data is to be first staged within a transfer data structure. The transfer data structure is in a first storage tier and the object based storage is in a second storage tier. A determination is made that an amount of storage space used in the transfer data structure exceeds a start throttle threshold. In response to the determination that the amount of storage space exceeds the start throttle threshold, the request is sent into a queue selected from a set of throttling queues, wherein requests in the queue are handled in a first in, first out (FIFO) order. The request in the queue is processed based on the FIFO order and a dynamic throttle rate.

Claims (49)

1 . A method implemented by a processor executing instructions out of a memory for a storage operating system, the method comprising:

receiving a request to write data to an object based storage;

determining that the data is to be staged within a transfer data structure before being written to the object based storage,

wherein the transfer data structure is in a first storage tier and the object based storage is in a second storage tier;

determining that an amount of storage space used in the transfer data structure exceeds a start throttle threshold;

sending, in response to a determination the amount of storage space used exceeds the start throttle threshold, the request into a queue selected from a set of throttling queues, wherein requests in the queue are handled in a first in, first out (FIFO) order;

processing the request in the queue based on the FIFO order and a dynamic throttle rate; and

adjusting a drain throttle rate at which the data is transferred out of the transfer data structure based on whether the data to be written is first stored in a physical storage in the first storage tier separate from the transfer data structure.

2 . The method of claim 1 , further comprising:

halting throttling in response to determining that the amount of storage space used in the transfer data structure has fallen below a stop throttle threshold; and

processing any remaining requests in the set of throttling queues according to the FIFO order.

3 . The method of claim 1 , wherein the set of throttling queues includes a normal queue and a high priority queue and wherein the normal queue is processed at a slower rate than the high priority queue.

4 . The method of claim 1 , wherein the set of throttling queues includes a normal queue and a high priority queue; wherein a first amount of space within the transfer data structure is designated for processing requests in the normal queue and a second amount of space within the transfer data structure is designated for processing requests in the high priority queue; and wherein the second amount of space is greater than the first amount of space.

5 . The method of claim 1 , further comprising:

determining that a source of the data is one of a set of sources designated as being subject to throttling prior to sending the request into the queue selected from the set of throttling queues.

6 . The method of claim 1 , further comprising:

computing a dynamic drain rate for the transfer data structure; and

identifying the dynamic throttle rate based on the dynamic drain rate.

7 . The method of claim 1 , wherein processing the request comprises:

processing the request in the queue based on the FIFO order, the dynamic throttle rate, and a priority type of the queue.

8 . The method of claim 1 , wherein the request is a write request received from a client.

9 . The method of claim 1 , wherein, prior to be written to the transfer data structure, the data is stored in the physical storage in the first storage tier and the object based storage comprises a cloud storage.

10 . The method of claim 1 , wherein the request is received from a software-based process that comprises at least one of an application, a process internal to the storage operating system, a process associated with the storage operating system, a third-party process, a piece of code, a model, an algorithm, or a policy-based process.

11 . A computing device comprising:

a memory containing a machine-readable medium having instructions stored thereon comprising machine executable code; and

a processor coupled to the memory, the processor configured to execute the machine executable code to:

receive a request to write data to an object based storage;

determine that the data is to be staged within a transfer data structure before being written to the object based storage,

wherein the transfer data structure is in a first storage tier and the object based storage is in a second storage tier;

determine that an amount of storage space used in the transfer data structure exceeds a start throttle threshold;

send, in response to a determination the amount of storage space used exceeds the start throttle threshold, the request into a queue selected from a set of throttling queues;

process the request in the queue based on a dynamic throttle rate; and

adjust a drain throttle rate at which the data is transferred out of the transfer data structure based on whether the data to be written is first stored in a physical storage in the first storage tier separate from the transfer data structure.

12 . The computing device of claim 11 , wherein the processor is further configured to halt throttling in response to determining that the amount of storage space used in the transfer data structure has fallen below a stop throttle threshold; and process any remaining requests in the set of throttling queues according to a first in, first out (FIFO) order.

13 . The computing device of claim 11 , wherein the set of throttling queues includes a normal queue and a high priority queue and wherein the normal queue is processed at a slower rate than the high priority queue.

14 . The computing device of claim 11 , wherein the set of throttling queues includes a normal queue and a high priority queue; wherein a first amount of space within the transfer data structure is designated for processing requests in the normal queue and a second amount of space within the transfer data structure is designated for processing requests in the high priority queue; and wherein the second amount of space is greater than the first amount of space.

15 . The computing device of claim 11 , wherein the processor is further configured to determine that a source of the data is one of a set of sources designated as being subject to throttling prior to sending the request into the queue selected from the set of throttling queues.

16 . The computing device of claim 11 , wherein the dynamic throttle rate is identified based on a dynamic drain rate that is computed for the transfer data structure.

17 . The computing device of claim 11 , wherein processing the request comprises:

processing the request in the queue based on the dynamic throttle rate, a first in, first out (FIFO) order, and a priority type of the queue.

18 . A non-transitory machine-readable medium having stored thereon instructions for performing a method comprising machine-executable code which, when executed by at least one machine, causes the at least one machine to:

receive a request to stage data in a transfer data structure in a first storage tier before the data is written to object based storage in a second storage tier;

determine that an amount of storage space used in the transfer data structure exceeds a start throttle threshold;

send, in response to a determination the amount of storage space used exceeds the start throttle threshold, the request into a queue selected from a set of throttling queues;

identify a dynamic throttle rate based on a dynamic drain rate computed for the transfer data structure;

process the request in the queue based on the dynamic throttle rate, a priority type of the queue, and a first in, first out (FIFO) order; and

adjust a drain throttle rate at which the data is transferred out of the transfer data structure based on whether the data to be written is first stored in a physical storage in the first storage tier separate from the transfer data structure.

19 . The non-transitory machine-readable medium of claim 18 , wherein the machine-executable code which, when executed by the at least one machine, further causes the at least one machine to halt throttling in response to determining that the amount of storage space used in the transfer data structure has fallen below a stop throttle threshold; and process any remaining requests in the set of throttling queues according to the FIFO order.

20 . The non-transitory machine-readable medium of claim 18 , wherein the set of throttling queues includes a normal queue and a high priority queue and wherein the normal queue is processed at a slower rate than the high priority queue.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 17, 2024
From: ZHENG, QINGHUA; THOMPSON, CHERYL MARIE; THOPPIL, ANIL PAUL
To: NETAPP, INC.
Reel/Frame 069610/0758 →
Continuity (2)
Provisional Application 63635448 · Apr 17, 2024
Related Publication 20250328240A1 · Oct 23, 2025
References Cited (29)
US 9274966B1 · Chahwan · 2016 [cited by examiner]
US 12169487B1 · Chaturvedi · 2024 [cited by examiner]
US 20020196799A1 · Remer · 2002 [cited by examiner]
US 20060064550A1 · Katsuragi et al. · 2006 [cited by applicant]
US 20120215970A1 · Shats · 2012 [cited by applicant]
US 20130191610A1 · Burka · 2013 [cited by examiner]
US 20160313944A1 · Hodgdon · 2016 [cited by examiner]
US 20170024161A1 · Katiyar · 2017 [cited by examiner]
US 20170199675A1 · Subramanian et al. · 2017 [cited by applicant]
US 20170199678A1 · Subramanian · 2017 [cited by examiner]
US 20170199698A1 · Brewington · 2017 [cited by applicant]
US 20170199707A1 · Varghese et al. · 2017 [cited by applicant]
US 20180052744A1 · Chen · 2018 [cited by examiner]
US 20180074725A1 · Subramanian et al. · 2018 [cited by applicant]
US 20180314449A1 · Kondapalli · 2018 [cited by examiner]
US 20190087342A1 · Masuda · 2019 [cited by examiner]
US 20190272123A1 · Gissin · 2019 [cited by examiner]
US 20210026704A1 · Nandagopal · 2021 [cited by examiner]
US 20210240391A1 · Shin · 2021 [cited by examiner]
US 20220300193A1 · Gao et al. · 2022 [cited by applicant]
US 20220317921A1 · Subramanian · 2022 [cited by examiner]
US 20220326878A1 · Paduroiu · 2022 [cited by examiner]
US 20230161504A1 · Nagasaka · 2023 [cited by applicant]
US 20230164078A1 · Li · 2023 [cited by examiner]
US 20230266995A1 · Mic · 2023 [cited by examiner]
US 20250328285A1 · Zheng et al. · 2025 [cited by applicant]
EP 2270693A1 · 2011 [cited by applicant]
Non-Final Office Action mailed on Apr. 22, 2025 for U.S. Appl. No. 18/644,459, filed Apr. 24, 2024, 42 pages. [cited by applicant]
Final Office Action mailed on Dec. 5, 2025 for U.S. Appl. No. 18/644,459, filed Apr. 24, 2024, 42 pages. [cited by applicant]