IP Library Granted Patent US 12,287,744
Granted Patent B2
US 12,287,744 · App. 18/309,385 · Granted Apr 29, 2025

Merged input/output for accelerating directory listing phase in client drive redirection

Inventors: Wu Bai (Beijing, CN); Haiwei Zhao (Beijing, CN); Weigang Huang (Beijing, CN); Feng Yan (Beijing, CN); Kun Shi (Beijing, CN)
Assignee: Omnissa, LLC
G06F13/20G06F16/144G06F16/172G06F2213/40
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 12,287,744
App. No.
18/309,385
Granted
Apr 29, 2025
Kind
B2
Abstract

System and methods are provided for improved directory enumeration on shared client directories in virtual desktops. A merged I/O request containing multiple expected I/O requests for enumerating a directory can be produced on the virtual desktop. The merged I/O request can be conveyed to the client device and a merged I/O response containing multiple I/O responses to the expected I/O requests can be received from the client device. The received I/O responses can be stored in cache memory on the virtual desktop and used to respond to subsequent queries for enumerating the directory on the virtual desktop.

Claims (77)

1. A method, comprising:

establishing, over a network, a virtual desktop session between a virtual desktop executing on a host server and a client device;

presenting a virtual drive in the virtual desktop corresponding to a shared client drive located on the client device, wherein a redirection driver executing in the virtual desktop is configured to route input and output requests targeting the virtual drive made by applications running in the virtual desktop to the shared client drive on the client device;

receiving a request in the virtual desktop to enumerate a directory in the shared client drive;

on the virtual desktop, determining one or more I/O requests expected to be produced by the virtual desktop operating system (OS) to enumerate the directory;

producing a merged I/O request on the virtual desktop by embedding multiple I/O requests into a single packet, the merged I/O request comprising the one or more expected I/O requests; and

conveying the merged I/O request to the client device.

2. The method of claim 1 , further comprising:

receiving a response to the merged I/O request at the virtual desktop, the response containing one or more I/O responses to the one or more expected I/O requests;

caching the received one or more I/O responses in a cache residing on the virtual desktop;

receiving an I/O request for enumeration information from the virtual desktop operating system; and

completing the I/O request using the cached I/O response.

3. The method of claim 1 , wherein the merged I/O request comprises one or more query directory I/O requests expected to be produced by the virtual desktop OS to enumerate the directory, each query directory I/O request requesting metadata of a different file contained in the directory.

4. The method of claim 3 , further comprising:

receiving a response to the merged I/O request at the virtual desktop, the response containing one or more query directory I/O responses to the one or more expected query directory I/O requests;

caching the received one or more query directory I/O responses in a cache residing on the virtual desktop;

receiving a query directory I/O request for metadata of a file in the directory from the virtual desktop operating system; and

completing the query directory I/O request using the cached one or more query directory I/O responses.

5. The method of claim 1 , further comprising:

in the virtual desktop, receiving from the virtual desktop OS a query directory I/O request for metadata of a first file in the directory;

wherein the determined one or more expected I/O requests comprise one or more query directory I/O requests expected to be produced by the virtual desktop OS to enumerate the directory, each query directory I/O request requesting metadata of a different file contained in the directory; and

producing the merged I/O request by appending the determined one or more expected query directory I/O requests to the received query directory I/O request.

6. The method of claim 1 , wherein the merged I/O request comprises one or more query information I/O requests expected to be produced by the virtual desktop OS to enumerate the directory, each query information I/O request requesting a different type of metadata about the directory.

7. The method of claim 2 , wherein the response is produced on the client device by:

executing a plurality of the expected I/O requests on the client device to produce a plurality of corresponding I/O responses; and

merging the plurality of I/O responses into a single packet to produce the response.

8. A computing device, comprising:

at least one processor; and

memory including instructions that, when executed by the at least one processor, cause the computing device to perform the steps of:

establishing, over a network, a virtual desktop session between a virtual desktop executing on a host server and a client device;

presenting a virtual drive in the virtual desktop corresponding to a shared client drive located on the client device, wherein a redirection driver executing in the virtual desktop is configured to route input and output requests targeting the virtual drive made by applications running in the virtual desktop to the shared client drive on the client device;

receiving a request in the virtual desktop to enumerate a directory in the shared client drive;

on the virtual desktop, determining one or more I/O requests expected to be produced by the virtual desktop operating system (OS) to enumerate the directory;

producing a merged I/O request on the virtual desktop by embedding multiple I/O requests into a single packet, the merged I/O request comprising the one or more expected I/O requests; and

conveying the merged I/O request to the client device.

9. The computing device of claim 8 , wherein the memory further includes instructions that when executed by the at least one processor, cause the computing device to perform the steps of:

receiving a response to the merged I/O request at the virtual desktop, the response containing one or more I/O responses to the one or more expected I/O requests;

caching the received one or more I/O responses in a cache residing on the virtual desktop;

receiving an I/O request for enumeration information from the virtual desktop operating system; and

completing the I/O request using the cached I/O response.

10. The computing device of claim 8 , wherein the merged I/O request comprises one or more query directory I/O requests expected to be produced by the virtual desktop OS to enumerate the directory, each query directory I/O request requesting metadata of a different file contained in the directory.

