OpenAFS Master Repository branch, master, updated. openafs-devel-1_5_76-3600-g0cc602a
Gerrit Code Review
gerrit@openafs.org
Mon, 11 Mar 2013 06:53:40 -0700 (PDT)
The following commit has been merged in the master branch:
commit 0cc602a065f5df9959f735ff14e05a6798b9b0b9
Author: pete scott <pscott@kerneldrivers.com>
Date: Tue Mar 5 13:21:41 2013 -0700
Windows: RDR SymbolicLink create support
Permit the redirector to handle Microsoft's IO_REPARSE_TAG_MOUNT_POINT
and IO_REPARSE_TAG_SYMLINK requests. The IO_REPARSE_TAG_SYMLINK request
is issued as a result of a CreateSymbolicLink Win32 API.
Creating a symlink in Windows is not equivalent to the way a symlink is
created in AFS or UNIX. Instead of creating a symlink object whose data
string represents the target and mode bits indicate that the stream should
be treated as a link, on Windows it is a two step process.
To create a symlink to a directory, create an empty directory and then
assign the reparse tag data to the directory object. To create a symlink
to anything else, create an empty file and assign the reparse tag data to
the file. Deleting a reparse point simply removes the reparse tag data
and not the underlying directory or file.
The way this will work for AFS is that assigning reparse data to an
existing directory or file will require that the object be deleted from
the directory and a new symlink object be created in its place. This is
why upon successful completion of the upcall to the service the directory
object information has the AFS_OBJECT_FLAGS_DIRECTORY_ENUMERATED flag
cleared.
This patchset permits symlink creation but does not do anything to support
symlink removal.
Symlink target data is not validated.
Change-Id: Ie7019445a7c307dcb2cd47beee47d02e1a82145f
Reviewed-on: http://gerrit.openafs.org/9424
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Rod Widdowson <rdw@steadingsoftware.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
Tested-by: Jeffrey Altman <jaltman@your-file-system.com>
src/WINNT/afsrdr/common/AFSRedirCommonDefines.h | 1 +
src/WINNT/afsrdr/kernel/lib/AFSCommSupport.cpp | 155 +++++++++++++++-
src/WINNT/afsrdr/kernel/lib/AFSFSControl.cpp | 225 ++++++++++++++++++++---
src/WINNT/afsrdr/kernel/lib/Include/AFSCommon.h | 7 +
4 files changed, 355 insertions(+), 33 deletions(-)
--
OpenAFS Master Repository