I started to read some documentations and tutorials about file system implementations, and there is something I don`t understand. How superblock, inode table, bitmaps etc are read from the disk drive within the filesystem. I`ve downloaded an older version of the linux kernel, and looked at some simpler filesystems like fat or ext2. I saw the inode and superblock structure declarations, operations executed on them, but didn`t find actual function calls to the disk driver. I thought maybe the driver loads these informations into memory but to be honest this doesn`t seem likely to me.
I know filesystem implementation is a sophisticated theory and it isn`t something you can learn in one day, but can somebody explain to me in a few words how is this done? If you know any good books, or tutorials on the matter, that`s good too. What I found on google where only tutorials about how to implement virtual file systems for school projects.
Have you read Documentation/filesystems/vfs.txt? I believe the struct address_space_operations is at the heart of what you're wondering about.
For example, if you look at fs/fat/inode.c, you'll see that the fat_aops structure defines the FAT address space operations. They use the bog-standard mpage_readpage() etc. (see fs/mpage.c) to read the actual pages from storage into memory.
Thank you very much for your help.