Preallocation of file system cache blocks in a data storage system
First Claim
1. 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.
9 Assignments
0 Petitions
Accused Products
Abstract
A file server provides transaction processing capabilities previously supplied by the operating system of a host computer. On-disk file system metadata is changed only at commit time, and a transaction log protects the transition. The disk state can only be a consistent state, resulting from a commit operation. All disk-block reservation and pre-allocation mapping are in the memory, and after a crash, they are automatically discarded. The file server therefore relieves the client of processing burden and also reduces network traffic. In addition, the file server can more efficiently perform the transaction processing capabilities and reduce the frequency of access to storage by judicious allocation of file system blocks and transfer of file system blocks between file system objects, cache memory, and the transaction log. The differentiation between preallocation states and allocation states of in-memory file system blocks also permits application programs to more efficiently transfer data between files.
246 Citations
33 Claims
-
1. 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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. 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. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23)
-
-
24. 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. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31, 32, 33)
-
Specification