[linux-cifs-client] [PATCH 00/11] cifs: implement multisession mounts (try #2)

Jeff Layton jlayton at redhat.com
Tue Apr 20 14:07:08 MDT 2010


This is a second pass at implementing multisession mounts for CIFS. The
main change since the last one is that I've broken out a series of
preliminary patches into a separate set and posted them separately. This
set is based on those changes:

    http://lists.samba.org/archive/linux-cifs-client/2010-April/005830.html

Thus, this set is a bit smaller than the last one. Hopefully that will
make it easier to review.

This patchset is intended to allow CIFS to behave as a truly multiuser
filesystem. The idea here is to have the kernel transparently spawn a
new session with the server whenever one is needed. Obviously, we can't
prompt for a password from the kernel, so for now this is limited to
using krb5 authentication. We could extend this to other authtypes, but
we'll need a way to stash username and password or NTLM hashes in the
kernel keyring.

To use this, you'll need to have root mount the server using sec=krb5 or
krb5i. Then, any user who wants to access the mount will need a valid
krb5 ticket. If they don't have one, then they'll probably get back an
-ENOKEY error on the syscall.

The patchset is pretty usable now, but there are still a number of
to-do items:

- add a way to prune idle sessions and tcons: not too hard to do,
  just need to settle on a mechanism to scan for these on a recurring
  basis and close them out

- allow the establishment of an anonymous session and allow users
  without creds to use that instead of being denied access. This
  requires some cleanup to make NTLMSSP work correctly. We may also
  need mount options to control that behavior, etc.

- fix the error return so that -ENOKEY and similar errors don't bubble
  up on syscalls that don't expect it

...and probably plenty of other stuff. The near term goal is to get the
preliminary patchset in place. Once that's done, I'll start feeding
these to Steve for inclusion. I'm posting these to try and get early
feedback and in the hopes that people who need this functionality will
be willing to help test it out.

Jeff Layton (11):
  cifs: add function to get a tcon from cifs_sb
  cifs: add tcon field to cifsFileInfo struct
  cifs: make various routines use the cifsFileInfo->tcon pointer
  cifs: have find_readable/writable_file filter by fsuid
  cifs: fix cifs_show_options to show "username=" or "multises"
  cifs: have cifs_new_fileinfo take a tcon arg
  cifs: allow for cifs_sb_tcon() to return an error
  cifs: fix handling of signing with writepages
  cifs: add routines to build sessions and tcons on the fly
  cifs: on multises mount, set ownership to current_fsuid/current_fsgid
  cifs: add "multises" mount option

 fs/cifs/cifs_dfs_ref.c |   10 ++-
 fs/cifs/cifs_fs_sb.h   |   10 ++-
 fs/cifs/cifsacl.c      |   36 ++++++--
 fs/cifs/cifsfs.c       |   85 ++++++++-----------
 fs/cifs/cifsglob.h     |    1 +
 fs/cifs/cifsproto.h    |    9 ++-
 fs/cifs/connect.c      |  215 ++++++++++++++++++++++++++++++++++++++++++++++--
 fs/cifs/dir.c          |   71 ++++++++++------
 fs/cifs/file.c         |  154 +++++++++++++++++++---------------
 fs/cifs/inode.c        |  168 ++++++++++++++++++++++++++++---------
 fs/cifs/ioctl.c        |   19 +----
 fs/cifs/link.c         |   19 ++++-
 fs/cifs/misc.c         |    2 +-
 fs/cifs/readdir.c      |   30 ++++----
 fs/cifs/xattr.c        |   29 ++++++-
 15 files changed, 605 insertions(+), 253 deletions(-)



More information about the linux-cifs-client mailing list