IP Library Granted Patent US 10,691,630
Granted Patent B2
US 10,691,630 · App. 15/410,917 · Granted Jun 23, 2020

State-based IRP management for redirected device

Inventor: Gokul Thiruchengode Vajravel (Bangalore, IN)
Assignee: Wyse Technology L.L.C.
G06F13/4072G06F13/4282H04L67/38
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,691,630
App. No.
15/410,917
Granted
Jun 23, 2020
Kind
B2
Abstract

State-based I/O management is provided. A virtual bus driver of a virtual desktop infrastructure can employ containers to manage the state of an IRP that pertains to a redirected device. When an IRP that has been shared to a client terminal is cancelled, the virtual bus driver can update the state of a container associated with the IRP to prevent the IRP from being completed twice. In this way, devices for which IRPs are frequently cancelled can be redirected without concern that a cancelled IRP may result in improper system performance or a crash.

Claims (80)

1. A method, performed by a virtual bus driver executing on a server in a virtual desktop infrastructure environment, for managing I/O request packets (IRPs) that pertain to a device that is connected to a client terminal and redirected to the server, the method comprising:

maintaining a first container that has a state that can be set to a plurality of values including an uninitialized value, an initialized value and a shared value;

receiving, at the virtual bus driver, a first IRP that pertains to the device that is connected to the client terminal and redirected to the server;

in response to receiving the first IRP, associating the first IRP with the first container;

in conjunction with associating the first IRP with the first container, setting the state of the first container to the initialized value;

sharing the first IRP to the client terminal;

in conjunction with sharing the first IRP to the client terminal, setting the state of the first container to the shared value;

after sharing the first IRP to the client terminal but prior to receiving notification from the client terminal that the first IRP has been completed on the client terminal, receiving a server-side request to cancel the first IRP;

while the first IRP is shared to the client terminal, completing the first IRP by cancelling the first IRP on the server;

in conjunction with cancelling the first IRP and while the first IRP is shared to the client terminal, changing the state of the first container from the shared value to the uninitialized value such that the state of the first container is set to the uninitialized value while the first IRP is shared to the client terminal;

after completing the first IRP by cancelling the first IRP on the server and changing the state of the first container to the uninitialized value, receiving notification from the client terminal that the first IRP has been completed on the client terminal even though the first IRP has been completed on the server;

determining that the state of the first container is set to the uninitialized value; and

in response to determining that the state of the first container is set to the uninitialized value, preventing the first IRP from being completed again on the server.

2. The method of claim 1 , wherein determining that the state of the first container is set to the uninitialized value comprises one or both of:

determining that the state of the first container is no longer set to the shared value; or

determining that the state of the first container is currently set to the uninitialized value.

3. The method of 1 , wherein associating the first IRP with a first container comprises obtaining the first container from a container pool, and wherein changing the state of the first container to the uninitialized value comprises returning the first container to the container pool.

4. The method of claim 1 , wherein the state of the first container is set to the initialized value from the uninitialized value as part of associating the first IRP with the first container.

5. The method of claim 1 , wherein associating the first IRP with the first container comprises storing a pointer to the first IRP in the first container.

6. The method of claim 1 , wherein sharing the first IRP to the client terminal comprises sending information of the first IRP to a stub driver on the client terminal to allow the stub driver to create, from the information, an equivalent IRP on the client terminal.

7. The method of claim 6 , wherein the first IRP is shared to the client terminal over a remote display protocol connection.

8. The method of claim 1 , further comprising:

maintaining a second container that has a state that can be set to the plurality of values;

receiving a second IRP that pertains to the device;

in response to receiving the second IRP, associating the second IRP with the second container;

in conjunction with associating the second IRP with the second container, setting the state of the second container to the initialized value;

prior to sharing the second IRP to the client terminal, receiving a server-side request to cancel the second IRP; and

setting the state of the second container to the uninitialized value.

9. The method of claim 1 , further comprising:

maintaining a second container that has a state that can be set to the plurality of values;

receiving a second IRP that pertains to the device;

in response to receiving the second IRP, associating the second IRP with the second container;

in conjunction with associating the second IRP with the second container, setting the state of the second container to the initialized value;

sharing the second IRP to the client terminal;

in conjunction with sharing the second IRP to the client terminal, setting the state of the second container to the shared value;

receiving notification from the client terminal that the second IRP has been completed;

determining that the state of the second container is set to the shared value; and

completing the second IRP on the server.

10. The method of claim 9 , further comprising:

in conjunction with completing the second IRP on the server, setting the state of the second container to the uninitialized value.