11. The computing device of claim 10 , wherein the memory further includes instructions that when executed by the at least one processor, cause the computing device to perform the steps of:

receiving a response to the merged I/O request at the virtual desktop, the response containing one or more query directory I/O responses to the one or more expected query directory I/O requests;

caching the received one or more query directory I/O responses in a cache residing on the virtual desktop;

receiving a query directory I/O request for metadata of a file in the directory from the virtual desktop operating system; and

completing the query directory I/O request using the cached one or more query directory I/O responses.

12. The computing device of claim 8 , wherein the memory further includes instructions that when executed by the at least one processor, cause the computing device to perform the steps of:

in the virtual desktop, receiving from the virtual desktop OS a query directory I/O request for metadata of a first file in the directory;

wherein the determined one or more expected I/O requests comprise one or more query directory I/O requests expected to be produced by the virtual desktop OS to enumerate the directory, each query directory I/O request requesting metadata of a different file contained in the directory; and

producing the merged I/O request by appending the determined one or more expected query directory I/O requests to the received query directory I/O request.

13. The computing device of claim 8 , wherein the merged I/O request comprises one or more query information I/O requests expected to be produced by the virtual desktop OS to enumerate the directory, each query information I/O request requesting a different type of metadata about the directory.

14. The computing device of claim 9 , wherein the response is produced on the client device by:

executing a plurality of the expected I/O requests on the client device to produce a plurality of corresponding I/O responses; and

merging the plurality of I/O responses into a single packet to produce the response.

15. A non-transitory computer readable storage medium comprising one or more sequences of instructions, the instructions when executed by one or more processors causing the one or more processors to execute the operations of:

establishing, over a network, a virtual desktop session between a virtual desktop executing on a host server and a client device;

presenting a virtual drive in the virtual desktop corresponding to a shared client drive located on the client device, wherein a redirection driver executing in the virtual desktop is configured to route input and output requests targeting the virtual drive made by applications running in the virtual desktop to the shared client drive on the client device;

receiving a request in the virtual desktop to enumerate a directory in the shared client drive;

on the virtual desktop, determining one or more I/O requests expected to be produced by the virtual desktop operating system (OS) to enumerate the directory;

producing a merged I/O request on the virtual desktop by embedding multiple I/O requests into a single packet, the merged I/O request comprising the one or more expected I/O requests; and

conveying the merged I/O request to the client device.

16. The non-transitory computer readable storage medium of claim 15 , further comprising instructions that when executed by the one or more processors cause the one or more processors to execute the operations of:

receiving a response to the merged I/O request at the virtual desktop, the response containing one or more I/O responses to the one or more expected I/O requests;

caching the received one or more I/O responses in a cache residing on the virtual desktop;

receiving an I/O request for enumeration information from the virtual desktop operating system; and

completing the I/O request using the cached I/O response.

17. The non-transitory computer readable storage medium of claim 15 , wherein the merged I/O request comprises one or more query directory I/O requests expected to be produced by the virtual desktop OS to enumerate the directory, each query directory I/O request requesting metadata of a different file contained in the directory.

18. The non-transitory computer readable storage medium of claim 17 , further comprising instructions that when executed by the one or more processors cause the one or more processors to execute the operations of:

receiving a response to the merged I/O request at the virtual desktop, the response containing one or more query directory I/O responses to the one or more expected query directory I/O requests;

caching the received one or more query directory I/O responses in a cache residing on the virtual desktop;

receiving a query directory I/O request for metadata of a file in the directory from the virtual desktop operating system; and

completing the query directory I/O request using the cached one or more query directory I/O responses.

19. The non-transitory computer readable storage medium of claim 15 , further comprising instructions that when executed by the one or more processors cause the one or more processors to execute the operations of:

in the virtual desktop, receiving from the virtual desktop OS a query directory I/O request for metadata of a first file in the directory;

wherein the determined one or more expected I/O requests comprise one or more query directory I/O requests expected to be produced by the virtual desktop OS to enumerate the directory, each query directory I/O request requesting metadata of a different file contained in the directory; and

producing the merged I/O request by appending the determined one or more expected query directory I/O requests to the received query directory I/O request.

20. The non-transitory computer readable storage medium of claim 15 , wherein the merged I/O request comprises one or more query information I/O requests expected to be produced by the virtual desktop OS to enumerate the directory, each query information I/O request requesting a different type of metadata about the directory.

Assignments (4)
PATENT ASSIGNMENT Recorded Aug 5, 2024
From: VMWARE LLC
To: OMNISSA, LLC
Reel/Frame 068327/0365 →
SECURITY INTEREST Recorded Jul 3, 2024
From: OMNISSA, LLC
To: UBS AG, STAMFORD BRANCH
Reel/Frame 068118/0004 →
CHANGE OF NAME Recorded Apr 25, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067239/0402 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 28, 2023
From: BAI, WU; ZHAO, HAIWEI; HUANG, WEIGANG; YAN, FENG; SHI, KUN
To: VMWARE INC
Reel/Frame 063482/0464 →