Thank you for the reply.
Well I am a beginner at UNIX and I am trying to make this project as my undergraduate project. I appreciate all the queries you listed above although I am half way through with studying the system calls.
I think the path for the system calls are two fold:
1. Filesystem Independent system calls present in
/usr/src/lib/libstand
2. Filesystem Dependent system calls present in
/usr/src/lib/libstand/<file_system.c>
I have read
/usr/src/lib/libstand/stand.h which I think is the periphery of Platform Independence. I t has a structure called
struct fs_ops which has function pointers for system calls like *open(), *stat(), *fstat() etc.
These function pointers are made to point to actual system calls from different Platform Dependent file systems like ext2fs , ufs etc.
This is done by the open system call ( by reading from the
struct open_file files[] and
struct fs_ops *file_system[]).
I think if we want to add thi field for a particular file system, then I should try to make changes in file system C files like ufs.c and vfs.c ( and so on ...)
Now I was thinking that modifying already implemented file systems is a messy thing as you pointed out. So, I was planning to make my own file system. This file system code will only include the necessary fs_ops (File system Operations i.e. system calls) and putting the appropriate pointers in
stand.h. Am I thinking right?
I read an IBM Developer Forum for FUSE which explained how to create a File System in User Space which explained something very similar. The link is as follows:
http://www.ibm.com/developerworks/linux/library/l-fuse/
Can you please suggest if I am on the right track or not. And also can you suggest some links I can read, that might help me for the same( ie For creating or modifying the file system)