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(-) -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html