Windows: pioctl path retrying with \\afs\all
authorJeffrey Altman <jaltman@your-file-system.com>
Fri, 6 Aug 2010 22:24:47 +0000 (18:24 -0400)
committerJeffrey Altman <jaltman@openafs.org>
Sat, 3 Sep 2011 22:46:15 +0000 (15:46 -0700)
commitf7d0e800eba62f4984795cb7b487f6695f6fedcc
treea6fc73ff26a79a07f0db73b68c51887fc95ec4f3
parent2271d481d33b2b2ad56dcd4fc9fbdd726fc1967b
Windows: pioctl path retrying with \\afs\all

When the redirector is in use, \\AFS is identified as being an AFS path.
With the SMB redirector, \\AFS was not considered a valid path.  In order
to simulate the notion of \\AFS being the root volume, failover logic
was added to the symlink and fs modules being triggered that
would retry a request for \\afs\foo as \\afs\all\foo.

The VIOC_SYMLINK and VIOC_AFS_CREATE_MT_PT pioctls are broken.  The
'path' parameter that is passed in contains the directory entry that
is to be created.  Since the AFS redirector maps \\afs to the root.afs
volume the "foo" in \\afs\foo must exist in order for the
_._AFS_IOCTL_._ special file to be opened.

This patch implements an alternative to the failover.  If the opcode
is one of the two listed above and the input path is a UNC path,
then the path is re-written as \\AFS\all.  This is necessary because
the repeated attempts to open a UNC path through the SMB redirector
with different usernames can result in the smb session becoming
disconnected.  If this is done when the SYSTEM account is in use,
the tokens associated with the connection can be lost.

LICENSE MIT

Change-Id: I2c2f6c08c7ca5c137062d34e1353731b6f78f633
Reviewed-on: http://gerrit.openafs.org/5336
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
src/sys/pioctl_nt.c