Legal claims defining the scope of protection, as filed with the USPTO.
1. In a data processing system having a processor and access to a file storage and file management facility, a processor implemented method comprising: selecting an original inode corresponding to an original file, the original inode having one or more data block address links; creating a clone inode; receiving a name entry and target directory for the clone inode; in response to receiving the name entry, inserting a directory entry containing the name entry into the target directory; initializing the clone inode as a clone parent that is immutable by: copying the one or more data block address links and a header of the original inode to the clone inode; updating a block count of the clone inode to equal the number of data block address links, wherein the block count of the clone inode is a same number of data blocks as is stored in the original inode; setting a link count in the clone inode to two (2); and copying inode time stamps and permission bits of the original inode to the clone inode; and updating an inode map to identify the clone inode as in-use.
2. The method of claim 1 , wherein initializing the clone inode as a clone parent further comprises: determining owner credentials of a currently executing operation; setting an owner field of the clone inode based on the owner credentials of the currently executing operation; and logging one or more initialization steps as an atomic transaction.
3. The method of claim 1 , further comprising: updating each of the one or more data block address links of the original inode to one or more dittos wherein the one or more dittos corresponds to the one or more data block address links and indicates that corresponding data or metadata in the original file has not yet been modified; setting a block count of the original inode to zero, wherein the block count of the original inode represents a number of data block address links stored in the original inode; and recording the clone inode as the clone parent of the original inode.
4. The method of claim 1 , further comprising: identifying an owner of the clone inode; determining if the owner of the clone inode is different from an owner of the original inode; and in response to the owner of the clone inode being different from the owner of the original inode, transferring a disk block quota of the original inode to the owner of the clone inode.
5. The method of claim 1 , wherein the allocated clone inode points to an existing file, the method further comprising: storing a clone attribute in the existing file; and marking the existing file as a clone parent.
6. The method of claim 1 , further comprising: allocating a new inode as a new clone; receiving a new name entry and target directory for the new inode; in response to receiving the new name entry and the target directory for the new inode, inserting a directory entry containing the new name entry into the target directory for the new inode; initializing the new inode, wherein the initializing further comprises: copying the header of the clone inode to the new inode; setting one or more dittos for the one or more data block address links of the clone inode; setting a link count of the new inode to one (1); setting a block count of the new inode to zero; recording the clone inode as the clone parent of the new inode; and setting a creation time of the new inode to a current time; incrementing the link count of the clone inode; and updating the inode map to identify the new inode as in-use.
7. The method of claim 6 , further comprising: in response to receiving a deletion request for the new inode: reading the link count of the clone inode; in response to the link count of the clone inode being equal to one (1): deleting the new inode, and decrementing the link count of the clone inode; and in response to the link count of the clone inode not being equal to one (1), ignoring the deletion request.
8. The method of claim 1 , further comprising in response to receiving a new data update to the original file: replacing the dittos of the original inode with links to copies of the original data blocks; updating the original inode with the new data update; and updating the block count of the original inode.
9. The method of claim 1 , further comprising: in response to a Data Management Application moving the one or more cloned files from the storage of the data processing system to offline storage and issuing a read of data in any cloned file, performing an invisible read of data indirectly linked via the dittos of the clone inode; in response to the Data Management Application issuing a write of data in any cloned file, silently ignoring the write if the write would cause one or more dittos of the clone inode to be overwritten; and in response to the Data Management Application requesting migration of the one or more cloned files from the offline storage to the storage of the data processing system based on a last access time, autonomously updating the last access time of the cloned inode.
10. A data processing system, comprising: a local processor; a file storage and a file management facility accessible to the local processor; and processing logic executing on the processor for enabling the data processing system to perform the functions of: selecting an original inode corresponding to an original file, the original inode having one or more data block address links; creating a clone inode; receiving a name entry and target directory for the clone inode; in response to receiving the name entry, inserting a directory entry containing the name entry into the target directory; initializing the clone inode as a clone parent that is immutable by: copying the one or more data block address links and a header of the original inode to the clone inode; updating a block count of the clone inode to equal the number of data block address links, wherein the block count of the clone inode is a same number of data blocks as is stored in the original inode; setting a link count in the clone inode to two (2); copying inode time stamps and permission bits of the original inode to the clone inode; and updating an inode map to identify the clone inode as in-use.
11. The data processing system of claim 10 , wherein initializing the clone inode as a clone parent further comprises processing logic for: determining owner credentials of a currently executing operation; setting an owner field of the clone inode based on the owner credentials of the currently executing operation; and logging one or more initialization steps as an atomic transaction.
12. The data processing system of claim 10 , the processing logic further comprising logic for: updating each of the one or more data block address links of the original inode to one or more dittos wherein the one or more dittos corresponds to the one or more data block address links and indicates that corresponding data or metadata in the original file has not yet been modified; setting a block count of the original inode to zero, wherein the block count of the original inode represents a number of data block address links stored in the original inode; and recording the clone inode as the clone parent of the original inode.
13. The data processing system of claim 10 , the processing logic further comprising logic for: identifying an owner of the clone inode; determining if the owner of the clone inode is different from an owner of the original inode; and in response to the owner of the clone inode being different from the owner of the original inode, transferring a disk block quota of the original inode to the owner of the clone inode.
14. The data processing system of claim 10 , wherein the allocated clone inode points to an existing file, the processing logic further comprising logic for: storing a clone attribute in the existing file; and marking the existing file as a clone parent.
15. The data processing system of claim 10 , the processing logic further comprising logic for: allocating a new inode as a new clone; receiving a new name entry and target directory for the new inode; in response to receiving the new name entry and the target directory for the new inode, inserting a directory entry containing the new name entry into the target directory for the new inode; initializing the new inode, wherein the initializing further comprises: copying the header of the clone inode to the new inode, setting one or more dittos for the one or more data block address links of the clone inode, setting a link count of the new inode to one (1), setting a block count of the new inode to zero, recording the clone inode as the clone parent of the new inode, and setting a creation time of the new inode to a current time; incrementing the link count of the clone inode; and updating the inode map to identify the new inode as in-use.
16. The data processing system of claim 15 , the processing logic further comprising logic for in response to receiving a deletion request for the new inode: reading the link count of the clone inode; in response to the link count of the clone inode being equal to one (1): deleting the new inode, and decrementing the link count of the clone inode; and in response to the link count of the clone inode not being equal to one (1), ignoring the deletion request.
17. The data processing system of claim 10 , the processing logic further comprising logic for in response to receiving a new data update to the original file: replacing the dittos of the original inode with links to copies of the original data blocks; updating the original inode with the new data update; and updating the block count of the original inode.
18. The data processing system of claim 10 , the processing logic further comprising logic for: in response to a Data Management Application moving the one or more cloned files from the storage of the data processing system to offline storage and issuing a read of data in any cloned file, performing an invisible read of data indirectly linked via the dittos of the clone inode; in response to a Data Management Application issuing a write of data in any cloned file, silently ignoring the write if the write would cause one or more dittos of the clone inode to be overwritten; and in response to a Data Management Application requesting migration of the one or more cloned files from the offline storage to the storage of the data processing system based on a last access time, autonomously updating the last access time of the cloned inode.
19. A tangible computer-readable storage device having a plurality of instructions processable by a machine embodied therein, wherein the plurality of instructions, when processed by the machine, cause the machine to perform a method, the method comprising: selecting an original inode corresponding to an original file, the original inode having one or more data block address links; creating a clone inode; receiving a name entry and target directory for the clone inode; in response to receiving the name entry, inserting a directory entry containing the name entry into the target directory; initializing the clone inode as a clone parent that is immutable by: copying the one or more data block address links and a header of the original inode to the clone inode, updating a block count of the clone inode to equal the number of data block address links, wherein the block count of the clone inode is a same number of data blocks as is stored in the original inode, setting a link count in the clone inode to two (2), copying inode time stamps and permission bits of the original inode to the clone inode; and updating an inode map to identify the clone inode as in-use.
20. The tangible computer-readable storage device of claim 19 , the initializing the clone inode as a clone parent further comprising: determining owner credentials of a currently executing operation; setting an owner field of the clone inode based on the owner credentials of the currently executing operation; and logging one or more initialization steps as an atomic transaction.
21. The tangible computer-readable storage device of claim 19 , the plurality of instructions further comprising instructions for: updating each of the one or more data block address links of the original inode to one or more dittos wherein the one or more dittos corresponds to the one or more data block address links and indicates that corresponding data or metadata in the original file has not yet been modified; setting a block count of the original inode to zero, wherein the block count of the original inode represents a number of data block address links stored in the original inode; and recording the clone inode as the clone parent of the original inode.
22. The tangible computer-readable storage device of claim 19 , the plurality of instructions further comprising instructions for: in response to the allocated clone inode pointing to an existing file: storing a clone attribute in the existing file, and marking the existing file as a clone parent; identifying an owner of the clone inode; determining if the owner of the clone inode is different from an owner of the original inode; and in response to the owner of the clone inode being different from the owner of the original inode, transferring a disk block quota of the original inode to the owner of the clone inode.
23. The tangible computer-readable storage device of claim 19 , the plurality of instructions further comprising instructions for: allocating a new inode as a new clone; receiving a new name entry and target directory for the new inode; in response to receiving the new name entry and the target directory for the new inode, inserting a directory entry containing the new name entry into the target directory for the new inode; initializing the new inode, wherein the initializing further comprises: copying the header of the clone inode to the new inode, setting one or more dittos for the one or more data block address links of the clone inode, setting a link count of the new inode to one (1), setting a block count of the new inode to zero, recording the clone inode as the clone parent of the new inode, and setting a creation time of the new inode to a current time; incrementing the link count of the clone inode; updating the inode map to identify the new inode as in-use; and in response to receiving a deletion request for the new inode: reading the link count of the clone inode, in response to the link count of the clone inode being equal to one (1): deleting the new inode, and decrementing the link count of the clone inode, and in response to the link count of the clone inode not being equal to one (1), ignoring the deletion request.
24. The tangible computer-readable storage device of claim 19 , the plurality of instructions further comprising instructions for, in response to receiving a new data update to the original file: replacing the dittos of the original inode with links to copies of the original data blocks; updating the original inode with the new data update; and updating the block count of the original inode.
25. The tangible computer-readable storage device of claim 19 , further comprising instructions for: in response to a Data Management Application moving the one or more cloned files from the storage of the data processing system to offline storage and issuing a read of data in any cloned file, performing an invisible read of data indirectly linked via the dittos of the clone inode; in response to a Data Management Application issuing a write of data in any cloned file, silently ignoring the write if the write would cause one or more dittos of the clone inode to be overwritten; and in response to a Data Management Application requesting migration of the one or more cloned files from the offline storage to the storage of the data processing system based on a last access time, autonomously updating the last access time of the cloned inode.
Unknown
October 16, 2012
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.