From 9b48daff341773580b3635e476fea112374986f2 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Thu, 14 Feb 2013 09:26:16 -0500 Subject: [PATCH] Windows: Unique file ID is per volume The unique file ID returned as part of the BY_HANDLE_FILE_INFORMATION data structure obtained via GetFileInformationByHandle() is only guarranteed to be unique within the volume where volume uniqueness is determined by the volume's serial number. It therefore doesn't make sense to return the volume id as part of FILE_INTERNAL_INFORMATION IndexNumber. Instead return Vnode and Unique as that is what ensures uniqueness within an existing AFS volume. Unfortunately, {VolId, Vnode, Unique} does not guarantee uniqueness for when multiple cells are in use. Change-Id: I6c6ea4a04aa79778cce811560d8106a3a5e373cb Reviewed-on: http://gerrit.openafs.org/9108 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp b/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp index 0deb376..114037c 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp @@ -1031,9 +1031,9 @@ AFSQueryInternalInfo( IN PIRP Irp, if( *Length >= sizeof( FILE_INTERNAL_INFORMATION)) { - Buffer->IndexNumber.HighPart = Fcb->ObjectInformation->FileId.Volume; + Buffer->IndexNumber.HighPart = Fcb->ObjectInformation->FileId.Vnode; - Buffer->IndexNumber.LowPart = Fcb->ObjectInformation->FileId.Vnode; + Buffer->IndexNumber.LowPart = Fcb->ObjectInformation->FileId.Unique; *Length -= sizeof( FILE_INTERNAL_INFORMATION); } -- 1.9.4