To-do
- Configuration options
At the moment, several parameters which should be configurable by the user are fixed. The two most important are:
- Blocks size (currently 4kb)
- Segment size (currently 1MB)
Most of the code has been written but contains many paths which have never run. On the other hand, the current code may result in double locking of indirect pages. The simplest solution to this problem is probably a change in the indirect block numbering scheme. Nevertheless, this would require changing the on-disk format.
- Snapshot-related goals
- Garbage collection of segments within snapshot
This would be a major change in how both the snapshot and garbage collector works but would greatly simplify using the snapshot because free space management would behave far more intuitively.
- Support for multiple snapshots
Allowing for multiple snapshots should be fairly easy but it may not be worth implementing until the previous point is somehow tackled.
- Garbage collection of segments within snapshot
- Roll forward
Roll-forward utility is unfortunately still fairly unreliable and requires further debugging.
- Bug hunting
Like any other new and fairly sophisticated project, this file system is likely to contain a number of hidden bugs. Finding and fixing them is clearly a task to undertake.
- Optimizations
A number of algorithms, such as ihash writeback marking, could use simple but powerful optimizations. Moreover, further optimization can be driven by profile information that will be published here soon.
- Other extensions
The log structured file system can be extended and exploited in various ways. For example, the file system might reside on multiple devices which could even be plugged in and out when mounted. Or selected files could be protected by checksums or hashes. Obviously, many more ideas and unusual features can be based on our implementation.