lab07-vfs - CS444 3/04/05 Linux Virtual File System VFS...

Info iconThis preview shows pages 1–4. Sign up to view the full content.

View Full Document Right Arrow Icon
CS444  3/04/05 Linux Virtual File System VFS Intro The Linux Virtual File System (VFS) is not a file system at all.  It is a generic interface that can be used to create file systems for the Linux kernel.  All file systems that are supported within the Linux kernel must comply with the VFS interface.  This allows any number of completely different file systems to coexist and interoperate freely. Interoperatility  Consider this.  You write a very simple C program to open a file and read the first 512 bytes. #include<stdio.h> #include<unistd.h> #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> int main() { char buffer[512]; int infile = open("hello.txt", O_RDONLY); read(infile, buffer, 512); printf("%s\n",buffer); close(infile); } Take a look at what is going on here.  We open the file, read from the file and then close the file.  Three basic file operations.  Now, consider the following.  What file system does “hello.txt” live on (ReiserFS)?  Do the open(), read(), and close() functions know exactly how to perform those operations within the ReiserFS file system?  What if “hello.txt” were to have been on EXT2 or EXT3,  standard Linux file systems?  What if it had been on a FAT32 or an NTFS file system? Obviously the task of opening reading and writing files will be different across all of these file systems.
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Also consider this.  The open() read() write() and close() functions are part of the standard C library.  The standard C library works under Windows too, as well as many many other operating systems!  Does the standard C library need to know how to read and write to every single type of file system ever created.  No!!!  Of course not :)  That would be crazy.  This is where VFS comes in. When you make a call to the read function (for example), the standard C library actually calls the read system call that exists within the Linux kernel.  That system call is responsible for figuring out which file system we are reading from and passing the read request onto the appropriate file system driver.  All file systems have drivers that must know how to read files.  This is the purpose of the VFS.   VFS Interface The VFS is made up of exactly four different types of objects.  Each file system in the Linux kernel must provide these data structures to the kernel when it requests them.  All of these VFS objects are completely separate from whatever happens to live on the actual disk.  For example, if you were writing your UserFS assignment to use VFS, your “inodes”
Background image of page 2
that live on disk would be separate from the “inode” in the VFS layer. Now, your on-disk inode would probably contain almost the exact same
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Image of page 4
This is the end of the preview. Sign up to access the rest of the document.

Page1 / 9

lab07-vfs - CS444 3/04/05 Linux Virtual File System VFS...

This preview shows document pages 1 - 4. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online