IP Library Granted Patent US 8,918,427
Granted Patent B1
US 8,918,427 · App. 11/647,796 · Granted Dec 23, 2014

Virtualization of file input/output operations

Inventors: Kirk L. Searls (Maitland, FL); Derek Dickinson (Sanford, FL)
Assignee: Symantec Operating Corporation
G06F17/30
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 8,918,427
App. No.
11/647,796
Filed
Dec 29, 2006
Granted
Dec 23, 2014
Kind
B1
Examiner
WOO, ISAAC M
Art Unit
2155
USPC
707/600
Abstract

Various embodiments of a system and method for providing input/output virtualization for a file are disclosed. The system may include a filter program that intercepts a write request for a particular file and stores change information specifying the data and the write location indicated by the write request. However, the file itself is not modified. The filter program may also intercept a read request referencing the file and determine whether change information representing a write request to write data at the location specified by the read request has been previously stored. If so then the data specified by the change information is returned in response to the read request.

Claims (78)

1. A method for providing input/output virtualization for a first file, the method comprising:

intercepting, by a first program executing in a computer system, a first plurality of write requests, wherein each write request comprises a request to modify contents of the first file by writing data at a respective offset within the first file; and

storing, by the first program, for each of the write requests, change information in the computer system in response to the write request, wherein the change information specifies the data requested to be written within the first file and the offset indicated by the write request, wherein storing the change information records the write request without modifying the first file, and wherein the change information is stored in a location separate from the first file;

wherein the change information includes one or more data blocks, wherein each data block of the one or more data blocks is of a predetermined size.

2. The method of claim 1 ,

wherein a second program performs the first plurality of write requests by calling an application programming interface (API) of file system software;

wherein the first program intercepting the first plurality of write requests comprises the first program intercepting the first plurality of write requests in response to the second program calling the API of the file system software.

3. The method of claim 1 , further comprising:

the first program intercepting a first read request, wherein the first read request comprises a request to read data at a first offset in the first file;

the first program determining whether first change information representing a write request to write data at the first offset has been stored;

the first program returning the data specified by the first change information in response to the first read request if the first change information is found; and

the first program forwarding the first read request to file system software if the first change information is not found, wherein the file system software returns the data at the first offset in the first file in response to the first read request.

4. The method of claim 3 ,

wherein a second program performs the first read request by calling an application programming interface (API) of file system software;

wherein the first program intercepting the first read request comprises the first program intercepting the first read request in response to the second program calling the API of the file system software.

5. The method of claim 1 ,

wherein, for each of the write requests, said first program storing change information in response to the write request comprises the first program storing the change information in one or more of a second file and/or a database.

6. The method of claim 1 , further comprising:

storing information indicating that the change information for the first plurality of write requests is associated with a first ID;

the first program intercepting a second plurality of write requests;

the first program storing change information in response to each write request in the second plurality of write requests; and

the first program storing information indicating that the change information for the second plurality of write requests is associated with a second ID;

wherein the first ID identifies a first version of the first file and the second ID identifies a second version of the first file.

7. The method of claim 6 ,

wherein the first plurality of write requests includes a first write request to write first data at a first offset in the first file, wherein the first program stores first change information specifying the first data and the first offset, wherein the first change information is associated with the first ID;

wherein the second plurality of write requests includes a second write request to write second data at the first offset in the first file, wherein the first program stores second change information specifying the second data and the first offset, wherein the second change information is associated with the second ID.

8. The method of claim 7 , further comprising:

setting a version indicator to one of the first ID or the second ID;

the first program intercepting a read request, wherein the read request comprises a request to read data at the first offset in the first file;

the first program returning the first data specified by the first change information in response to the read request if the version indicator is set to the first ID;

the first program returning the second data specified by the second change information in response to the read request if the version indicator is set to the second ID.

9. The method of claim 1 ,

wherein the first program includes a minifilter driver;

wherein said intercepting the first plurality of write requests comprises the minifilter driver intercepting the first plurality of write requests.

10. The method of claim 1 , wherein the request to modify the contents of the first file by writing data comprises writing a M bytes of data, and wherein the predetermined size comprises N bytes of data, wherein M and N are positive integers, and M is less than N, and further comprising reading, by the first program, an additional number of bytes of the first file, wherein the additional number of bytes is dependent upon the difference between N and M.

11. A non-transitory computer-readable storage medium comprising program instructions executable to:

intercept a first plurality of write requests, wherein each write request comprises a request to modify contents of a first file by writing data at a respective offset within the first file; and

for each of the write requests, store change information in response to the write request, wherein the change information specifies the data requested to be written within the first file and the offset indicated by the write request, wherein storing the change information records the write request without modifying the first file, and wherein the change information is stored in a location separate from the first file;

