Method and system for providing on-demand services through a virtual file system at a computing device
First Claim
1. A computer-implemented method, comprising:
- at a computing device;
receiving, from an application, a request for a file associated with an instance of a virtual file system, wherein the file has multiple revisions and the request identifies a particular revision to the file and the virtual file system includes metadata of the multiple revisions to the requested file;
creating a commit tree based on metadata blocks associated with the particular revision of the virtual file system and wherein the particular revision to the requested file is associated with a file node of the commit tree, wherein the commit tree includes all subsequent operations of the file;
checking the metadata to identify a first set of data blocks of the particular revision to the requested file that is not present at the computing device, further including looking up the commit tree associated with the instance of the virtual file system for location information of the first set of data blocks associated with the particular revision to the requested file, wherein the commit tree includes multiple branches, each branch having an associated list of block identifiers corresponding to a respective revision to the file and a file revision identifier referencing an earlier revision to the file, and looking up the commit tree including laterally traversing the multiple branches using respective file revision identifiers until a list of block identifiers corresponding to the first set of data blocks of the particular revision to the requested file is identified, wherein the checking the metadata includes identifying a second set of data blocks of the particular revision to the requested file that is already present at the computing device;
retrieving the first set of data blocks from at least one of a plurality of storage devices associated with the virtual file system using the identified list of block identifiers corresponding to the first set of data blocks of the particular revision to the requested file and in accordance with the location information of the first set of data blocks;
generating a copy of the particular revision to the requested file using the retrieved first set of data blocks, wherein the generating a copy of the particular revision to the requested file includes merging the first set of data blocks of the particular revision to the requested file with the second set of data blocks, wherein the merging further includes replacing an old data block in the second set with a new data block in the first set if the new data block includes at least one update to the old data block;
and returning the generated copy of the particular revision to the requested file to the requesting application.
1 Assignment
0 Petitions
Accused Products
Abstract
A method of providing on-demand service through a virtual file system is implemented at a computing device. In response to receiving a request for a file associated with an instance of the virtual file system, the computing device checks the metadata of the requested file in the virtual file system to identify a first set of data blocks of the requested file that is not present at the computing device and retrieves the first set of data blocks from at least one of a plurality of storage devices associated with the virtual file system. The computing device generates a copy of the requested file using the retrieved first set of data blocks and returns the generated copy of the requested file to the requesting application or user.
-
Citations
19 Claims
-
1. A computer-implemented method, comprising:
at a computing device; receiving, from an application, a request for a file associated with an instance of a virtual file system, wherein the file has multiple revisions and the request identifies a particular revision to the file and the virtual file system includes metadata of the multiple revisions to the requested file; creating a commit tree based on metadata blocks associated with the particular revision of the virtual file system and wherein the particular revision to the requested file is associated with a file node of the commit tree, wherein the commit tree includes all subsequent operations of the file; checking the metadata to identify a first set of data blocks of the particular revision to the requested file that is not present at the computing device, further including looking up the commit tree associated with the instance of the virtual file system for location information of the first set of data blocks associated with the particular revision to the requested file, wherein the commit tree includes multiple branches, each branch having an associated list of block identifiers corresponding to a respective revision to the file and a file revision identifier referencing an earlier revision to the file, and looking up the commit tree including laterally traversing the multiple branches using respective file revision identifiers until a list of block identifiers corresponding to the first set of data blocks of the particular revision to the requested file is identified, wherein the checking the metadata includes identifying a second set of data blocks of the particular revision to the requested file that is already present at the computing device; retrieving the first set of data blocks from at least one of a plurality of storage devices associated with the virtual file system using the identified list of block identifiers corresponding to the first set of data blocks of the particular revision to the requested file and in accordance with the location information of the first set of data blocks; generating a copy of the particular revision to the requested file using the retrieved first set of data blocks, wherein the generating a copy of the particular revision to the requested file includes merging the first set of data blocks of the particular revision to the requested file with the second set of data blocks, wherein the merging further includes replacing an old data block in the second set with a new data block in the first set if the new data block includes at least one update to the old data block; and returning the generated copy of the particular revision to the requested file to the requesting application. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
18. A computing device, comprising:
-
one or more processors;
memory; andone or more programs stored in the memory for execution by the one or more processors, the one or more programs comprising instructions for; receiving, from an application, a request for a file associated with an instance of a virtual file system, wherein the file has multiple revisions and the request identifies a particular revision to the file and the virtual file system includes metadata of the multiple revisions to the requested file; creating a commit tree based on metadata blocks associated with the particular revision of the virtual file system and wherein the particular revision to the requested file is associated with a file node of the commit tree, wherein the commit tree includes all subsequent operations of the file; checking the metadata to identify a first set of data blocks of the particular revision to the requested file that is not present at the computing device, further including looking up the commit tree associated with the instance of the virtual file system for location information of the first set of data blocks associated with the particular revision to the requested file, wherein the commit tree includes multiple branches, each branch having an associated list of block identifiers corresponding to a respective revision to the file and a file revision identifier referencing an earlier revision to the file, and looking up the commit tree including laterally traversing the multiple branches using respective file revision identifiers until a list of block identifiers corresponding to the first set of data blocks of the particular revision to the requested file is identified, wherein the checking the metadata includes identifying a second set of data blocks of the particular revision to the requested file that is already present at the computing device; retrieving the first set of data blocks from at least one of a plurality of storage devices associated with the virtual file system using the identified list of block identifiers corresponding to the first set of data blocks of the particular revision to the requested file and in accordance with the location information of the first set of data blocks; generating a copy of the particular revision to the requested file using the retrieved first set of data blocks, wherein the generating a copy of the particular revision to the requested file includes merging the first set of data blocks of the particular revision to the requested file with the second set of data blocks, wherein the merging further includes replacing an old data block in the second set with a new data block in the first set if the new data block includes at least one update to the old data block; and returning the generated copy of the particular revision to the requested file to the requesting application.
-
-
19. A non-transitory computer readable storage medium storing one or more programs configured for execution by a computing device having one or more processors and memory storing one or more programs for execution by the one or more processors, the one or more programs comprising instructions to:
-
receive, from an application, a request for a file associated with an instance of a virtual file system, wherein the file has multiple revisions and the request identifies a particular revision to the file and the virtual file system includes metadata of the multiple revisions to the requested file; creating a commit tree based on metadata blocks associated with the particular revision of the virtual file system and wherein the particular revision to the requested file is associated with a file node of the commit tree, wherein the commit tree includes all subsequent operations of the file; check the metadata to identify a first set of data blocks of the particular revision to the requested file that is not present at the computing device, further including looking up the commit tree associated with the instance of the virtual file system for location information of the first set of data blocks associated with the particular revision to the requested file, wherein the commit tree includes multiple branches, each branch having an associated list of block identifiers corresponding to a respective revision to the file and a file revision identifier referencing an earlier revision to the file, and looking up the commit tree including laterally traversing the multiple branches using respective file revision identifiers until a list of block identifiers corresponding to the first set of data blocks of the particular revision to the requested file is identified, wherein the checking the metadata includes identifying a second set of data blocks of the particular revision to the requested file that is already present at the computing device; retrieve the first set of data blocks from at least one of a plurality of storage devices associated with the virtual file system using the identified list of block identifiers corresponding to the first set of data blocks of the particular revision to the requested file and in accordance with the location information of the first set of data blocks; generate a copy of the particular revision to the requested file using the retrieved first set of data blocks, wherein the generating a copy of the particular revision to the requested file includes merging the first set of data blocks of the particular revision to the requested file with the second set of data blocks, wherein the merging further includes replacing an old data block in the second set with a new data block in the first set if the new data block includes at least one update to the old data block; and return the generated copy of the particular revision to the requested file to the requesting application.
-
Specification