IP Library Granted Patent US 10,254,999
Granted Patent B2
US 10,254,999 · App. 15/087,727 · Granted Apr 9, 2019

Method and system for optimistic flow control for push-based input/output with buffer stealing

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 10,254,999
App. No.
15/087,727
Granted
Apr 9, 2019
Kind
B2
Abstract

In general, embodiments of the technology relate to writing data to storage appliances. More specifically, embodiments of the technology are directed to writing data to storage media using a push-based mechanism in which clients provide the data to write to the storage media and then subsequently provide a command to write the data to the storage media.

Claims (87)

1. A method for writing data by a storage appliance, comprising:

receiving a data packet comprising data from a client;

in response to receiving the data packet:

selecting a first physical buffer location, wherein a state of the first physical buffer location is free;

setting, after the selecting, the state of the first physical buffer location to filling; and

creating a temporary buffer binding between the first physical buffer location and a virtual buffer location associated with the data packet;

storing the data in the first physical buffer location; and

after storing the data in the first physical buffer location:

receiving, from the client, a command packet associated with the virtual buffer location;

in response to receiving the command packet:

setting the state of the first physical buffer location to draining;

initiating writing of the data in the first physical buffer location to persistent storage; and

deleting, after writing the data to persistent storage, the temporary buffer binding from a translation table;

after deleting the temporary buffer binding:

receiving a second data packet comprising second data from a second client;

in response to receiving the second data packet, creating a second temporary buffer binding between a second physical buffer location and the virtual buffer location associated with the data packet;

storing the second data in the second physical buffer location; and

after storing the second data in the second physical buffer location, deleting the second temporary buffer binding.

2. The method of claim 1 , wherein the first physical buffer location is a region of physical memory.

3. The method of claim 1 , further comprising:

after all data stored in the first physical buffer location has been written to the persistent storage, setting the state of the first physical buffer location to free.

4. The method of claim 1 , further comprising:

receiving a third data packet comprising third data from the client;

in response to receiving the third data packet:

making a first determination that no physical buffer locations in a physical buffer pool have a state of free, wherein the first physical buffer location is in the physical buffer pool;

based on the first determination, identifying a third physical buffer location in the physical buffer pool, wherein the third physical buffer location has a state of filling;

setting a flag associated with a third temporary buffer binding between the third physical buffer location and a second virtual buffer location;

creating a fourth temporary buffer binding between the third physical buffer location and a third virtual buffer location associated with the third data packet; and

storing the third data in the second physical buffer location.

5. The method of claim 4 , further comprising:

receiving a fourth data packet from a third client, wherein the fourth data packet is associated with the second virtual buffer location; and

in response to receiving the fourth data packet:

making a second determination that the flag associated with the third temporary buffer binding is set;

based on the second determination, issuing a resend notification to the third client; and

removing the third temporary buffer binding from the translation table.

6. The method of claim 4 , wherein identifying the third physical buffer location in the physical buffer pool comprises:

identifying all physical buffer locations in the physical buffer pool that have a state of filling to obtain a set of physical buffer locations; and

identifying the third physical buffer location from the set of physical buffer locations based on at least one selection criterion.

7. The method of claim 1 , wherein the data packet comprises an address generated using a virtual function associated with the client, wherein the address is associated with the virtual buffer location.

8. A storage appliance, comprising:

a fabric;

a storage module controller comprising a physical buffer pool and operatively connected to the fabric, wherein the storage module controller is programmed to:

receive a data packet comprising data from a client;

in response to receiving the data packet:

select a physical buffer location, wherein a state of the physical buffer location is free;

set, after the selecting, the state of the physical buffer location to filling; and

create a temporary buffer binding between the physical buffer location and a virtual buffer location associated with the data packet, wherein the physical buffer location is in the physical buffer pool;

store the data in the physical buffer location; and

after storing the data in the physical buffer location:

receive, from the client, a command packet associated with the virtual buffer location;

in response to receiving the command packet:

set the state of the physical buffer location to draining;

initiate writing of the data in the physical buffer location to persistent storage; and

delete, after writing the data to persistent storage, the temporary buffer binding from a translation table;

after deleting the temporary buffer binding:

receive a second data packet comprising second data from a second client;

in response to receiving the second data packet, create a second temporary buffer binding between a second physical buffer location and the virtual buffer location associated with the data packet;

store the second data in the second physical buffer location; and

after storing the second data in the second physical buffer location, delete the second temporary buffer binding.

9. The storage appliance of claim 8 , wherein the physical buffer pool corresponds to a region of physical memory in the storage module controller.

10. The storage appliance of claim 8 , further comprising:

persistent storage,

wherein the storage module controller is further configured to write the data stored in the physical buffer location to persistent storage.

11. The storage appliance of claim 10 , wherein the persistent storage comprises solid state memory.

12. The storage appliance of claim 8 , wherein the storage module controller comprises a buffer table, wherein the buffer table tracks a state of each physical buffer location in the physical buffer pool.

13. The storage appliance of claim 12 , wherein a state of at least one physical buffer location in the physical buffer pool is one selected from a group consisting of free, filling, and draining.

14. The storage appliance of claim 8 , wherein creating the temporary buffer binding comprises:

storing the temporary buffer binding in the translation table.

15. The storage appliance of claim 8 , wherein the data packet comprises an address generated using a virtual function associated with the client and wherein the address is associated with the virtual buffer location.

16. A non-transitory computer readable medium comprising instructions to:

receive a data packet comprising data from a client;

in response to receiving the data packet:

select a physical buffer location, wherein a state of the physical buffer location is free;

set, after the selecting, the state of the physical buffer location to filling; and

create a temporary buffer binding between the physical buffer location and a virtual buffer location associated with the data packet;

store the data in the physical buffer location; and

after storing the data in the physical buffer location:

receive, from the client, a command packet associated with the virtual buffer location;

in response to receiving the command packet:

set the state of the physical buffer location to draining;

initiate writing of the data in the physical buffer location to persistent storage; and

delete, after writing the data to persistent storage, the temporary buffer binding from a translation table;

after deleting the temporary buffer binding:

receive a second data packet comprising second data from a second client;

in response to receiving the second data packet, create a second temporary buffer binding between a second physical buffer location and the virtual buffer location associated with the data packet;

store the second data in the second physical buffer location; and

after storing the second data in the second physical buffer location, delete the second temporary buffer binding.

Assignments (10)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0466) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 060753/0486 →
RELEASE OF SECURITY INTEREST AT REEL 050405 FRAME 0534 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058001/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 050724/0466 →
SECURITY AGREEMENT Recorded Sep 17, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 050405/0534 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2019
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 048337/0260 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2017
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041872/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 31, 2016
From: SHAPIRO, MICHAEL W.
To: EMC CORPORATION
Reel/Frame 038751/0182 →