  This is the client VFS module for the SMB3 NAS protocol as well
  older dialects such as the Common Internet File System (CIFS)
  protocol which was the successor to the Server Message Block
  (SMB) protocol, the native file sharing mechanism for most early
  PC operating systems. New and improved versions of CIFS are now
  called SMB2 and SMB3. These dialects are also supported by the
  CIFS VFS module. CIFS is fully supported by network
  file servers such as Windows 2000, 2003, 2008, 2012 and 2016
  as well by Samba (which provides excellent CIFS
  server support for Linux and many other operating systems), Apple
  systems, as well as most Network Attached Storage vendors, so
  this network filesystem client can mount to a wide variety of
  servers.

  The intent of this module is to provide the most advanced network
  file system function for SMB3 compliant servers, including advanced
  security features, excellent parallelized high performance i/o, better
  POSIX compliance, secure per-user session establishment, encryption,
  high performance safe distributed caching (leases/oplocks), optional packet
  signing, large files, Unicode support and other internationalization
  improvements. Since both Samba server and this filesystem client support
  the CIFS Unix extensions (and in the future SMB3 POSIX extensions),
  the combination can provide a reasonable alternative to other network and
  cluster file systems for fileserving in some Linux to Linux environments,
  not just in Linux to Windows (or Linux to Mac) environments.

  This filesystem has an mount utility (mount.cifs) that can be obtained from

      https://ftp.samba.org/pub/linux-cifs/cifs-utils/

  It must be installed in the directory with the other mount helpers.

  For more information on the module see the project wiki page at

      https://wiki.samba.org/index.php/LinuxCIFS_utils
