Back to results
US 10,254,999 B2Granted
Method and system for optimistic flow control for push-based input/output with buffer stealing
AssigneeEMC IP Holding Company LLC
InventorMichael W. Shapiro
Life of this patent
Estimating the term…
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.
Claims16
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.
18 more elements
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.
20 more elements
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.
18 more elements
Dependencies are inferred from the claim text.