11. One or more non-transitory computer storage media storing computer executable instructions which when executed on a server in a virtual desktop infrastructure environment implement a virtual bus driver that performs a method for managing I/O request packets (IRPs) that pertain to a device that is connected to a client terminal and redirected to the server, the method comprising:

maintaining a first container that has a state that can be set to a plurality of values including an uninitialized value, an initialized value and a shared value;

receiving, at the virtual bus driver, a first IRP that pertains to the device that is connected to the client terminal and redirected to the server;

in response to receiving the first IRP, associating the first IRP with the first container;

in conjunction with associating the first IRP with the first container, setting the state of the first container to the initialized value;

sharing the first IRP to the client terminal;

in conjunction with sharing the first IRP to the client terminal, setting the state of the first container to the shared value;

after sharing the first IRP to the client terminal but prior to receiving notification from the client terminal that the first IRP has been completed on the client terminal, receiving a server-side request to cancel the first IRP;

while the first IRP is shared to the client terminal, completing the first IRP by cancelling the first IRP on the server;

in conjunction with cancelling the first IRP and while the first IRP is shared to the client terminal, changing the state of the first container from the shared value to the uninitialized value such that the state of the first container is set to the uninitialized value while the first IRP is shared to the client terminal;

after completing the first IRP by cancelling the first IRP on the server and changing the state of the first container to the uninitialized value, receiving notification from the client terminal that the first IRP has been completed on the client terminal even though the first IRP has been completed on the server;

determining that the state of the first container is set to the uninitialized value; and

in response to determining that the state of the first container is set to the uninitialized value, preventing the first IRP from being completed again on the server.

12. The computer storage media of claim 11 , wherein determining that the state of the first container is set to the uninitialized value comprises one or both of:

determining that the state of the first container is no longer set to the shared value; or

determining that the state of the first container is currently set to the uninitialized value.

13. The computer storage media of claim 11 , wherein associating the first IRP with a first container comprises obtaining the first container from a container pool, and wherein changing the state of the first container to the uninitialized value comprises returning the first container to the container pool.

14. The computer storage media of claim 11 , wherein the state of the first container is set to the initialized value from the uninitialized value as part of associating the first IRP with the first container.

15. The computer storage media of claim 11 , wherein associating the first IRP with the first container comprises storing a pointer to the first IRP in the first container.

16. The computer storage media of claim 11 , wherein sharing the first IRP to the client terminal comprises sending information of the first IRP to a stub driver on the client terminal to allow the stub driver to create, from the information, an equivalent IRP on the client terminal.

17. The computer storage media of claim 16 , wherein the first IRP is shared to the client terminal over a remote display protocol connection.

18. The computer storage media of claim 11 , wherein the method further comprises:

maintaining a second container that has a state that can be set to the plurality of values;

receiving a second IRP that pertains to the device;

in response to receiving the second IRP, associating the second IRP with the second container;

in conjunction with associating the second IRP with the second container, setting the state of the second container to the initialized value;

prior to sharing the second IRP to the client terminal, receiving a server-side request to cancel the second IRP; and

setting the state of the second container to the uninitialized value.

19. The computer storage media of claim 11 , wherein the method further comprises:

maintaining a second container that has a state that can be set to the plurality of values;

receiving a second IRP that pertains to the device;

in response to receiving the second IRP, associating the second IRP with the second container;

in conjunction with associating the second IRP with the second container, setting the state of the second container to the initialized value;

sharing the second IRP to the client terminal;

in conjunction with sharing the second IRP to the client terminal, setting the state of the second container to the shared value;

receiving notification from the client terminal that the second IRP has been completed;

determining that the state of the second container is set to the shared value; and

completing the second IRP on the server.

20. The computer storage media of claim 19 , wherein the method further comprises:

in conjunction with completing the second IRP on the server, setting the state of the second container to the uninitialized value.

Assignments (9)
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 →
MERGER Recorded May 9, 2022
From: WYSE TECHNOLOGY L.L.C.
To: DELL MARKETING CORPORATION
Reel/Frame 059912/0109 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (041829/0873) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL INTERNATIONAL L.L.C.; 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/0724 →
RELEASE OF SECURITY INTEREST AT REEL 041808 FRAME 0516 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL INTERNATIONAL, L.L.C.; DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058297/0573 →
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 (NOTES) Recorded Feb 28, 2017
From: DELL INTERNATIONAL L.L.C.; 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 041829/0873 →
PATENT SECURITY INTEREST (CREDIT) Recorded Feb 24, 2017
From: DELL INTERNATIONAL, L.L.C.; 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 041808/0516 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2017
From: VAJRAVEL, GOKUL THIRUCHENGODE
To: WYSE TECHNOLOGY L.L.C.
Reel/Frame 041023/0830 →