I came across this picture when learning samba. I am confused with the VFS module in this image.
Why we need this VFS module in samba server instead of passing directly the intend system call to the C library? I understand in the client side we need a cifs.ko or smbfs for the kernel to understand the mounted file system.
For example, when the client wants to read a file. It passes the corresponding protocol command to the server over network. And the server's Ethernet card will receive it and transmit to application layer. Then the CIFS protocol in the application layer will interpret this command and passes it to the c library which will eventually lead to the sys_read() system call. And in this procedure the VFS seems unnecessary.
Is this module obligatroy? If not, how can I check if it is compiled?
The picture aims to describe the smbd process architecture. It want to express that smbd has a multi-process and single thread architecture. I saw this in an article that compare the Samba 3.0 and another CIFS server called Likewise.