Jeffrey Altman
2013-02-27 22:43:21 UTC
The OpenAFS 1.7.x release series is implemented as a native Windows File
System Redirector. Microsoft has assigned
IO_REPARSE_TAG_OPENAFS_DFS 0x00000037L
which is used to identify three types of objects as reparse points.
1. AFS Mount Points. An AFS mount point is a directory entry which
refers to the root directory of another volume in the AFS name
space.
2. AFS Symlinks. An AFS Symlink behaves similar to a Posix symlink.
It can be either relative or absolute and can refer to any other
object in the file system. An object that is a symlink to a
directory will report FILE_ATTR_DIRECTORY and
FILE_ATTR_REPARSE_POINT. A symlink to any other object will report
just the FILE_ATTR_REPARSE_POINT flag.
Unlike a Posix symlink, an AFS symlink can include a component
whose tail is "@sys" which when evaluated will be replaced with
a string selected from an ordered list of "system names".
3. AFS UNC Redirection. This object refers to an arbitrary UNC path
that does not have to be in the AFS name space.
All reparse points are transparently handled by the file system.
However, as documented by Microsoft
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365682%28v=vs.85%29.aspx
functions including:
GetFileAttributes
GetFileAttributesEx
GetFileSecurity
FindFirstFile
FindFirstFileEx
FindNextFile
will always return information about the reparse point object and not
the target. As Cygwin at the present time is unaware of the behavior of
the AFS reparse points, it discards them. However, this can result in
confusing behavior for applications and end users which are confused by
output that conflicts with that which would be obtained by
fh = CreateFile(path)
GetFileInformationByHandleW(fh, BasicInfo)
CloseHandle(hf)
I am seeking an experienced Cygwin developer to work with me to add
knowledge of AFS reparse points to the code base.
Thank you.
Jeffrey Altman
OpenAFS Gatekeeper
System Redirector. Microsoft has assigned
IO_REPARSE_TAG_OPENAFS_DFS 0x00000037L
which is used to identify three types of objects as reparse points.
1. AFS Mount Points. An AFS mount point is a directory entry which
refers to the root directory of another volume in the AFS name
space.
2. AFS Symlinks. An AFS Symlink behaves similar to a Posix symlink.
It can be either relative or absolute and can refer to any other
object in the file system. An object that is a symlink to a
directory will report FILE_ATTR_DIRECTORY and
FILE_ATTR_REPARSE_POINT. A symlink to any other object will report
just the FILE_ATTR_REPARSE_POINT flag.
Unlike a Posix symlink, an AFS symlink can include a component
whose tail is "@sys" which when evaluated will be replaced with
a string selected from an ordered list of "system names".
3. AFS UNC Redirection. This object refers to an arbitrary UNC path
that does not have to be in the AFS name space.
All reparse points are transparently handled by the file system.
However, as documented by Microsoft
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365682%28v=vs.85%29.aspx
functions including:
GetFileAttributes
GetFileAttributesEx
GetFileSecurity
FindFirstFile
FindFirstFileEx
FindNextFile
will always return information about the reparse point object and not
the target. As Cygwin at the present time is unaware of the behavior of
the AFS reparse points, it discards them. However, this can result in
confusing behavior for applications and end users which are confused by
output that conflicts with that which would be obtained by
fh = CreateFile(path)
GetFileInformationByHandleW(fh, BasicInfo)
CloseHandle(hf)
I am seeking an experienced Cygwin developer to work with me to add
knowledge of AFS reparse points to the code base.
Thank you.
Jeffrey Altman
OpenAFS Gatekeeper