Revision as of 10:53, 28 July 2010 by Jlayton (talk | contribs) (Introduction)


The CIFS VFS is a virtual file system for Linux to allow access to servers and storage appliances compliant with the SNIA CIFS Specification version 1.0 or later. Popular servers such as Samba, Windows 2000, Windows XP and many others support CIFS by default.

The CIFS VFS provides some support for older servers based on the more primitive SMB (Server Message Block) protocol (you also can use the Linux file system smbfs as an alternative for accessing these). CIFS VFS is designed to take advantage of advanced network file system features such as locking, Unicode (advanced internationalization), hardlinks, dfs (hierarchical, replicated name space), distributed caching and uses native TCP names (rather than RFC1001, Netbios names). Unlike some other network file systems all key network function including authentication is provided in kernel (and changes to mount and/or a mount helper file are not required in order to enable the CIFS VFS).

The CIFS VFS was added to mainline Linux kernels in 2.5.42. While only peripherally related to SAMBA, the cifs client userspace tools are hosted in a separate tree on

Mailing List

Discussion of the Linux CIFS Client takes place primarily on the linux-cifs-client mailing list:

If you're planning to ask for help, please read over the LinuxCIFS_troubleshooting page first.

To Do List

Here's a list of projects that need to be done

  • Large Scale Projects:
    • Asynchronous reads and writes: allow a single task to have more than one read or write outstanding at a time
    • Better management for open filehandles: move to a real refcounted scheme where last user of a filehandle does the on the wire close
    • MultiSession Mounts: LinuxCIFS_Multisession_Mount
  • Medium Scale Projects
    • Support for storing credentials in keyring: maybe implement an "ntlminit" or "cifsinit" program and teach CIFS how to pull user creds out of the keyring LinuxCIFS_CredentialStashing
  • Simple Projects
    • Clean up cifs manpages: move most of the current info from mount.cifs manpage to a new cifs(5) manpage and flesh it out