IP Library Granted Patent US 9,563,423
Granted Patent B1
US 9,563,423 · App. 13/725,819 · Granted Feb 7, 2017

System and method for simultaneous shared access to data buffers by two threads, in a connection-oriented data proxy service

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 9,563,423
App. No.
13/725,819
Granted
Feb 7, 2017
Kind
B1
Abstract

A method and system configured for detecting availability of destination port associated with a virtual connection between a client and server communicating using SCSI over a fiber channel network by a server fiber channel adapter, reading data from a head of a singly linked list of a data stream storing data to be forwarded by the virtual connection engine executing the virtual connection without a lock by a consumer process thread while a producer process thread has access to the linked list of the data stream, and forwarding the data read from the head of the linked list to the destination port.

Claims (58)

1. A method comprising:

receiving a catalog of available transport paths from a client over a fibre channel network, the transport paths established based on fibre channel protocol;

detecting availability of destination port associated with a virtual connection between the client and a server communicating using SCSI (Small Computer System Interface) over the fibre channel network by a server fibre channel adapter,

the virtual connection identifying one of the available transport paths for the communication using SCSI;

in response to determining that a head buffer of a data stream is not empty, reading data from a head of a singly linked list of the data stream by a consumer process thread while a producer process thread has access to the singly linked list of the data stream,

the data stream storing data received via the virtual connection from the client,

each item in the singly linked list corresponding to a data buffer, the consumer process thread and the producer process thread having simultaneous access to individual data buffers of the singly linked list of the data stream without having to wait to obtain a lock;

forwarding the data read from the head of the singly linked list to the destination port by the consumer process thread; and

sending response data received from the destination port to the client via the one available path of the virtual connection by the producer process thread.

2. The method of claim 1 , further comprising:

detecting whether data is available in the data stream of the virtual connection.

3. The method of claim 1 , further comprising:

detecting whether all data from the head of the singly linked list has been read and forwarded.

4. The method of claim 3 , further comprising:

updating a head position for the singly linked list in response to detecting the location of the head is empty.

5. The method of claim 4 , further comprising:

obtaining a lock on the head position before updating the head position.

6. The method of claim 5 , further comprising:

releasing the lock on the head position after updating the head position.

7. A server system comprising:

a processor to execute a virtual connection engine in a server fiber channel adapter, the virtual connection engine to manage a virtual connection that support communication between a client and the server system using SCSI (Small Computer System Interface) over a fiber channel network,

the virtual connection engine having a producer process thread and a consumer process thread, to processor being configured to receive a catalog of available transport paths from the client over the fibre channel network,

the transport paths established based on fibre channel protocol,

the virtual connection identifying one of the available transport paths for the communication using SCSI,

detect availability of a destination port associated with the virtual connection,

in response to determining that a head buffer of a data stream is not empty, read data from a head of a singly linked list of the data stream by the consumer process thread while the producer process thread has access to the singly linked list of the data stream,

the data stream storing data received via the virtual connection from the client,

each item in the singly linked list corresponding to a data buffer, the consumer process thread and the producer process thread having simultaneous access to individual data buffers of the singly linked list of the data stream without having to wait to obtain a lock,

forward the data read from the head of the singly linked list to the destination port by the consumer process thread; and

send response data received from the destination port to the client via the one available path of the virtual connection by the producer process thread.

8. The server system of claim 7 , wherein the virtual connection engine is further configured to detect whether data is available in the data stream of the virtual connection.

9. The server system of claim 7 , wherein the virtual connection engine is

further configured to detect whether all data from the head of the singly linked list has been read and forwarded.

10. The server system of claim 9 , wherein the virtual connection engine is

further configured to update a head position for the singly linked list in response to detecting the location of the head is empty.

11. The server system of claim 10 , wherein the virtual connection engine is

further configured to obtain a lock on the head position before updating the head position.

12. The server system of claim 11 , wherein the virtual connection engine is

further configured to release the lock on the head position after updating the head position.

13. A machine-readable non-transitory storage medium having instructions therein, which when executed by a machine, cause the machine to perform operations, the operations comprising:

receiving a catalog of available transport paths from a client over a fibre channel network, the transport paths established based on fibre channel protocol;

detecting availability of destination port associated with a virtual connection between the client and a server communicating using SCSI (Small Computer System Interface) over the fibre channel network by a server fibre channel adapter,

the virtual connection identifying one of the available transport paths for the communication using SCSI;

in response to determining that a head buffer of a data stream is not empty, reading data from a head of a singly linked list of the data stream by a consumer process thread while a producer process thread has access to the singly linked list of the data stream,

the data stream storing data received via the virtual connection from the client,

each item in the singly linked list corresponding to a data buffer, the consumer process thread and the producer process thread having simultaneous access to individual data buffers of the singly linked list of the data stream without having to wait to obtain a lock;

forwarding the data read from the head of the singly linked list to the destination port by the consumer process thread; and

sending response data received from the destination port to the client via the one available path of the virtual connection by the producer process thread.

14. The medium of claim 13 , the operations further comprising:

detecting whether data is available in the data stream of the virtual connection.

15. The medium of claim 13 , the operations further comprising:

detecting whether all data from the head of the singly linked list has been read and forwarded.

16. The medium of claim 15 , the operations further comprising:

updating a head position for the singly linked list in response to detecting the location of the head is empty.

17. The medium of claim 16 , the operations further comprising:

obtaining a lock on the head position before updating the head position.

18. The medium of claim 17 , the operations further comprising:

releasing the lock on the head position after updating the head position.

Assignments (8)
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 (042769/0001) Recorded Apr 26, 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 (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 059803/0802 →
RELEASE OF SECURITY INTEREST AT REEL 042768 FRAME 0585 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058297/0536 →
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 →
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 →
PATENT SECURITY INTEREST (CREDIT) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 042768/0585 →
PATENT SECURITY INTEREST (NOTES) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 042769/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2013
From: PITTMAN, JOSEPH C.
To: EMC CORPORATION
Reel/Frame 029599/0062 →