IP Library Granted Patent US 11,481,147
Granted Patent B1
US 11,481,147 · App. 17/350,502 · Granted Oct 25, 2022

Buffer allocation techniques

Inventors: Igor Fradkin (Sharon, MA); Scott Rowlands (Marietta, GA); Arieh Don (Newton, MA)
Assignee: EMC IP Holding Company LLC
G06F3/0656G06F3/0604G06F3/067G06F3/0631
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 11,481,147
App. No.
17/350,502
Granted
Oct 25, 2022
Kind
B1
Abstract

Techniques for transmitting data may include: statically allocating a first buffer by a first entity; determining, by the second code entity, whether first data to be returned to the first entity fits into a data area of the first buffer; storing the first data in the data area of the first buffer responsive to determining the first data fits into the data area of the first buffer; and responsive to determining the first data does not fit into the data area of the first buffer, performing first processing by the second entity to store the first data in a dynamically allocated second buffer having a descriptor stored in the first buffer. The descriptor may include the address and size of the second buffer. The first and second entity may be code entities in the same system, or may be different systems that communicate using a remote direct memory access protocol.

Claims (57)

1. A method of transmitting data comprising:

statically allocating a first buffer by a first entity;

providing a first address of the first buffer to a second entity;

determining, by the second code entity, whether first data to be returned to the first entity fits into a data area of the first buffer;

storing the first data in the data area of the first buffer responsive to determining the first data fits into the data area of the first buffer; and

responsive to determining the first data does not fit into the data area of the first buffer, performing first processing by the second entity, the first processing comprising:

dynamically allocating a second buffer that is large enough to hold the first data;

storing the first data in the second buffer;

storing a descriptor for the second buffer in the data area of the first buffer; and

storing an indicator in the first buffer, wherein the indicator has a first value that indicates the data area of the first buffer does not include the first data and is in accordance with a metadata format including a descriptor of the second buffer, wherein the second buffer includes the first data returned from the second entity to the first entity.

2. The method of claim 1 , wherein the descriptor includes an address of the second buffer.

3. The method of claim 2 , wherein the descriptor includes a size of the second buffer.

4. The method of claim 1 , wherein the first entity and the second entity are code entities executing in a same system.

5. The method of claim 4 , wherein the first entity and the second entity have access to a memory of the same system.

6. The method of claim 5 , wherein the first buffer is a first portion of the memory of the same system, and wherein the second buffer is a second portion of the memory of the same computer.

7. The method of claim 1 , further comprising:

sending a first message from the first entity to the second entity, wherein the first message includes a first address of the first buffer.

8. The method of claim 7 , further comprising:

sending a second message from the second entity to the first entity, wherein the second message includes the first address of the first buffer.

9. The method of claim 8 , further comprising performing second processing by the first entity responsive to receiving the second message.

10. The method of claim 9 , wherein the second processing performed by the first entity includes:

using the first address of the first buffer to retrieve a current value for the indicator stored in the first buffer;

determining whether the current value of the indicator is equal to the first value; and

responsive to determining that the current value of the indicator is equal to the first value, performing third processing by the first entity comprising:

using the descriptor stored in the data area of the first buffer to read the first data stored in the second buffer.

11. The method of claim 10 , wherein said second processing further includes:

responsive to determining that the current value of the indicator is not equal to the first value, retrieving the first data from the data area of the first buffer.

12. The method of claim 10 , wherein the third processing performed by the first entity further includes:

deallocating the second buffer.

13. The method of claim 1 , wherein the first entity is a first system having a first memory, the second entity is a second system having a second memory, the first system is configured to directly access the second memory of the second system, and the second system is configured to directly access the first memory of the first system.

14. The method of claim 13 , wherein the first system and the second system communicate with one another in accordance with a remote direct memory access protocol that allows the first system to access the second memory, and allows the second system to directly access the first memory.

15. A system comprising:

at least one processor; and

at least one memory comprising code stored thereon that, when executed, performs a method of transmitting data comprising:

statically allocating a first buffer by a first entity;

providing a first address of the first buffer to a second entity;

determining, by the second code entity, whether first data to be returned to the first entity fits into a data area of the first buffer;

storing the first data in the data area of the first buffer responsive to determining the first data fits into the data area of the first buffer; and

responsive to determining the first data does not fit into the data area of the first buffer, performing first processing by the second entity, the first processing comprising:

dynamically allocating a second buffer that is large enough to hold the first data;

storing the first data in the second buffer;

storing a descriptor for the second buffer in the data area of the first buffer; and

storing an indicator in the first buffer, wherein the indicator has a first value that indicates the data area of the first buffer does not include the first data and is in accordance with a metadata format including a descriptor of the second buffer, wherein the second buffer includes the first data returned from the second entity to the first entity.

16. A computer readable medium comprising code stored thereon that, when executed, performs a method of transmitting data comprising:

statically allocating a first buffer by a first entity;

providing a first address of the first buffer to a second entity;

determining, by the second code entity, whether first data to be returned to the first entity fits into a data area of the first buffer;

storing the first data in the data area of the first buffer responsive to determining the first data fits into the data area of the first buffer; and

responsive to determining the first data does not fit into the data area of the first buffer, performing first processing by the second entity, the first processing comprising:

dynamically allocating a second buffer that is large enough to hold the first data;

storing the first data in the second buffer;

storing a descriptor for the second buffer in the data area of the first buffer; and

storing an indicator in the first buffer, wherein the indicator has a first value that indicates the data area of the first buffer does not include the first data and is in accordance with a metadata format including a descriptor of the second buffer, wherein the second buffer includes the first data returned from the second entity to the first entity.

17. The computer readable medium of claim 16 , wherein the descriptor includes an address of the second buffer.

18. The computer readable medium of claim 17 , wherein the descriptor includes a size of the second buffer.

19. The computer readable medium of claim 1 , wherein the first entity and the second entity are code entities executing in a same system.

20. The computer readable medium of claim 19 , wherein the first entity and the second entity have access to a memory of the same system.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (058014/0560) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 062022/0473 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (057931/0392) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 062022/0382 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (057758/0286) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 061654/0064 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 058014/0560 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 057758/0286 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 057931/0392 →
SECURITY AGREEMENT Recorded Oct 1, 2021
From: DELL PRODUCTS, L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 057682/0830 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2021
From: FRADKIN, IGOR; ROWLANDS, SCOTT; DON, ARIEH
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 056576/0303 →
Cited By (1)
US 12,405,727