Claims Analysis
Total Claims: 36
Claim 1
Independent Claim
296 words
A method of operating a file server having a file system cache memory and storage, a file system being stored in the storage, said method comprising: (a) the file server receiving at least one write request from at least one client, and in response, writing new file system attributes and new file system data to the file system cache memory, the new file system attributes including new links between file system objects and file system blocks, (b) the-file server receiving a commit request from the client, the new file system attributes and the new file system data not being written into the file system in storage until receipt of the commit request, and in response to the commit request, writing the new file system attributes and the new file system data to the file system in storage; wherein the file server maintains in memory a directory and file mapping data structure for the file system, the directory and file mapping data structure permitting file system block allocations and linkages between file system objects and the file system blocks to change during read/write access to the file system by the client prior to receiving the commit request, the file system block allocations including allocated blocks having block allocations that are the same as block allocations in the file system as stored in the storage, and preallocated blocks having block allocations that are different from block allocations in the file system as stored in the storage, the preallocated blocks storing new file system data for changes to be made to the on-disk file system and not yet committed to the on-disk file system, and the directory and file mapping data structure identifying the allocated blocks and the preallocated blocks and distinguishing the preallocated blocks from the allocated blocks.
Claim 2
Independent Claim
296 words
A method of operating a file server having a file system cache memory and storage, a file system being stored in the storage, said method comprising: (a) the file server receiving at least one write request from at least one client, and in response, writing new file system attributes and new file system data to the file system cache memory, the new file system attributes including new links between file system objects and file system blocks, (b) the-file server receiving a commit request from the client, the new file system attributes and the new file system data not being written into the file system in storage until receipt of the commit request, and in response to the commit request, writing the new file system attributes and the new file system data to the file system in storage; wherein the file server maintains in memory a directory and file mapping data structure for the file system, the directory and file mapping data structure permitting file system block allocations and linkages between file system objects and the file system blocks to change during read/write access to the file system by the client prior to receiving the commit request, the file system block allocations including allocated blocks having block allocations that are the same as block allocations in the file system as stored in the storage, and preallocated blocks having block allocations that are different from block allocations in the file system as stored in the storage, the preallocated blocks storing new file system data for changes to be made to the on-disk file system and not yet committed to the on-disk file system, and the directory and file mapping data structure identifying the allocated blocks and the preallocated blocks and distinguishing the preallocated blocks from the allocated blocks.
Claim 3
Dependent Claim
25 words
The method as claimed in claim 1 , wherein the file server changes the preallocated blocks to allocated blocks in response to the commit request.
Claim 4
Dependent Claim
47 words
The method as claimed in claim 2 , wherein the file server maintains a bit map of preallocated blocks and a bit map of allocated blocks, and in response to the commit request, writes the bit map of preallocated blocks to the bit map of allocated blocks.
Claim 5
Dependent Claim
28 words
The method as claimed in claim 1 , wherein the file server changes the preallocated blocks to free blocks in response to an abort request from the client.
Claim 6
Dependent Claim
65 words
The method as claimed in claim 4 , wherein the file server has write pending entries in the cache memory that are linked to write pending entries in the directory and file mapping data structure in memory, and the file server invalidates the write pending entries in the cache memory and in the directory and file mapping data structure in response to the abort request.
Claim 7
Dependent Claim
34 words
The method as claimed in claim 1 , wherein the file server changes allocated blocks to free blocks during read/write access to the file system by the client prior to receiving the commit request.
Claim 8
Dependent Claim
34 words
The method as claimed in claim 1 , wherein the file server changes allocated blocks to preallocated blocks during read/write access to the file system by the client prior to receiving the commit request.
Claim 9
Dependent Claim
34 words
The method as claimed in claim 7 , wherein in response to an abort request, the file server finds the preallocated blocks that were changed from allocated blocks and restores them to allocated blocks.
Claim 10
Dependent Claim
58 words
The method as claimed in claim 1 , wherein the file server unlinks at least one block from a first file in the file system and links said at least one block to a second file in the file system in response to read/write access to the file system by the client prior to receiving the commit request.
Claim 11
Dependent Claim
42 words
The method as claimed in claim 9 , wherein said at least one block is an allocated block when it is in the first file and said at least one block is a preallocated block when it is in the second file.
Claim 12
Dependent Claim
41 words
The method as claimed in claim 1 , wherein the file server inserts a block into a hole in a file that is later accessed during read/write access to the file system by the client prior to receiving the commit request.
Claim 13
Dependent Claim
45 words
The method as claimed in claim 1 , wherein the file server maintains a transaction log in the storage, and after a system crash, performs a recovery operation by accessing the transaction log to return the file system in the storage to a consistent state.
Claim 14
Dependent Claim
66 words
The method as claimed in claim 12 , wherein the transaction log includes block before images that are written to the file system in storage to return the file system in storage to a consistent state, and the transaction log also includes new metadata including block allocations that the file server uses to delete revisions from the file system in the storage during the recovery operation.
Claim 15
Dependent Claim
237 words
A file server comprising, in combination: a file system cache memory; storage; means responsive to a write request from a client for writing new file system attributes and new file system data to the file system cache memory, the new file system attributes including linkages between file system objects and file system blocks; means responsive to a commit request from the client for writing the new file system data and new file system attributes to a file system in the storage; means for maintaining in memory a directory and file mapping data structure for the file system, the directory and file mapping data structure permitting file system block allocations and linkages between file system objects and file system blocks to change during read/write access to the file system by the client prior to receiving the commit request, the file system block allocations including allocated blocks having block allocations that are the same as block allocations in the file system as stored in the storage, and preallocated blocks having block allocations that are different from block allocations in the file system as stored in the storage, the preallocated blocks storing new file system data for changes to be made to the on-disk file system and not yet committed to the on-disk file system, and the directory and file mapping data structure identifying the allocated blocks and the preallocated blocks and distinguishing the preallocated blocks from the allocated blocks.
Claim 16
Dependent Claim
237 words
A file server comprising, in combination: a file system cache memory; storage; means responsive to a write request from a client for writing new file system attributes and new file system data to the file system cache memory, the new file system attributes including linkages between file system objects and file system blocks; means responsive to a commit request from the client for writing the new file system data and new file system attributes to a file system in the storage; means for maintaining in memory a directory and file mapping data structure for the file system, the directory and file mapping data structure permitting file system block allocations and linkages between file system objects and file system blocks to change during read/write access to the file system by the client prior to receiving the commit request, the file system block allocations including allocated blocks having block allocations that are the same as block allocations in the file system as stored in the storage, and preallocated blocks having block allocations that are different from block allocations in the file system as stored in the storage, the preallocated blocks storing new file system data for changes to be made to the on-disk file system and not yet committed to the on-disk file system, and the directory and file mapping data structure identifying the allocated blocks and the preallocated blocks and distinguishing the preallocated blocks from the allocated blocks.
Claim 17
Dependent Claim
39 words
The file server as claimed in claim 14 , including means responsive to a commit request for changing the preallocated blocks to allocated blocks, and means responsive to an abort request for changing the preallocated blocks to free blocks.
Claim 18
Dependent Claim
52 words
The file server as claimed in claim 15 , wherein the file server includes means for maintaining a bit map of preallocated blocks and a bit map of allocated blocks, including means responsive to a commit request for writing the bit map of preallocated blocks to the bit map of allocated blocks.
Claim 19
Dependent Claim
68 words
The file server as claimed in claim 14 , wherein the file server has write pending entries in the cache memory that are linked to write pending entries in the directory and file mapping data structure in memory, and the file server includes means responsive to an abort request for invalidating the write pending entries in the cache memory and in the directory and file mapping data structure.
Claim 20
Dependent Claim
35 words
The file server as claimed in claim 14 , further including means for changing allocated blocks to free blocks during read/write access to the file system by the client prior to receiving the commit request.
Claim 21
Dependent Claim
35 words
The file server as claimed in claim 14 , further including means for changing allocated blocks to preallocated blocks during read/write access to the file system by the client prior to receiving the commit request.
Claim 22
Dependent Claim
35 words
The file server as claimed in claim 19 , further including means for responding to an abort request by finding the preallocated blocks that were changed from allocated blocks and restoring them to allocated blocks.
Claim 23
Dependent Claim
60 words
The file server as claimed in claim 14 , further including means responsive to read/write access to the file system by the client for unlinking at least one allocated block from a first file in the file system and linking said at least one allocated block to a second file in the file system prior to receiving the commit request.
Claim 24
Dependent Claim
43 words
The file server as claimed in claim 14 , including means for maintaining a transaction log in the storage, and means for recovering from a system crash by accessing the transaction log to return the file system in storage to a consistent state.
Claim 25
Dependent Claim
88 words
The file server as claimed in claim 22 , wherein the transaction log includes block before images that are written to the file system in storage to return the file system storage to a consistent state, and the transaction log also includes new metadata including block allocations, and the means for recovering from a system crash includes means for accessing the log to obtain the new metadata including block allocations and using the new metadata for deleting revisions from the file system in storage during the recovery operation.
Claim 26
Dependent Claim
354 words
A file server comprising, in combination: a file system layer for mapping file names to data storage locations in response to a write request from a client; a file system cache connected to the file system layer for storing new file system attributes and new file system data in response to the write request from the client; and nonvolatile storage connected to the file system layer for storing the new file system attributes and the new file system data in response to a commit request from the client; wherein the file system layer is programmed for responding to the write request from the client by writing the new file system attributes and the new file system data to the file system cache and not writing the new file system attributes and the new file system data to the file system in storage until receipt of the commit request from the client; and wherein the file system layer is programmed for responding to the commit request from the client by writing the new file system data and the new file system attributes from the file system cache to the nonvolatile storage; and wherein the file system layer is programmed to maintain in memory a directory and file mapping data structure for the file system, the directory and file mapping data structure permitting file system block allocations and linkages between file system objects and the file system blocks to change during read/write access to the file system by the client prior to receiving the commit request, the file system block allocations including allocated blocks having block allocations that are the same as block allocations in the file system as stored in the storage, and preallocated blocks having block allocations that are different from block allocations in the file system as stored in the storage, the preallocated blocks storing new file system data for changes to be made to the on-disk file system and not yet committed to the on-disk file system, and the directory and file mapping data structure identifying the allocated blocks and the preallocated blocks and distinguishing the preallocated blocks from the allocated blocks.
Claim 27
Dependent Claim
354 words
A file server comprising, in combination: a file system layer for mapping file names to data storage locations in response to a write request from a client; a file system cache connected to the file system layer for storing new file system attributes and new file system data in response to the write request from the client; and nonvolatile storage connected to the file system layer for storing the new file system attributes and the new file system data in response to a commit request from the client; wherein the file system layer is programmed for responding to the write request from the client by writing the new file system attributes and the new file system data to the file system cache and not writing the new file system attributes and the new file system data to the file system in storage until receipt of the commit request from the client; and wherein the file system layer is programmed for responding to the commit request from the client by writing the new file system data and the new file system attributes from the file system cache to the nonvolatile storage; and wherein the file system layer is programmed to maintain in memory a directory and file mapping data structure for the file system, the directory and file mapping data structure permitting file system block allocations and linkages between file system objects and the file system blocks to change during read/write access to the file system by the client prior to receiving the commit request, the file system block allocations including allocated blocks having block allocations that are the same as block allocations in the file system as stored in the storage, and preallocated blocks having block allocations that are different from block allocations in the file system as stored in the storage, the preallocated blocks storing new file system data for changes to be made to the on-disk file system and not yet committed to the on-disk file system, and the directory and file mapping data structure identifying the allocated blocks and the preallocated blocks and distinguishing the preallocated blocks from the allocated blocks.
Claim 28
Dependent Claim
45 words
The file server as claimed in claim 24 , wherein the file system layer is programmed to respond to a commit request for changing the preallocated blocks to allocated blocks, and for responding to an abort request for changing the preallocated blocks to free blocks.
Claim 29
Dependent Claim
53 words
The file server as claimed in claim 25 , wherein the file system layer is programmed for maintaining a bit map of preallocated blocks and a bit map of allocated blocks, and for responding to a commit request by writing the bit map of preallocated blocks to the bit map of allocated blocks.
Claim 30
Dependent Claim
70 words
The file server as claimed in claim 24 , wherein the file server has write pending entries in the cache memory that are linked to write pending entries in the directory and file mapping data structure in memory, and the file system layer is programmed to respond to an abort request for invalidating the write pending entries in the cache memory and in the directory and file mapping data structure.
Claim 31
Dependent Claim
39 words
The file server as claimed in claim 24 , wherein the file system layer is programmed for changing allocated blocks to free blocks during read/write access to the file system by the client prior to receiving the commit request.
Claim 32
Dependent Claim
39 words
The file server as claimed in claim 24 , wherein the file system layer is programmed for changing allocated blocks to preallocated blocks during read/write access to the file system by the client prior to receiving the commit request.
Claim 33
Dependent Claim
39 words
The file server as claimed in claim 29 , wherein the file system layer is programmed for responding to an abort request by finding the preallocated blocks that were changed from allocated blocks and restoring them to allocated blocks.
Claim 34
Dependent Claim
65 words
The file server as claimed in claim 24 , wherein the file system layer is programmed for responding to read/write access to the file system by the client for unlinking at least one allocated block from a first file in the file system and linking said at least one allocated block to a second file in the file system prior to receiving the commit request.
Claim 35
Dependent Claim
52 words
The file server as claimed in claim 24 , wherein the file system layer is programmed for maintaining a transaction log in the storage, and the file server is programmed for recovering from a system crash by accessing the transaction log to return the file system in storage to a consistent state.
Claim 36
Dependent Claim
83 words
The file server as claimed in claim 32 , wherein the transaction log includes block before images that are written to the file system in storage to return the file system storage to a consistent state, and the transaction log also includes new metadata including block allocations, and the file server is programmed for accessing the log to obtain the new metadata including block allocations and using the new metadata for deleting revisions from the file system in storage during the recovery operation.