IP Library Granted Patent US 10,789,014
Granted Patent B2
US 10,789,014 · App. 16/057,702 · Granted Sep 29, 2020

Preventing cross-volume file moves in an overlay optimizer

Inventors: Gokul Thiruchengode Vajravel (Rayasandra Bengaluru, IN); Ankit Kumar (Deoghar, IN); Puneet Kaushik (Fremont, CA)
Assignee: Dell Products L.P.
G06F3/0659G06F3/061G06F3/0619G06F3/0644G06F3/0673G06F16/2365
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,789,014
App. No.
16/057,702
Granted
Sep 29, 2020
Kind
B2
Abstract

An overlay optimizer can prevent cross-volume moves to optimize the performance of a write filter. The overlay optimizer can be configured to detect when a file move is being attempted and can modify the handling of the file move so that a cross-volume move is not performed. In the case where the file move would result in a file being moved from the volume where the overlay cache is implemented, the overlay optimizer can create a copy of the target directory tree in the overlay cache and redirect the move to the newly created directory. In the case where the file move would result in a file being moved to the volume where the overlay cache is implemented, the overlay optimizer can forgo redirection so that the file will be moved within the same volume.

Claims (59)

1. A method, performed by an overlay optimizer, for preventing a cross-volume move, the method comprising:

receiving a second input/output (I/O) operation for creating a file in a folder;

determining that the second I/O operation represents a move operation such that the file to be created in the folder is a copy of a file that exists on a source volume;

in response to determining that the second I/O operation represents a move operation, determining that the source volume is a protected volume that is protected from modification by a write filter and determining that the folder exists on the source volume; and

in response to determining that the source volume is a protected volume that is protected from modification by a write filter and that the folder exists on the source volume, causing the second I/O operation to be completed without performing a cross-volume move.

2. The method of claim 1 , wherein causing the second I/O operation to be completed without performing a cross-volume move comprises forgoing redirection of the second I/O operation to a separate volume on which an overlay cache is implemented.

3. The method of claim 2 , wherein the second I/O operation is an IRP_MJ_CREATE operation and determining that the second I/O operation represents a move operation comprises determining that the SL_OPEN_TARGET_DIRECTORY flag is set in the IRP_MJ_CREATE operation.

4. The method of claim 2 , wherein determining that the source volume is a protected volume that is protected from modification by a write filter comprises:

receiving a first I/O operation for opening a file that exists on the source volume;

obtaining one or more identifiers associated with the first I/O operation and storing an association between the one or more identifiers and the source volume;

in response to receiving the second I/O operation, obtaining one or more identifiers associated with the second I/O operation;

determining that the one or more identifiers associated with the second I/O operation match the one or more identifiers associated with the first I/O operation; and

determining that the source volume associated with the one or more matching identifiers is the protected volume.

5. The method of claim 1 , further comprising:

determining that the second I/O request is associated with a separate volume on which an overlay cache is implemented.

6. The method of claim 5 , wherein causing the second I/O operation to be completed without performing a cross-volume move comprises:

creating a copy of the folder on a separate volume on which an overlay cache is implemented; and

redirecting the second I/O operation to cause the file to be moved to the copy of the folder that was created on the separate volume.

7. The method of claim 6 , wherein creating the copy of the folder comprises creating a directory tree that contains the copy of the folder, the directory tree matching a directory tree containing the folder on the source volume.

8. The method of claim 5 , wherein determining that the second I/O request is associated with the separate volume on which the overlay cache is implemented comprises accessing a FLT_RELATED_OBJECTS structure associated with the second I/O operation.

9. The method of claim 5 , wherein determining that the second I/O operation represents a move operation comprises determining that the second I/O operation is an IRP_MJ_CREATE operation that has the SL_OPEN_TARGET_DIRECTORY flag set.

10. The method of claim 5 , wherein determining that the source volume is a protected volume that is protected from modification by a write filter comprises:

receiving a first I/O operation for opening a file that exists on the source volume;

obtaining one or more identifiers associated with the first I/O operation and storing an association between the one or more identifiers and the source volume;

in response to receiving the second I/O operation, obtaining one or more identifiers associated with the second I/O operation;

determining that the one or more identifiers associated with the second I/O operation match the one or more identifiers associated with the first I/O operation; and

determining that the source volume associated with the one or more matching identifiers is the protected volume.

11. A method, performed by an overlay optimizer that includes an overlay-managing write filter, for preventing a cross-volume move from being performed when a file is moved from a folder that exists on a protected volume to a folder that exists on an overlay cache implemented on a separate volume, the method comprising:

receiving a first input/output (I/O) operation that attempts to open a file stored in a first folder;

obtaining a process ID associated with the first I/O operation;

determining a source volume where the file is stored and storing an association between the process ID and the source volume;

receiving a second I/O operation that attempts to create a file in a second folder;

obtaining a process ID associated with the second I/O operation;

determining that the process ID associated with the second I/O operation matches the process ID associated with the first I/O operation;

determining that the source volume is a protected volume;

determining whether the second folder exists on the protected volume such that:

when the second folder exists on the protected volume, the overlay optimizer allows the second I/O operation to create the file in the second folder on the protected volume;

whereas

when the second folder does not exist on the protected volume, the overlay optimizer redirects the second I/O operation to cause the file to be created in an overlay cache implemented on a separate volume.

12. The method of claim 11 , wherein the first and second I/O operations are IRP_MJ_CREATE operations.

13. The method of claim 12 , wherein obtaining the process ID comprises obtaining a thread ID and then employing the thread ID to obtain the process ID.

14. The method of claim 11 , wherein receiving the second I/O operation that attempts to create the file in the second folder comprises determining that the second I/O operation pertains to a move operation.

15. The method of claim 11 , wherein determining whether the second folder exists on the protected volume comprises attempting to open the second folder on the protected volume.

16. A method, performed by an overlay optimizer that includes an overlay-managing write filter, for preventing a cross-volume move from being performed when a file is moved to a folder that exists on a protected volume from a folder that exists on an overlay cache implemented on a separate volume, the method comprising:

receiving a first input/output (I/O) operation that attempts to open a file stored in a first folder;

obtaining a process ID associated with the first I/O operation;

determining a source volume where the file is stored and storing an association between the process ID and the source volume;

receiving a second I/O operation that attempts to create a file in a second folder;

determining that the second I/O operation is associated with the separate volume on which the overlay cache is implemented;

obtaining a process ID associated with the second I/O operation;

determining that the process ID associated with the second I/O operation matches the process ID associated with the first I/O operation;

determining that the source volume is the protected volume;

determining that the second folder exists on the protected volume;

creating the second folder on the separate volume; and

modifying the second I/O operation to cause the file to be created in the second folder on the separate volume rather than in the second folder on the protected volume.

17. The method of claim 16 , wherein the first and second I/O operations are IRP_MJ_CREATE operations.

18. The method of claim 16 , wherein receiving the second I/O operation that attempts to create the file in the second folder comprises determining that the second I/O operation pertains to a move operation.

19. The method of claim 16 , wherein modifying the second I/O operation comprises modifying a file path in the second I/O operation.

20. The method of claim 16 , wherein creating the second folder on the separate volume comprises creating a directory tree that includes the second folder, the created directory tree matching a directory tree that includes the second folder on the protected volume.

Assignments (5)
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 →
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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2018
From: VAJRAVEL, GOKUL THIRUCHENGODE; KUMAR, ANKIT; KAUSHIK, PUNEET
To: DELL PRODUCTS L.P.
Reel/Frame 046584/0418 →