try_return( ntStatus);
}
+ if ( BooleanFlagOn( ulOptions, FILE_OPEN_REPARSE_POINT) &&
+ pDirectoryCB != NULL &&
+ !BooleanFlagOn( pDirectoryCB->ObjectInformation->FileAttributes, FILE_ATTRIBUTE_REPARSE_POINT))
+ {
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSCommonCreate (%08lX) Reparse open request but attribute not set for %wZ Type %08lX\n",
+ Irp,
+ &uniFileName,
+ pDirectoryCB->ObjectInformation->FileType);
+ }
+
//
// Based on the options passed in, process the file accordingly.
//
pBuffer->FileAttributes |= FILE_ATTRIBUTE_DIRECTORY;
}
- if( DirectoryCB->ObjectInformation->Fcb->Header.NodeTypeCode == AFS_SYMBOLIC_LINK_FCB ||
- DirectoryCB->ObjectInformation->Fcb->Header.NodeTypeCode == AFS_MOUNT_POINT_FCB ||
- DirectoryCB->ObjectInformation->Fcb->Header.NodeTypeCode == AFS_DFS_LINK_FCB)
- {
- pBuffer->FileAttributes |= FILE_ATTRIBUTE_REPARSE_POINT;
- }
-
pCcb->FileUnwindInfo.FileAttributes = DirectoryCB->ObjectInformation->FileAttributes;
DirectoryCB->ObjectInformation->FileAttributes = pBuffer->FileAttributes;
DirEntry->ObjectInformation->FileAttributes = pDirEntry->FileAttributes;
+ if( pDirEntry->FileType == AFS_FILE_TYPE_MOUNTPOINT ||
+ pDirEntry->FileType == AFS_FILE_TYPE_SYMLINK ||
+ pDirEntry->FileType == AFS_FILE_TYPE_DFSLINK)
+ {
+
+ DirEntry->ObjectInformation->FileAttributes |= FILE_ATTRIBUTE_REPARSE_POINT;
+ }
+
DirEntry->ObjectInformation->EaSize = pDirEntry->EaSize;
DirEntry->ObjectInformation->Links = pDirEntry->Links;
DirEntry->ObjectInformation->FileAttributes = pDirEntry->FileAttributes;
+ if( pDirEntry->FileType == AFS_FILE_TYPE_MOUNTPOINT ||
+ pDirEntry->FileType == AFS_FILE_TYPE_SYMLINK ||
+ pDirEntry->FileType == AFS_FILE_TYPE_DFSLINK)
+ {
+
+ DirEntry->ObjectInformation->FileAttributes |= FILE_ATTRIBUTE_REPARSE_POINT;
+ }
+
DirEntry->ObjectInformation->EaSize = pDirEntry->EaSize;
DirEntry->ObjectInformation->Links = pDirEntry->Links;