wherein the change information includes one or more data blocks, wherein each data block of the one or more data blocks is of a predetermined size.

12. The non-transitory computer-readable storage medium of claim 11 ,

wherein a program performs the first plurality of write requests by calling an application programming interface (API) of file system software;

wherein said intercepting the first plurality of write requests comprises intercepting the first plurality of write requests in response to the program calling the API of the file system software.

13. The non-transitory computer-readable storage medium of claim 11 , wherein the program instructions are further executable to:

intercept a first read request, wherein the first read request comprises a request to read data at a first offset within the first file;

determine whether first change information representing a write request to write data at the first offset has been stored;

return the data specified by the first change information in response to the first read request if the first change information is found; and

forward the first read request to file system software if the first change information is not found, wherein the file system software returns the data at the first offset in the first file in response to the first read request.

14. The non-transitory computer-readable storage medium of claim 11 , wherein the program instructions are further executable to:

store information indicating that the change information for the first plurality of write requests is associated with a first ID;

intercept a second plurality of write requests;

store change information in response to each write request in the second plurality of write requests; and

store information indicating that the change information for the second plurality of write requests is associated with a second ID;

wherein the first ID identifies a first version of the first file and the second ID identifies a second version of the first file.

15. The non-transitory computer-readable storage medium of claim 14 ,

wherein the first plurality of write requests includes a first write request to write first data at a first offset in the first file, wherein first change information specifying the first data and the first offset is stored, wherein the first change information is associated with the first ID;

wherein the second plurality of write requests includes a second write request to write second data at the first offset in the first file, wherein second change information specifying the second data and the first offset is stored, wherein the second change information is associated with the second ID.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the program instructions are further executable to:

set a version indicator to one of the first ID or the second ID;

intercept a read request, wherein the read request comprises a request to read data at the first offset in the first file;

return the first data specified by the first change information in response to the read request if the version indicator is set to the first ID;

return the second data specified by the second change information in response to the read request if the version indicator is set to the second ID.

17. The non-transitory computer-readable storage medium of claim 11 , wherein the request to modify the contents of the first file by writing data comprises writing a M bytes of data, and wherein the predetermined size comprises N bytes of data, wherein M and N are positive integers, and M is less than N, and wherein the program instructions are further executable to read an additional number of bytes of the first file, wherein the additional number of bytes is dependent upon the difference between N and M.

18. A system comprising:

a processor; and

a memory medium storing program instructions;

wherein the processor is operable to execute the program instructions to:

intercept a first plurality of write requests, wherein each write request comprises a request to modify contents of a first file by writing data at a respective offset within the first file; and

for each of the write requests, store change information in response to the write request, wherein the change information specifies the data requested to be written within the first file and the offset indicated by the write request, wherein storing the change information records the write request without modifying the first file, and wherein the change information is stored in a location separate from the first file;

wherein the change information includes one or more data blocks, wherein each data block of the one or more data blocks is of a predetermined size.

19. The system of claim 18 ,

wherein a program performs the first plurality of write requests by calling an application programming interface (API) of file system software;

wherein said intercepting the first plurality of write requests comprises intercepting the first plurality of write requests in response to the program calling the API of the file system software.

20. The system of claim 18 , wherein the processor is further operable to execute the program instructions to:

intercept a first read request, wherein the first read request comprises a request to read data at a first offset in the first file;

determine whether first change information representing a write request to write data at the first offset has been stored;

return the data specified by the first change information in response to the first read request if the first change information is found; and

forward the first read request to file system software if the first change information is not found, wherein the file system software returns the data at the first offset in the first file in response to the first read request.

21. The system of claim 18 , wherein the request to modify the contents of the first file by writing data comprises writing a M bytes of data, and wherein the predetermined size comprises N bytes of data, wherein M and N are positive integers, and M is less than N, and wherein the processor is further operable to execute the program instructions to read an additional number of bytes of the first file, wherein the additional number of bytes is dependent upon the difference between N and M.

Assignments (15)
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER AND CHANGE OF NAME Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC; VERITAS TECHNOLOGIES LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038455/0752 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 019872 FRAME 979. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNEE IS SYMANTEC OPERATING CORPORATION. Recorded Mar 5, 2012
From: VERITAS OPERATING CORPORATION
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 027819/0462 →
CHANGE OF NAME Recorded Sep 26, 2007
From: VERITAS OPERATING CORPORATION
To: SYMANTEC CORPORATION
Reel/Frame 019872/0979 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 29, 2006
From: SEARLS, KIRK L.; DICKINSON, DEREK
To: VERITAS OPERATING CORPORATION
Reel/Frame 018770/0825 →