From 210ebcfbe428687c263a06ead80893393402d608 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Wed, 13 Feb 2013 14:04:28 -0500 Subject: [PATCH] Windows: Add Cell name to AFSProcessRequest parameters Knowing the cell name for the request can be useful to the file system driver which otherwise does not have access to a conversion from FileID.CellID to Cell name. Change-Id: Ia10bae0d9c8bc7824a400ff30268d7ac0b9b2935 Reviewed-on: http://gerrit.openafs.org/9107 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- .../afsrdr/common/AFSRedirCommonStructs.h | 2 ++ src/WINNT/afsrdr/kernel/fs/AFSCommSupport.cpp | 4 +++ .../afsrdr/kernel/fs/Include/AFSCommon.h | 2 ++ src/WINNT/afsrdr/kernel/lib/AFSCleanup.cpp | 12 +++++++ src/WINNT/afsrdr/kernel/lib/AFSClose.cpp | 4 +++ .../afsrdr/kernel/lib/AFSCommSupport.cpp | 32 +++++++++++++++++++ src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp | 10 ++++++ .../afsrdr/kernel/lib/AFSExtentsSupport.cpp | 12 +++++++ .../afsrdr/kernel/lib/AFSLockControl.cpp | 6 ++++ src/WINNT/afsrdr/kernel/lib/AFSRead.cpp | 5 +++ src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp | 4 +++ 11 files changed, 93 insertions(+) diff --git a/src/WINNT/afsrdr/common/AFSRedirCommonStructs.h b/src/WINNT/afsrdr/common/AFSRedirCommonStructs.h index a01c0654e..e5a06e6dc 100644 --- a/src/WINNT/afsrdr/common/AFSRedirCommonStructs.h +++ b/src/WINNT/afsrdr/common/AFSRedirCommonStructs.h @@ -746,6 +746,8 @@ NTSTATUS IN GUID *AuthGroup, IN PUNICODE_STRING FileName, IN AFSFileID *FileId, + IN WCHAR * Cell, + IN ULONG CellLength, IN void *Data, IN ULONG DataLength, IN OUT void *ResultBuffer, diff --git a/src/WINNT/afsrdr/kernel/fs/AFSCommSupport.cpp b/src/WINNT/afsrdr/kernel/fs/AFSCommSupport.cpp index d0956b1af..6852b1656 100644 --- a/src/WINNT/afsrdr/kernel/fs/AFSCommSupport.cpp +++ b/src/WINNT/afsrdr/kernel/fs/AFSCommSupport.cpp @@ -55,6 +55,8 @@ AFSReleaseFid( IN AFSFileID *FileId) NULL, 0, NULL, + 0, + NULL, NULL); } @@ -67,6 +69,8 @@ AFSProcessRequest( IN ULONG RequestType, IN GUID *AuthGroup, IN PUNICODE_STRING FileName, IN AFSFileID *FileId, + IN WCHAR *Cell, + IN ULONG CellLength, IN void *Data, IN ULONG DataLength, IN OUT void *ResultBuffer, diff --git a/src/WINNT/afsrdr/kernel/fs/Include/AFSCommon.h b/src/WINNT/afsrdr/kernel/fs/Include/AFSCommon.h index 3f6b920f8..ca79a13e3 100644 --- a/src/WINNT/afsrdr/kernel/fs/Include/AFSCommon.h +++ b/src/WINNT/afsrdr/kernel/fs/Include/AFSCommon.h @@ -162,6 +162,8 @@ AFSProcessRequest( IN ULONG RequestType, IN GUID *AuthGroup, IN PUNICODE_STRING FileName, IN AFSFileID *FileId, + IN WCHAR * Cell, + IN ULONG CellLength, IN void *Data, IN ULONG DataLength, IN OUT void *ResultBuffer, diff --git a/src/WINNT/afsrdr/kernel/lib/AFSCleanup.cpp b/src/WINNT/afsrdr/kernel/lib/AFSCleanup.cpp index ff2e2280d..df613cad0 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSCleanup.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSCleanup.cpp @@ -458,6 +458,8 @@ AFSCleanup( IN PDEVICE_OBJECT LibDeviceObject, &pCcb->AuthGroup, &pCcb->DirectoryCB->NameInformation.FileName, &pObjectInfo->FileId, + pObjectInfo->VolumeCB->VolumeInformation.Cell, + pObjectInfo->VolumeCB->VolumeInformation.CellLength, &stFileCleanup, sizeof( AFSFileCleanupCB), pResultCB, @@ -694,6 +696,8 @@ AFSCleanup( IN PDEVICE_OBJECT LibDeviceObject, &pCcb->AuthGroup, &pCcb->DirectoryCB->NameInformation.FileName, &pObjectInfo->FileId, + pObjectInfo->VolumeCB->VolumeInformation.Cell, + pObjectInfo->VolumeCB->VolumeInformation.CellLength, &stFileCleanup, sizeof( AFSFileCleanupCB), pResultCB, @@ -897,6 +901,8 @@ AFSCleanup( IN PDEVICE_OBJECT LibDeviceObject, &pCcb->AuthGroup, &pCcb->DirectoryCB->NameInformation.FileName, &pObjectInfo->FileId, + pObjectInfo->VolumeCB->VolumeInformation.Cell, + pObjectInfo->VolumeCB->VolumeInformation.CellLength, &stFileCleanup, sizeof( AFSFileCleanupCB), pResultCB, @@ -1030,6 +1036,8 @@ AFSCleanup( IN PDEVICE_OBJECT LibDeviceObject, &pCcb->AuthGroup, &pCcb->DirectoryCB->NameInformation.FileName, &pObjectInfo->FileId, + pObjectInfo->VolumeCB->VolumeInformation.Cell, + pObjectInfo->VolumeCB->VolumeInformation.CellLength, &stFileCleanup, sizeof( AFSFileCleanupCB), pResultCB, @@ -1211,6 +1219,8 @@ AFSCleanup( IN PDEVICE_OBJECT LibDeviceObject, &pCcb->AuthGroup, &pCcb->DirectoryCB->NameInformation.FileName, &pObjectInfo->FileId, + pObjectInfo->VolumeCB->VolumeInformation.Cell, + pObjectInfo->VolumeCB->VolumeInformation.CellLength, &stFileCleanup, sizeof( AFSFileCleanupCB), pResultCB, @@ -1344,6 +1354,8 @@ AFSCleanup( IN PDEVICE_OBJECT LibDeviceObject, &pCcb->AuthGroup, &pCcb->DirectoryCB->NameInformation.FileName, &pObjectInfo->FileId, + pObjectInfo->VolumeCB->VolumeInformation.Cell, + pObjectInfo->VolumeCB->VolumeInformation.CellLength, &stFileCleanup, sizeof( AFSFileCleanupCB), pResultCB, diff --git a/src/WINNT/afsrdr/kernel/lib/AFSClose.cpp b/src/WINNT/afsrdr/kernel/lib/AFSClose.cpp index 7d9022562..2cad934c4 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSClose.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSClose.cpp @@ -140,6 +140,8 @@ AFSClose( IN PDEVICE_OBJECT LibDeviceObject, &pCcb->AuthGroup, NULL, &stParentFileId, + NULL, + 0, (void *)&stPIOCtlClose, sizeof( AFSPIOCtlOpenCloseRequestCB), NULL, @@ -541,6 +543,8 @@ AFSClose( IN PDEVICE_OBJECT LibDeviceObject, &pFcb->AuthGroup, &pDirCB->NameInformation.FileName, NULL, + NULL, + 0, (void *)&stPipeClose, sizeof( AFSPipeOpenCloseRequestCB), NULL, diff --git a/src/WINNT/afsrdr/kernel/lib/AFSCommSupport.cpp b/src/WINNT/afsrdr/kernel/lib/AFSCommSupport.cpp index e7d44f9a1..705c2df18 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSCommSupport.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSCommSupport.cpp @@ -148,6 +148,8 @@ AFSEnumerateDirectory( IN GUID *AuthGroup, AuthGroup, NULL, &ObjectInfoCB->FileId, + ObjectInfoCB->VolumeCB->VolumeInformation.Cell, + ObjectInfoCB->VolumeCB->VolumeInformation.CellLength, (void *)pDirQueryCB, sizeof( AFSDirQueryCB), pBuffer, @@ -728,6 +730,8 @@ AFSEnumerateDirectoryNoResponse( IN GUID *AuthGroup, AuthGroup, NULL, FileId, + NULL, + 0, (void *)&stDirQueryCB, sizeof( AFSDirQueryCB), NULL, @@ -862,6 +866,8 @@ AFSVerifyDirectoryContent( IN AFSObjectInfoCB *ObjectInfoCB, AuthGroup, NULL, &ObjectInfoCB->FileId, + ObjectInfoCB->VolumeCB->VolumeInformation.Cell, + ObjectInfoCB->VolumeCB->VolumeInformation.CellLength, (void *)pDirQueryCB, sizeof( AFSDirQueryCB), pBuffer, @@ -1599,6 +1605,8 @@ AFSNotifyFileCreate( IN GUID *AuthGroup, AuthGroup, FileName, NULL, + NULL, + 0, &stCreateCB, sizeof( AFSFileCreateCB), pResultCB, @@ -1937,6 +1945,8 @@ AFSUpdateFileInformation( IN AFSFileID *ParentFid, AuthGroup, NULL, &ObjectInfo->FileId, + ObjectInfo->VolumeCB->VolumeInformation.Cell, + ObjectInfo->VolumeCB->VolumeInformation.CellLength, &stUpdateCB, sizeof( AFSFileUpdateCB), pUpdateResultCB, @@ -2021,6 +2031,8 @@ AFSNotifyDelete( IN AFSDirectoryCB *DirectoryCB, AuthGroup, &DirectoryCB->NameInformation.FileName, &pObjectInfo->FileId, + pObjectInfo->VolumeCB->VolumeInformation.Cell, + pObjectInfo->VolumeCB->VolumeInformation.CellLength, &stDelete, sizeof( AFSFileDeleteCB), &stDeleteResult, @@ -2176,6 +2188,8 @@ AFSNotifyHardLink( IN AFSObjectInfoCB *ObjectInfo, AuthGroup, &SourceDirectoryCB->NameInformation.FileName, &ObjectInfo->FileId, + ObjectInfo->VolumeCB->VolumeInformation.Cell, + ObjectInfo->VolumeCB->VolumeInformation.CellLength, pHardLinkCB, sizeof( AFSFileHardLinkCB) + TargetName->Length, pResultCB, @@ -2546,6 +2560,8 @@ AFSNotifyRename( IN AFSObjectInfoCB *ObjectInfo, AuthGroup, &DirectoryCB->NameInformation.FileName, &ObjectInfo->FileId, + ObjectInfo->VolumeCB->VolumeInformation.Cell, + ObjectInfo->VolumeCB->VolumeInformation.CellLength, pRenameCB, sizeof( AFSFileRenameCB) + TargetName->Length, pRenameResultCB, @@ -2753,6 +2769,8 @@ AFSEvaluateTargetByID( IN AFSObjectInfoCB *ObjectInfo, AuthGroup, NULL, &ObjectInfo->FileId, + ObjectInfo->VolumeCB->VolumeInformation.Cell, + ObjectInfo->VolumeCB->VolumeInformation.CellLength, &stTargetID, sizeof( AFSEvalTargetCB), pEvalResultCB, @@ -2959,6 +2977,8 @@ AFSEvaluateTargetByName( IN GUID *AuthGroup, AuthGroup, SourceName, NULL, + ParentObjectInfo->VolumeCB->VolumeInformation.Cell, + ParentObjectInfo->VolumeCB->VolumeInformation.CellLength, &stTargetID, sizeof( AFSEvalTargetCB), pEvalResultCB, @@ -3068,6 +3088,8 @@ AFSRetrieveVolumeInformation( IN GUID *AuthGroup, FileID, NULL, 0, + NULL, + 0, VolumeInformation, &ulResultLen); @@ -3106,6 +3128,8 @@ AFSRetrieveVolumeSizeInformation( IN GUID *AuthGroup, FileID, NULL, 0, + NULL, + 0, VolumeSizeInformation, &ulResultLen); @@ -3200,6 +3224,8 @@ AFSNotifyPipeTransceive( IN AFSCcb *Ccb, &Ccb->AuthGroup, &Ccb->DirectoryCB->NameInformation.FileName, NULL, + NULL, + 0, pIoRequest, sizeof( AFSPipeIORequestCB) + InputLength, pOutputSystemBuffer, @@ -3300,6 +3326,8 @@ AFSNotifySetPipeInfo( IN AFSCcb *Ccb, &Ccb->AuthGroup, &Ccb->DirectoryCB->NameInformation.FileName, NULL, + NULL, + 0, pInfoRequest, sizeof( AFSPipeInfoRequestCB) + InputLength, NULL, @@ -3366,6 +3394,8 @@ AFSNotifyQueryPipeInfo( IN AFSCcb *Ccb, &Ccb->AuthGroup, &Ccb->DirectoryCB->NameInformation.FileName, NULL, + NULL, + 0, &stInfoRequest, sizeof( AFSPipeInfoRequestCB), DataBuffer, @@ -3410,6 +3440,8 @@ AFSReleaseFid( IN AFSFileID *FileId) NULL, 0, NULL, + 0, + NULL, NULL); } diff --git a/src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp b/src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp index 299247d40..b93f554d6 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp @@ -1408,6 +1408,8 @@ AFSOpenRoot( IN PIRP Irp, AuthGroup, NULL, &VolumeCB->ObjectInformation.FileId, + VolumeCB->VolumeInformation.Cell, + VolumeCB->VolumeInformation.CellLength, (void *)&stOpenCB, sizeof( AFSFileOpenCB), (void *)&stOpenResultCB, @@ -2748,6 +2750,8 @@ AFSProcessOpen( IN PIRP Irp, AuthGroup, &DirectoryCB->NameInformation.FileName, &pObjectInfo->FileId, + pObjectInfo->VolumeCB->VolumeInformation.Cell, + pObjectInfo->VolumeCB->VolumeInformation.CellLength, (void *)&stOpenCB, sizeof( AFSFileOpenCB), (void *)&stOpenResultCB, @@ -2941,6 +2945,8 @@ try_exit: AuthGroup, &DirectoryCB->NameInformation.FileName, &pObjectInfo->FileId, + pObjectInfo->VolumeCB->VolumeInformation.Cell, + pObjectInfo->VolumeCB->VolumeInformation.CellLength, (void *)&stReleaseFileAccess, sizeof( AFSFileAccessReleaseCB), NULL, @@ -3563,6 +3569,8 @@ AFSOpenIOCtlFcb( IN PIRP Irp, AuthGroup, NULL, &stFileID, + NULL, + 0, (void *)&stPIOCtlOpen, sizeof( AFSPIOCtlOpenCloseRequestCB), NULL, @@ -3804,6 +3812,8 @@ AFSOpenSpecialShareFcb( IN PIRP Irp, AuthGroup, &DirectoryCB->NameInformation.FileName, NULL, + NULL, + 0, (void *)&stPipeOpen, sizeof( AFSPipeOpenCloseRequestCB), NULL, diff --git a/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp b/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp index 0b7cfc640..415751367 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp @@ -321,6 +321,8 @@ AFSTearDownFcbExtents( IN AFSFcb *Fcb, pAuthGroup, NULL, &Fcb->ObjectInformation->FileId, + Fcb->ObjectInformation->VolumeCB->VolumeInformation.Cell, + Fcb->ObjectInformation->VolumeCB->VolumeInformation.CellLength, pRelease, sz, NULL, @@ -963,6 +965,8 @@ AFSRequestExtentsAsync( IN AFSFcb *Fcb, &Ccb->AuthGroup, NULL, &Fcb->ObjectInformation->FileId, + Fcb->ObjectInformation->VolumeCB->VolumeInformation.Cell, + Fcb->ObjectInformation->VolumeCB->VolumeInformation.CellLength, &request, sizeof( AFSRequestExtentsCB ), NULL, @@ -989,6 +993,8 @@ AFSRequestExtentsAsync( IN AFSFcb *Fcb, &stAuthGroup, NULL, &Fcb->ObjectInformation->FileId, + Fcb->ObjectInformation->VolumeCB->VolumeInformation.Cell, + Fcb->ObjectInformation->VolumeCB->VolumeInformation.CellLength, &request, sizeof( AFSRequestExtentsCB ), NULL, @@ -2956,6 +2962,8 @@ AFSFlushExtents( IN AFSFcb *Fcb, pAuthGroup, NULL, &Fcb->ObjectInformation->FileId, + Fcb->ObjectInformation->VolumeCB->VolumeInformation.Cell, + Fcb->ObjectInformation->VolumeCB->VolumeInformation.CellLength, pRelease, sz, NULL, @@ -3241,6 +3249,8 @@ AFSReleaseExtentsWithFlush( IN AFSFcb *Fcb, pAuthGroup, NULL, &Fcb->ObjectInformation->FileId, + Fcb->ObjectInformation->VolumeCB->VolumeInformation.Cell, + Fcb->ObjectInformation->VolumeCB->VolumeInformation.CellLength, pRelease, sz, NULL, @@ -3472,6 +3482,8 @@ AFSReleaseCleanExtents( IN AFSFcb *Fcb, pAuthGroup, NULL, &Fcb->ObjectInformation->FileId, + Fcb->ObjectInformation->VolumeCB->VolumeInformation.Cell, + Fcb->ObjectInformation->VolumeCB->VolumeInformation.CellLength, pRelease, sz, NULL, diff --git a/src/WINNT/afsrdr/kernel/lib/AFSLockControl.cpp b/src/WINNT/afsrdr/kernel/lib/AFSLockControl.cpp index 7057fcfad..ed9de5535 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSLockControl.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSLockControl.cpp @@ -145,6 +145,8 @@ AFSLockControl( IN PDEVICE_OBJECT LibDeviceObject, &pCcb->AuthGroup, &pCcb->DirectoryCB->NameInformation.FileName, &pFcb->ObjectInformation->FileId, + pFcb->ObjectInformation->VolumeCB->VolumeInformation.Cell, + pFcb->ObjectInformation->VolumeCB->VolumeInformation.CellLength, &stLockRequestCB, sizeof( AFSByteRangeLockRequestCB), &stLockResultCB, @@ -214,6 +216,8 @@ AFSLockControl( IN PDEVICE_OBJECT LibDeviceObject, &pCcb->AuthGroup, &pCcb->DirectoryCB->NameInformation.FileName, &pFcb->ObjectInformation->FileId, + pFcb->ObjectInformation->VolumeCB->VolumeInformation.Cell, + pFcb->ObjectInformation->VolumeCB->VolumeInformation.CellLength, (void *)&stUnlockRequestCB, sizeof( AFSByteRangeUnlockRequestCB), NULL, @@ -286,6 +290,8 @@ AFSLockControl( IN PDEVICE_OBJECT LibDeviceObject, &pCcb->AuthGroup, &pCcb->DirectoryCB->NameInformation.FileName, &pFcb->ObjectInformation->FileId, + pFcb->ObjectInformation->VolumeCB->VolumeInformation.Cell, + pFcb->ObjectInformation->VolumeCB->VolumeInformation.CellLength, (void *)&stUnlockRequestCB, sizeof( AFSByteRangeUnlockRequestCB), (void *)&stUnlockResultCB, diff --git a/src/WINNT/afsrdr/kernel/lib/AFSRead.cpp b/src/WINNT/afsrdr/kernel/lib/AFSRead.cpp index 7d2e5b499..f83b5fac4 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSRead.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSRead.cpp @@ -756,6 +756,7 @@ try_exit: } return ntStatus; } + // // Function: AFSDispatch // @@ -1422,6 +1423,8 @@ AFSIOCtlRead( IN PDEVICE_OBJECT DeviceObject, &pCcb->AuthGroup, NULL, &stParentFID, + NULL, + 0, (void *)&stIORequestCB, sizeof( AFSPIOCtlIORequestCB), &stIOResultCB, @@ -1536,6 +1539,8 @@ AFSShareRead( IN PDEVICE_OBJECT DeviceObject, &pCcb->AuthGroup, &pCcb->DirectoryCB->NameInformation.FileName, NULL, + NULL, + 0, (void *)&stIoRequest, sizeof( AFSPipeIORequestCB), pBuffer, diff --git a/src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp b/src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp index d73a06f41..a868630dd 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp @@ -822,6 +822,8 @@ AFSIOCtlWrite( IN PDEVICE_OBJECT DeviceObject, &pCcb->AuthGroup, NULL, &stParentFID, + NULL, + 0, (void *)&stIORequestCB, sizeof( AFSPIOCtlIORequestCB), &stIOResultCB, @@ -1885,6 +1887,8 @@ AFSShareWrite( IN PDEVICE_OBJECT DeviceObject, &pCcb->AuthGroup, &pCcb->DirectoryCB->NameInformation.FileName, NULL, + NULL, + 0, pIoRequest, sizeof( AFSPipeIORequestCB) + pIrpSp->Parameters.Write.Length, -- 2.39.5