The project consists on developing a Linux VFS filesystem module.
The driver has to read a configuration file with the next format:
SourceFolder = /share/NAS/Source
IndexFolder = /share/NAS/Index
DataFile = /share/NAS/Data/Content.dat
ExcludedProcess = ExcludedProgram
The driver has to intercept all the file system operations over SourceFolder, unless the process who try to access to those files is the excluded process. Every time any other process try to access to a file stored inside the SourceFolder the driver has to do the next actions:
- Read function:
o Check if there is a equivalent file inside the Indexfolder. For example if someone try to read the file “/share/NAS/Source/Folder1/SubFolder1/File2”, check if exists the file “/share/NAS/Index/Folder1/SubFolder1/File2”.
o If the index file exist:
? This index file will contain the offsets where is stored the real content of File2 in the DataFile. The format of the index file is a header and one offset of 64bit for each 16KB.
? The driver has to read the desired buffer from the DataFile based in the index file and return a buffer with the required content.
o If the index file does not exist, return the required content from the source file.
- Write, Delete and Rename functions:
o If the index file exist, block the writing action returning an access denied error.
o If the index file does not exist, let do the writing action.
The code has to be written in C language.
Additionally to the development of the driver, you have to develop a testing tool, a program to test the excluded process and write a document describing in detail how to compile, install and test the project in 32 and 64 bit OS.
You should thoroughly test all the code before delivery and of course, deliver them without compilation errors or warnings.
We will test the program with Ubuntu 12.10 and we use Eclipse Juno as IDE.