IP Library Granted Patent US 11,449,625
Granted Patent B2
US 11,449,625 · App. 17/183,774 · Granted Sep 20, 2022

Optimized directory enumeration and data copy for client drive redirection in virtual desktops

Inventors: Weigang Huang (Beijing, CN); Eric Yueting Zhang (Beijing, CN); Hui Yuan (Beijing, CN); Hui Zhang (Beijing, CN)
Assignee: VMware, Inc.
G06F21/6218G06F21/629H04L67/141H04L67/563H04L67/568H04L67/01
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,449,625
App. No.
17/183,774
Granted
Sep 20, 2022
Kind
B2
Abstract

System and methods are provided for improved directory enumeration and data copy with shared client directories in virtual desktops by quickly and efficiently retrieving shared directory entries from the client device over a separate fast channel and caching them on the virtual desktop, where the directory entries can be available locally to applications in the virtual desktop for performing directory enumeration. The fast channel can further be utilized for efficiently transferring data in data copy operations between the client device and the virtual desktop.

Claims (88)

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;

by a client drive redirection (CDR) accelerator executing in the virtual desktop,

receiving directory enumeration information for a directory in the shared client drive from the client device;

caching the received directory enumeration information in a directory cache residing on the virtual desktop;

intercepting a request targeting the virtual drive made by an application running in the virtual desktop for at least a portion of the directory enumeration information; and

completing the request based on the directory enumeration information in the directory cache.

2. The method of claim 1 , wherein a fast channel client executing on the client device queries the shared client drive for the directory enumeration information and conveys the directory enumeration information to the CDR accelerator over a side channel.

3. The method of claim 1 , further comprising:

by the CDR accelerator, prior to receiving the directory enumeration information for the directory in the shared client drive from the client device,

intercepting a previous request targeting the virtual drive made by the application running in the virtual desktop for at least a portion of the directory enumeration information;

determining that the directory cache does not contain the directory enumeration information; and

in response to determining that the directory cache does not contain the directory enumeration information, requesting the directory enumeration information from the client device.

4. The method of claim 3 , wherein the request made by the application is a request to open the directory.

5. The method of claim 1 , further comprising:

receiving by the CDR accelerator a message from the client device informing it of a change to the directory enumeration information and applying the change to the cached directory enumeration information, wherein a file monitor executing on the client device,

intercepts a request from an application running on the client device to modify the directory on the client device or a file or subdirectory contained in the directory; and

determines the change to the directory enumeration information based on the modification.

6. The method of claim 1 , further comprising:

by the CDR accelerator,

intercepting a request from the application or a second application running in the virtual desktop to modify the directory in the virtual drive or a file or subdirectory contained in the directory;

determining a change to the directory enumeration information based on the modification; and

applying the change to the cached directory enumeration information.

7. The method of claim 1 , further comprising:

receiving a request at a file manager in the virtual desktop to copy file data from a source folder located in the shared client drive on the client device to a target folder on the virtual desktop;

preventing the file manager from performing the file data copy;

by a fast channel client operating on the client device, reading the file data from the source folder and conveying the data over a side channel to a fast channel server operating in the virtual desktop; and

by the fast channel server, writing the file data to the target folder.

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;

by a client drive redirection (CDR) accelerator executing in the virtual desktop,

receiving directory enumeration information for a directory in the shared client drive from the client device;

caching the received directory enumeration information in a directory cache residing on the virtual desktop;

intercepting a request targeting the virtual drive made by an application running in the virtual desktop for at least a portion of the directory enumeration information; and

completing the request based on the directory enumeration information in the directory cache.

9. The computing device of claim 8 , wherein a fast channel client executing on the client device queries the shared client drive for the directory enumeration information and conveys the directory enumeration information to the CDR accelerator over a side channel.

10. 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:

by the CDR accelerator, prior to receiving the directory enumeration information for the directory in the shared client drive from the client device,

intercepting a previous request targeting the virtual drive made by the application running in the virtual desktop for at least a portion of the directory enumeration information;

determining that the directory cache does not contain the directory enumeration information; and

in response to determining that the directory cache does not contain the directory enumeration information, requesting the directory enumeration information from the client device.

11. The computing device of claim 10 , wherein the request made by the application is a request to open the directory.

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:

receiving by the CDR accelerator a message from the client device informing it of a change to the directory enumeration information and applying the change to the cached directory enumeration information, wherein a file monitor executing on the client device,

intercepts a request from an application running on the client device to modify the directory on the client device or a file or subdirectory contained in the directory; and

determines the change to the directory enumeration information based on the modification.

13. 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:

by the CDR accelerator,

intercepting a request from the application or a second application running in the virtual desktop to modify the directory in the virtual drive or a file or subdirectory contained in the directory;

determining a change to the directory enumeration information based on the modification; and

applying the change to the cached directory enumeration information.

14. 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 request at a file manager in the virtual desktop to copy file data from a source folder located in the shared client drive on the client device to a target folder on the virtual desktop;

preventing the file manager from performing the file data copy;

by a fast channel client operating on the client device, reading the file data from the source folder and conveying the data over a side channel to a fast channel server operating in the virtual desktop; and

by the fast channel server, writing the file data to the target folder.

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;

by a client drive redirection (CDR) accelerator executing in the virtual desktop,

receiving directory enumeration information for a directory in the shared client drive from the client device;

caching the received directory enumeration information in a directory cache residing on the virtual desktop;

intercepting a request targeting the virtual drive made by an application running in the virtual desktop for at least a portion of the directory enumeration information; and

completing the request based on the directory enumeration information in the directory cache.

16. The non-transitory computer readable storage medium of claim 15 , wherein a fast channel client executing on the client device queries the shared client drive for the directory enumeration information and conveys the directory enumeration information to the CDR accelerator over a side channel.

17. 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:

by the CDR accelerator, prior to receiving the directory enumeration information for the directory in the shared client drive from the client device,

intercepting a previous request targeting the virtual drive made by the application running in the virtual desktop for at least a portion of the directory enumeration information;

determining that the directory cache does not contain the directory enumeration information; and

in response to determining that the directory cache does not contain the directory enumeration information, requesting the directory enumeration information from the client device.

18. 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 by the CDR accelerator a message from the client device informing it of a change to the directory enumeration information and applying the change to the cached directory enumeration information, wherein a file monitor executing on the client device,

intercepts a request from an application running on the client device to modify the directory on the client device or a file or subdirectory contained in the directory; and

determines the change to the directory enumeration information based on the modification.

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:

by the CDR accelerator,

intercepting a request from the application or a second application running in the virtual desktop to modify the directory in the virtual drive or a file or subdirectory contained in the directory;

determining a change to the directory enumeration information based on the modification; and

applying the change to the cached directory enumeration information.

20. 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 request at a file manager in the virtual desktop to copy file data from a source folder located in the shared client drive on the client device to a target folder on the virtual desktop;

preventing the file manager from performing the file data copy;

by a fast channel client operating on the client device, reading the file data from the source folder and conveying the data over a side channel to a fast channel server operating in the virtual desktop; and

by the fast channel server, writing the file data to the target folder.

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 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2021
From: HUANG, WEIGANG; ZHANG, ERIC YUETING; YUAN, HUI; ZHANG, HUI
To: VMWARE INC
Reel/Frame 055391/0303 →
Priority Claims (1)
WO PCT/CN2021/072445 · Jan 18, 2021 · international
Continuity (1)
Related Publication 20220229922A1 · Jul 21, 2022